Xamarin.ios Azure通知中心和Apple APNS推送取消注册设备的通知

Xamarin.ios Azure通知中心和Apple APNS推送取消注册设备的通知,xamarin.ios,apple-push-notifications,azure-mobile-services,Xamarin.ios,Apple Push Notifications,Azure Mobile Services,我目前正在使用Xamarin统一IOS项目开发VS内置的应用程序。应用程序的一个要求是使用推送通知。问题是我们的测试设备/应用程序在第一个实例中注册时没有任何问题,我们可以在azure门户和azure服务总线中看到注册事件。我还使用“服务总线资源管理器”应用程序和VS中的服务器资源管理器功能确认了初始注册 发送测试推送通知时会出现问题。根据我有权访问的所有日志,该消息已成功推送到Apple APNS服务器,我看不到任何故障作为PNS请求的一部分返回。但是,一旦完成,设备注册将被删除,并且通知将永

我目前正在使用Xamarin统一IOS项目开发VS内置的应用程序。应用程序的一个要求是使用推送通知。问题是我们的测试设备/应用程序在第一个实例中注册时没有任何问题,我们可以在azure门户和azure服务总线中看到注册事件。我还使用“服务总线资源管理器”应用程序和VS中的服务器资源管理器功能确认了初始注册

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

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

为了使问题更加混乱,如果我使用诸如“”或“”之类的服务并上载证书和设备令牌,它将允许我成功地将通知推送到设备

我是不是错过了一些显而易见的东西?或者,APN的通知中心设置和调试是否异常困难


如果您能提供任何帮助,我们将不胜感激,我将发布一些代码,但我知道设备注册了正确的设备令牌,我认为目前没有必要,但请随时告诉我其他情况。非常感谢。

经过许多人工小时,通过运气而不是任何逻辑过程,我们确定“Azure通知中心”有一个内置的验证程序,用于传递给APN的苹果设备令牌。因此,尽管有多个示例和答案建议向通知中心提交不带空格或符号的设备令牌,但这实际上是错误的方法。设备令牌应始终以“原样”状态提交到“Azure通知中心”,而无需从Xamarin.IOS应用程序中进行任何验证。尽管这似乎是一件容易忽视的事情,但谷歌上有很多相互矛盾的证据,Azure的文档对提交的设备令牌的格式几乎没有说明。无论如何,希望有一天这能帮助其他人

--编辑--

来自Apple的设备令牌格式:

许多在线资源建议将其传递到通知中心的格式为:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 没有空格或“”的


但是,当它从苹果收到时,应该将其传递到通知中心。

经过许多人工小时,并通过运气而不是任何逻辑过程,我们确定“Azure通知中心”有一个内置的验证程序,用于传递给APN的苹果设备令牌。因此,尽管有多个示例和答案建议向通知中心提交不带空格或符号的设备令牌,但这实际上是错误的方法。设备令牌应始终以“原样”状态提交到“Azure通知中心”,而无需从Xamarin.IOS应用程序中进行任何验证。尽管这似乎是一件容易忽视的事情,但谷歌上有很多相互矛盾的证据,Azure的文档对提交的设备令牌的格式几乎没有说明。无论如何,希望有一天这能帮助其他人

--编辑--

来自Apple的设备令牌格式:

许多在线资源建议将其传递到通知中心的格式为:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 没有空格或“”的


但是,当它从苹果收到时,应该将其传递到通知中心。

同样需要注意的是,如果您使用的是Azure通知中心APN,则如果应用程序模式未设置为“在生产中”,它将注销设备。部署到应用商店后,需要将Azure通知中心中的“应用程序模式”从沙箱切换到生产模式。否则,您的设备注册将被取消注册

我在沙箱和生产中使用相同的令牌/密钥,没有任何问题


如果您使用Azure Notification Hubs APN,还需要注意的是,如果应用程序模式未设置为“在生产中”,它将注销设备。部署到应用商店后,需要将Azure通知中心中的“应用程序模式”从沙箱切换到生产模式。否则,您的设备注册将被取消注册

我在沙箱和生产中使用相同的令牌/密钥,没有任何问题


您好,我在通知中心团队工作。我们不验证句柄,而是按原样传递它。您的问题听起来更倾向于生产/开发使用。每个集线器都可以声明为prod或dev,并且知道如何与apns上的prod或dev端点通信。以下组合应该有效:1。产品/测试统一apns证书,产品供应配置文件,产品中心2。prod/test统一apns证书、开发人员配置文件、开发人员集线器能否确认两者均未工作?集线器在apns返回无效令牌/过期后删除注册