我正在尝试在我的 Xamarin Android 项目中实现远程通知。我按照各种指南中的分步说明进行操作,但从未调用过 OnTokenRefresh
方法,即使是第一次,所以看起来我的应用程序没有收到任何类型的 token ,甚至没有任何类型的 Firebase 注册。
- 我已将 Firebase 添加到我的 Android 应用并下载了
google-services.json
- 我将
google-services.json
包含在我的 Xamarin Android 项目中并将构建操作设置为 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 注册以接收有效 token ?
是否缺少指令?
是否缺少进行此注册的方法?
为什么从不调用 OnTokenRefresh
?
最佳答案
您应该像这样在 Activity 中启动服务:
var intent = new Intent(this, typeof(FirebaseRegistrationService));
启动服务( Intent );
同时清理一次溶液并再次运行应用程序。 xamarin 的 firebase 中存在错误。
关于android - OnTokenRefresh 从未在 Xamarin Android 中调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46770907/