android - OnTokenRefresh 从未在 Xamarin Android 中调用

标签 android firebase xamarin push-notification xamarin.android

我正在尝试在我的 Xamarin Android 项目中实现远程通知。我按照各种指南中的分步说明进行操作,但从未调用过 OnTokenRefresh 方法,即使是第一次,所以看起来我的应用程序没有收到任何类型的 token ,甚至没有任何类型的 Firebase 注册。

  1. 我已将 Firebase 添加到我的 Android 应用并下载了 google-services.json
  2. 我将 google-services.json 包含在我的 Xamarin Android 项目中并将构建操作设置为 GoogleServicesJson
  3. 我在 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>
    
  4. 我创建了一个扩展 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/

相关文章:

android - 奥利奥 : Does JobService not require startForeground?

swift - UICollectionViewController : Terminating app due to uncaught exception 'NSInternalInconsistencyException'

firebase - 如何从Firebase Cloud Functions删除日志

swift - 只有第一个添加到结构的项目被上传到 firebase

installation - 使用 Xamarin Studio 运行新的 MonoGame 项目

ios - 如何在 xamarin ios native 中将所有屏幕尺寸的图像水平居中

android - 微调器重叠

java - 有关 Android 定义和概念的帮助

java - Android Java 倒计时然后做某事

c - 在 Xamarin 项目中绑定(bind) native C 库