趣味で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/>
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!
サンプルアプリは動く
関連
Add Firebase to your Flutter app
まとめ
flutterfire configureが便利だった。 FlutterFireのmacOS対応はまだβ版らしいので本格的に使うのはまだ先かなぁ