我試圖在Xamarin Android項目中實現遠程通知。我遵循各種指南中的逐步指導,但從未調用過OnTokenRefresh
方法,即使是第一次,所以它看起來像我的應用程序沒有收到任何類型的令牌,甚至沒有進行任何類型的Firebase註冊。OnTokenRefresh從未在Xamarin中調用過Android
- 我已經加入火力地堡到我的Android應用程序,並下載
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
永遠不會被叫?
您是否獲得'不成功'或'成功'的FirebaseApp初始化? https://stackoverflow.com/a/42159446/4984832 – SushiHangover
在MainActivity中執行:'FirebaseApp.InitializeApp(this);'但它返回此Java異常:「Java.Lang.IllegalStateException:在此過程中未初始化FirebaseApp。確保調用Firebase ...「 –
我已經解決了清理解決方案的問題。難以置信。 –