我已将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密钥。
我想知道为什么会出现这种错误。
答案 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时,我们必须在清单中给出它。