在iOS设备上未收到Azure通知中心发送的某些推送通知

时间:2017-05-25 21:20:32

标签: azure notifications xamarin.ios

因此,我正在为我的Xamarin.iOS项目使用Azure Notification中心。我已经按照Azure的教程设置了我的集线器并配置了必要的证书。我正在使用开发环境,并已从Notification中心发送了几个已成功收到的测试通知。

我所面临的挑战是一致性。一段时间后,设备停止接收通知。集线器上没有APNS错误,它表明所有通知都已成功发送。我不确定这些失败的原因。

还有其他人经历过这个吗?在注册过程中,我按原样使用设备令牌,而不更改它。我还在注册期间为每个用户传递了一个标签。标签只是设备令牌,它被剥夺了'< >'字符。

由于我发现通知中心没有任何错误,因此我无法确定某些通知无法访问设备的真正问题。

我还使用发布版本生成了一个adhoc ipa,我通过iTunes安装,App Store ipa仍在测试中,我通过TestFlight安装。我还应该使用沙盒环境和开发SSL证书吗?这些ipa仍然用于测试目的。我们还没有投入生产。

我真的很感激任何帮助。

以下是我的代码:

public override void RegisteredForRemoteNotifications(UIApplication application, NSData deviceToken)
    {
        try
        {

            Hub = new SBNotificationHub(ConnectionString, NotificationHubPath);

            Hub.UnregisterAllAsync(deviceToken, (error) =>
            {
                if (error != null)
                {
                    Console.WriteLine("Error calling Unregister: {0}", error);
                    return;
                }
            });

            var newToken = FormatTheString(deviceToken.ToString());
            var finalTag = newToken.Replace(" ",String.Empty);
            var tags = new NSSet(finalTag); // create tags if you want
            Hub.RegisterNativeAsync(deviceToken, tags, (errorCallback) =>
            {
                if (errorCallback != null)
                    Console.WriteLine("RegisterNativeAsync error: " + errorCallback);
            });


        }
        catch (Exception ex)
        {
            Console.WriteLine(ex.Message + ex.StackTrace);
        }

    }

更新

我已经能够确定问题所在。经过更多测试后,我发现在一些测试消息后,我的通知中心将删除注册。因此,在调试模式下进行测试时,始终会传递消息。但是,当我生成发布版本并对其进行测试时,它们会被交付一段时间,然后它们会完全失败。

这会导致Bad Channel ErrorsInvalid Channel Errors。那么在这种情况下发生的是调试ipa注册在集线器上注册。当我删除此ipa并安装发布版本(Ad hoc或App Store版本)时,新的注册将保存在集线器上。因此,当我发送新的测试通知时,它会发送给两个'设备,在实际意义上,它只是一个设备。经过一些测试后,APN意识到注册ID无效,它会关闭连接,因此会Bad Channel Errors

有没有办法可以删除或覆盖集线器以前的注册?

0 个答案:

没有答案