NIFCLOUD-mbaas / UserCommunity

ニフクラ mobile backend ユーザーコミュニティ
https://mbaas.nifcloud.com/
81 stars 18 forks source link

FirebaseApp.getApps().isEmptyの結果について #939

Closed unstolen-jewel closed 5 years ago

unstolen-jewel commented 5 years ago

初めまして 現在、mBaaSのUnityプラグインを用いて、プッシュ通知の導入を行っております。

プラグインの初期化時に、Android側のネイティブコードで、「FirebaseApp.getApps().isEmpty」を使用している箇所で、必ずtrueが返ってきてしまいます。

isEmptyがtrueとなる原因が分からず、ご質問に至った次第となります。 こちらの原因について、心当たりがある方はいますでしょうか?

Firebaseのプロジェクト作成(FCMの有効化含む)、Firebaseの秘密鍵の設定、google-services.jsonの導入(Plugins/Android/直下に配置)を終えております。 また、iOS側は正常にトークンの取得も行えており、mBaaSの各種キーの設定やC#側の導入は問題ない状態となります。

開発環境  Unityバージョン:Unity 5.6.6f1  NCMBSDKバージョン:Unity SDK v4.0.0

以上です。 よろしくお願いいたします。

unstolen-jewel commented 5 years ago

自己解決しました。

google-services.jsonの導入が上手く出来ていなかったことが原因でした。

ドキュメントでは、「Assets/Plugins/Android直下」へgoogle-services.jsonを配置することで導入は問題ないように見えますが、Unity5.6.6f1環境では、配置を終えていざビルドを行う際にgoogle-services.jsonに関して適切に処理をしてくれていない挙動をしているように思いました。

具体的には、通常、ビルドをする際にUnityがgoogle-services.jsonをgoogle-services.xmlにコンバートした上で「Temp\gradleOut\unity-android-resources\res\values」に配置すると思われますが、コンバートとこちらへの配置が行われていない状態となっていました。(Unity2017.4.1fではコンバートと配置をしているようでした。)

そこで、FirebaseUnitySDKに同梱される「generate_xml_from_google_services_json.py」を用いて、手動でjsonからxmlに変換し、xmlを「Assets/Plugins/Android/res/values」に配置することで解決しました。