1

我目前正在使用Xamarin Unified IOS项目在VS中构建应用程序。应用程序的一个要求是使用推送通知。问题是我们的测试设备/应用程序在第一次注册时没有任何问题,我们可以在Azure门户和Azure服务总线中看到注册事件。我也使用'服务总线浏览器'应用程序和VS中的服务器浏览器功能确认了初始注册。Azure通知集线器和Apple APNS推送通知取消注册设备

发送测试推送通知时出现此问题。根据我也可以访问的所有日志,该消息被成功推送到苹果APNS服务器,并且我看不到作为PNS请求的一部分返回的任何故障。但是,一旦完成,设备注册将被删除,并且通知永远不会到达测试设备。

我的理解是,azure应用程序中心本身会处理PNS拒绝,以便整理设备注册。这本身并不是一个可怕的想法,但由于缺乏记录,很难确定根本原因。我为这一个做了一个荒谬的Google搜索,很多人都提出了使用苹果证书的问题。我已删除,重新创建,辞职,验证,APNS证书和配置文件,直到我用完组合。这些都没有解决这个问题。

为了使问题更加混乱,如果我使用诸如'http://pushtry.com'或'http://pushwatch.com'之类的服务并上载证书和设备令牌,它将允许我成功地将通知推送到设备。

我是否缺少明显的东西?或者是通知中心非常难以为APNS设置和调试?

您可以提供任何帮助,我会赞赏,我会发布一些代码,但据我所知,该设备注册了正确的设备令牌,在这一点上我没有看到它的必要,但请随时告诉我除此以外。非常感谢。

回答

0

经过许多人时间和运气而不是任何一种逻辑过程,我们确定'Azure Notification Hubs'具有内置的验证器,用于传递给APNS的苹果设备令牌。因此,即使有多个示例和答案,表明向通知中心提交没有空格或符号的设备标记,实际上这也是错误的方法。设备令牌应始终以“原样”状态提交给“Azure通知中心”,而不需要在Xamarin.IOS应用程序中进行任何验证。虽然这似乎是一件容易忽略的事情,但谷歌有很多矛盾的证据,Azure的文档对于提交的设备令牌的格式几乎没有提及。无论如何,希望这将有助于别人有一天。

- 编辑 -

设备从苹果令牌格式:< XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX>

格式,许多在线资源表明,它传递给通知枢纽为:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 没有空格或'<'和'>''

但是,它应该传递到通知集线器,因为它是从Apple收到的。

+0

嗨,我在Notification Hubs团队工作。我们不验证句柄,并按原样传递。 您的问题听起来更多地围绕着生产/开发用法。每个集线器都可以被声明为prod或dev,并知道如何与apns的prod或dev端点通信。以下组合应该可以工作: 1. prod/test统一apns证书,prod供应配置文件,prod集线器 2. prod/test统一apns证书,dev供应配置文件,dev hub 您能确认两者都不起作用吗? –

+0

在apns返回无效令牌/过期令牌错误后,集线器删除注册,这意味着,如果将dev设备令牌传递给prod apns端点,端点将拒绝它并导致设备删除。反之亦然。 –

+0

所有非常了解,因为你大概可以从我原来的帖子确定,但是说的上述答案正是导致能够成功发送测试通知并解决与Azure通知集线器注销设备问题的情况。 – Digitalsa1nt

相关问题