私のXamarin Androidプロジェクトでリモート通知を実装しようとしています。私はさまざまなガイドにあるステップバイステップの指示に従いましたが、初めての場合でもOnTokenRefresh
メソッドが呼び出されることはありません。そのため、私のアプリはトークンを受け取っていないか、あるいはどんなタイプのfirebase登録もしていないようです。Xamarin AndroidでOnTokenRefreshが呼び出されない
- 私は私のAndroidアプリにFirebaseを追加し、
google-services.json
- 私はXamarinのAndroidプロジェクトに
google-services.json
を含まをダウンロードしてGoogleServicesJson にビルドアクションを設定し、私は
AndroidManifest.xml
<receiver android:name="com.google.firebase.iid.FirebaseInstanceIdInternalReceiver" android:exported="false" /> <receiver android:name="com.google.firebase.iid.FirebaseInstanceIdReceiver" android:exported="true" android:permission="com.google.android.c2dm.permission.SEND"> <intent-filter> <action android:name="com.google.android.c2dm.intent.RECEIVE" /> <action android:name="com.google.android.c2dm.intent.REGISTRATION" /> <category android:name="${applicationId}" /> </intent-filter> </receiver>
にこのコードを挿入しています
拡張クラスを作成しました
FirebaseInstanceIdService
[Service] [IntentFilter(new[] { "com.google.firebase.INSTANCE_ID_EVENT" })] class FirebaseRegistrationService : FirebaseInstanceIdService { const string TAG = "FirebaseRegistrationService"; public override void OnTokenRefresh() { var refreshedToken = FirebaseInstanceId.Instance.Token; System.Diagnostics.Debug.WriteLine(TAG, "Refreshed token: " + refreshedToken); MainActivity.CurrentActivity.RunOnUiThread(() => RegisterDeviceOnServer(refreshedToken)); } public void RegisterDeviceOnServer(string refreshedToken) { // Custom implementation } }
すでに述べたように、OnTokenRefresh
は決して呼び出されません。 私が理解できないのは、誰が有効なトークンを受け取るためにFirebaseの登録をしたのですか? ディレクティブがありませんか? この登録に欠けている方法はありますか? なぜOnTokenRefresh
が呼び出されないのですか? this documentによれば
FirebaseAppの初期化に失敗しましたか? https://stackoverflow.com/a/42159446/4984832 – SushiHangover
MainActivityでは 'FirebaseApp.InitializeApp(this);'を実行しますが、このJava例外を返します: "Java.Lang.IllegalStateException:デフォルトのFirebaseAppはこのプロセスで初期化されていません。Firebaseを必ず呼び出してください... " –
解決策のクリーンアップの問題を解決しました。信じられないほど。 –