1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Unity+iOS+FirebaseFirestore対応時のメモ

Last updated at Posted at 2023-11-12

2023/11/12 : 初稿
Unity : 2022.3.12f1
マシン : M1Mac(Metal) Sonoma14.1.1
Xcode : 15.0.1 (15A507)

UnityでiOSアプリを作ってて、mBaasとしてFirebaseを導入することになりました。ということでFirebaseのアカウント作ってプロジェクト作って、と公式ドキュメントの手順通りに導入すればうご・・・かない。

ともかく、実機でデータベースからデータ読み出せる&Storageにファイルアップロードできるまでにやったことをメモしておきます。

GoogleService-info.plistの再ダウンロード

Firebaseプロジェクトの設定を色々やってからもう一度ダウンロードしたやつを使う。
RealtimeDatabaseならRealtimeDatabaseを作ってから。

Firebaseのプロジェクト作った直後にダウンロードしろと言われたやつでは情報が足りない。公式のサンプルコード実行しようとしてもFirebaseDatabase.DefaultInstance.RootReferenceでnullアクセスしたり、Database URL not set in the Firebase config.みたいなwarningが出たり。一応DefaultInstanceではなくGetInstance("https://ほにゃらら-default-rtdb.firebaseio.com/")でURL直指定すれば動くものの、やはり気になる。

GoogleService-Info.plist file missing REVERSED_CLIENT_ID, Google Sign-In will fail to initialize.

どうもサインイン手段としてGoogle認証をOKしないとだめっぽい。
メアド認証のみだと発行されず、Unityのビルド時に上記エラーが出てた。
Google認証も可能にした後、GoogleService-info.plistを再ダウンロードすればOK。

GoogleService-info.plistの配置場所

Assets/Firebaseが正解っぽい。ドキュメントにはAssetsの下ならどこでも良いみたいなこと書いてるけど、それだとダメだった。

cocoapodsの再インストール

こちらの記事を参考に、一旦アンインストールした後homebrewでインストール。
https://qiita.com/noprops/items/f997a438fabb64c15f10

これやらないとUnityのビルドで.xcodeprojが吐き出されはするものの

unity firebase iOS framework addition failed due to a CocoaPods installation failure. This will will likely result in an non-functional Xcode project. 

みたいなログ出るし、実際Xcodeでもフレームワークがリンクできない的なエラーが出る。

ついでにcocoapods問題

ターミナルでUnity-iPhone.xcworkspaceのあるフォルダを開いて
インテルMacなら

pod install

M1Macなら

sudo arch -x86_64 gem install ffi
arch -x86_64 pod install

とかやると解決することもある・・かも。

xcodeのプロジェクト

Unity-iPhone.xcodeprojではなくUnity-iPhone.xcworkspaceを開いてビルド

xcodeでリンクエラー

FirebaseConsoleでFirestoreと間違えてRealtimeDBの方を作ってしまったせいか、
それとも元々Firestoreでも必要なのか、
FIRDatabaseとかなんとかがリンクできないって出てたので、
仕方なくFirebaseDatabase.unitypackageをインポート。
中に含まれるファイルが100MB超えてるのでGitLFSを使わないとプッシュできないという罠付き。

一旦有効化したRealtimeDBを無効化したけど、GoogleService-info.plistにはRDBに関連する項目が残ったままで、実際リンクも通らない。手動で削除すればいいのかもしれないけど、誰か教えてください

ついでにxcodeのリンクが通らない対処その2

UnityFrameworkを選んでBuild Settingsを選択、Build Active Architecture OnlyをNoしてみる。

実機でStorageにローカルファイルをアップロードできない

firebase.storage.storageexception: no object exists at the desired reference

xcodeでログ見ると上記のエラー。
PutFileAsync()に渡すローカルファイルのパスは、"file://"で始めないといけない模様。
エディタだと問題なく動いちゃうひどい罠。

firebasecppapp-11_6_0.bundleは、開発元を検証できないため開けません。

Macのシステム設定>プライバシーとセキュリティ
この中に該当ファイルが開けませんみたいな項目出てるのでここで許可する。

セキュリティルール

最初はテストモードで作りましたが、早めにアクセス制限しておいた。
例えばデータベースのルート直下にUsersっていうデータがあって、こいつは
Authenticationを使って認証された人だけが読み取れるようにしたいとするなら、こんな感じにする。

{
  "rules": {
    "Users": {
      ".read": "auth != null",
    }
  }
}

似たようなサンプルはネットにあるけど、ここでいう"Users"ってなんだ?と思ってたら自分でデータベースに追加した項目のキーだったのね。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?