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

iOS设备上未接收到从Azure通知中心发送的某些推送通知,azure,notifications,xamarin.ios,Azure,Notifications,Xamarin.ios,因此,我正在为我的Xamarin.iOS项目与Azure通知中心合作。我已经按照Azure的教程设置了我的中心并配置了必要的证书。我正在使用一个开发环境,并已从通知中心发送了两个测试通知,这些通知已成功接收 我面临的挑战是一致性。设备在一段时间后停止接收通知。集线器上没有APNS错误,这表明所有通知都已成功发送。我不确定这些失败的原因是什么 还有其他人经历过吗?在注册期间,我按原样使用设备令牌,而不更改它。我还在注册期间为每个用户传递一个标签。标签只是已去除“”字符的设备令牌 因为我在通知中心上

因此,我正在为我的Xamarin.iOS项目与Azure通知中心合作。我已经按照Azure的教程设置了我的中心并配置了必要的证书。我正在使用一个开发环境,并已从通知中心发送了两个测试通知,这些通知已成功接收

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

还有其他人经历过吗?在注册期间,我按原样使用设备令牌,而不更改它。我还在注册期间为每个用户传递一个标签。标签只是已去除“<>”字符的设备令牌

因为我在通知中心上没有看到任何错误,所以我无法确定某些通知无法到达设备的真正原因

我还通过发布版本生成了一个临时ipa,我通过iTunes安装了它,还有一个仍在测试中的应用商店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);
        }

    }
更新

我已经找出了问题所在。经过更多的测试,我意识到在几条测试消息之后,注册会从我的通知中心删除。因此,在调试模式下进行测试时,始终会传递消息。然而,当我在这些基础上生成发布版本并进行测试时,它们会被交付一段时间,然后完全失败

这会导致
坏通道错误
无效通道错误
。因此,在这种情况下发生的是在集线器上注册调试ipa注册。当我删除此ipa并安装发布版本(临时版本或应用商店版本)时,会在集线器上保存新注册。所以当我发送新的测试通知时,它会发送到“两个”设备,而实际上,它只是一个设备。经过几次测试后,APNs意识到存在无效的注册id,它关闭了连接,因此出现了
坏通道错误


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

通过临时构建,设备可以根据创建的证书发送开发和生产令牌。我建议你重做你的证书。我们好不容易才发现这一点。@Digitalsa1nt我已经更新了我的问题,解释了问题所在。您知道如何从中心覆盖或删除以前的注册ID吗?