注册的推送通知系统句柄不再有效 - FCM

时间:2018-02-22 07:17:39

标签: azure firebase xamarin.android firebase-notifications azure-notificationhub

我已将Firebase云消息传递+ Azure通知中心集成到Xamarin Android应用程序中。

注册Notification Hub成功,我可以查看注册ID。

下面的代码显示了我如何注册通知中心。

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

async void SendRegistrationToServer(string token)
    {
        try
        {
            // Register with Notification Hubs
            hub = new NotificationHub(AndAppConsts.Hub_Name,
                                      AndAppConsts.DefaultListenSharedAccessSignature, MainActivity.instance);

            string[] tags = Settings.SubscriptionList.Split(';');

            await Task.Run(() =>
            {
                var regID = hub.Register(token, tags).RegistrationId;
                Log.Debug(TAG, $"Successful registration of ID {regID}");
            });
        }
        catch (Exception e)
        {
        }
    }

当我使用Azure通知中心进行测试发送时,我收到的注册ID的错误低于。

  

注册的推送通知系统句柄不再有效

我已将Firebase服务器密钥作为Azure访问策略中的API密钥。

我想知道为什么会出现这种错误。

1 个答案:

答案 0 :(得分:0)

我找到了问题的根本原因。

<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>

您必须在Android Manifest中添加以上代码。

GCM不需要这部分,因为我们在代码级别提供了权限,但是当我们整合FCM时,我们必须在清单中给出它。