【问题标题】:Xamarin Form: Android using Firebase Cloud Messaging not receiving messageXamarin Form:Android 使用 Firebase Cloud Messaging 未收到消息
【发布时间】:2017-10-19 15:28:38
【问题描述】:

我已经让 Firebase 云消息通知工作,甚至可以通过 Azure 的通知中心工作。我无法收到消息的时间是我尝试重新运行应用程序的时候。

过程: 1) 使用 Visual Studio IDE 全新安装应用程序 2) 停止调试器
3) 通过 Visual Studio IDE 再次调试并运行应用程序 4) 通过 FCM Console 发送测试消息

如果我不做3,即使应用程序在后台,我仍然可以收到消息

   LoadApplication(new App());

            FirebaseOptions options = new FirebaseOptions.Builder()
            .SetApplicationId(GetString(Resource.String.fcmAppId))
            .SetApiKey(GetString(Resource.String.fcmApiKey))
            .SetGcmSenderId(GetString(Resource.String.fcmGCMSenderId))
            .Build();

            FirebaseApp.InitializeApp(Android.App.Application.Context, options); 

?

    public class MyFirebaseInstanceIdService : FirebaseInstanceIdService
{
    const string TAG = "MyFirebaseInstanceIdService";

    public override void OnTokenRefresh()
    {
        var refreshedToken = FirebaseInstanceId.Instance.Token;
        Settings.NotificationToken = refreshedToken;
        Android.Util.Log.Debug(TAG, "Refreshed token: " + refreshedToken);
        SendRegistrationToServer(refreshedToken);
    }

    void SendRegistrationToServer(string token)
    {
    }
}

一开始我以为它有不同的token,但其实是一样的。

来自 Azure 门户的消息:

从令牌提供者获取的令牌错误。

【问题讨论】:

    标签: android firebase xamarin firebase-cloud-messaging


    【解决方案1】:

    使用 Firebase 云消息传递的 Android 未收到消息

    正如GCM docs 所说:

    GCM 连接服务器向客户端应用发出的 ID,允许其接收消息。

    因此,只有当令牌可用时,您的应用才能接收来自GCM 的消息。

    应用如何获得该令牌?

    你可以看到the document

    在您的应用首次启动时,FCM SDK 会为客户端应用实例生成一个注册令牌。如果您想定位单个设备或创建设备组,则需要访问此令牌。

    每当生成新令牌时都会触发 onTokenRefreshcallback,因此在其上下文中调用 getToken 可确保您访问的是当前可用的注册令牌。确保已将服务添加到清单中,然后在 onTokenRefresh 的上下文中调用 getToken

    每次在设备中重新运行应用程序时,令牌都会更改,但正如document 所说,OnTokenRefresh 仅在系统确定令牌需要时调用刷新,密钥轮换和处理实例 ID 更改是必需的:

    • 安装或卸载应用时
    • 当用户删除应用数据时
    • 当应用删除实例 ID 时
    • 当令牌的安全性受到威胁时

    你需要触发OnTokenRefresh方法。您应该先从设备上卸载应用程序,然后重新安装应用程序并打开它,将触发OnTokenRefresh并更新令牌,您的应用程序可以再次收到GCM 消息。

    【讨论】:

      猜你喜欢
      • 2017-04-02
      • 1970-01-01
      • 2016-09-22
      • 2018-10-18
      • 2020-11-14
      • 1970-01-01
      • 2018-05-15
      • 2020-07-05
      相关资源
      最近更新 更多