趣味でMacアプリでも作ってみるかと思ったら早速ハマってしまった………
Firebase準備
- プロジェクトを作る
- Firestoreのデータベースを作成する
コマンド
cd app
flutter create --org com.hisaichi5518 --platforms=ios,macos .
firebase login
dart pub global activate flutterfire_cli
flutter pub add firebase_core
flutter pub add cloud_firestore
flutterfire configure --platforms=ios,macos --ios-bundle-id=com.hisaichi5518.app --macos-bundle-id=com.hisaichi5518.app
macos/PodfileにてFirestoreが依存する最低バージョンに書き換える
platform :osx, '10.12'
アプリを立ち上げたらFirestoreのドキュメントが作られるコードを書いてみる
import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:firebase_core/firebase_core.dart';
import 'package:flutter/material.dart';
import 'firebase_options.dart';
void main() async {
WidgetsFlutterBinding.ensureInitialized();
await Firebase.initializeApp(
options: DefaultFirebaseOptions.currentPlatform,
);
final db = FirebaseFirestore.instance;
final user = <String, dynamic>{
"first": "Ada",
"last": "Lovelace",
"born": 1815
};
final doc = await db.collection("users").add(user);
print('DocumentSnapshot added with ID: ${doc.id}');
runApp(const MyApp());
}
Macアプリの場合は、無が表示されてしまう。ログすら出ないので困った。
iOSアプリはうまくドキュメントが作成されて画面も表示される。
アプリが作成された時点ではBundleIdが、 ios, macosともに com.hisaichi5518.app
になっているのでそれぞれ変更してみたけどダメだった
またFirebaseは無料版はアプリが3個しか登録できない。flutterfire configureがよしなに作成してくれるが3個以上作ってもエラーにならないので注意
追記: 解決方法
macos/Runner/DebugProfile.entitlements に以下の設定を追加してあげれば動いた。
<key>com.apple.security.network.client</key>
<true/>
SocketException: Connection failed (OS Error: Operation not permitted, errno = 1) with flutter app on macOS - Stack Overflow
Doctor summary (to see all details, run flutter doctor -v):
[✓] Flutter (Channel stable, 3.3.2, on macOS 12.5.1 21G83 darwin-arm, locale ja-JP)
[✓] Android toolchain - develop for Android devices (Android SDK version 33.0.0)
[✓] Xcode - develop for iOS and macOS (Xcode 14.0)
[✓] Chrome - develop for the web
[✓] Android Studio (version 2021.3)
[✓] Android Studio (version 2021.2)
[✓] IntelliJ IDEA Ultimate Edition (version 2022.2.2)
[✓] IntelliJ IDEA Ultimate Edition (version 2022.2.2)
[✓] IntelliJ IDEA Ultimate Edition (version 2022.2.1)
[✓] VS Code (version 1.71.2)
[✓] Connected device (3 available)
[✓] HTTP Host Availability
• No issues found!
サンプルアプリは動く
flutterfire/packages/cloud_firestore/cloud_firestore/example at master · firebase/flutterfire · GitHub
関連
Add Firebase to your Flutter app
まとめ
flutterfire configureが便利だった。
FlutterFireのmacOS対応はまだβ版らしいので本格的に使うのはまだ先かなぁ