Apple文档提到,对多个提供商通知服务器没有限制,可以向iOS设备发送推送通知。
是否可以在两个不同网络中部署的两个不同的提供商服务器中使用相同的设备令牌,随时向同一个应用发送推送通知。
Apple APNS允许2个不同的提供商服务器使用相同的设备密钥从一个设备向每个应用程序发送通知吗?
答案 0 :(得分:3)
是的,您可以将多个网关(SNS,Urban Airship,PushIO等)连接到一个平台提供商(APNS,GCM,亚马逊等),最重要的是令牌/注册ID(特定于设备和应用程序)以及使用APNS的证书。
许多人询问在这种情况下如何处理平台提供商发送的反馈。
由于反馈是幂等,因此对于不同的网关应该没有问题;可以在后端应用程序中处理保存在每个网关上的令牌。例如,如果APNS向SNS发送反馈,表明端点不再有效(可能是因为用户已卸载应用程序),则可以直接从所有其他网关更新/删除令牌。您也可以保持原样并等待APNS在向端点发送通知时发送给其他网关的反馈,然后在这些网关中相应地更新端点列表。 这里要注意的最重要的事情是反馈是幂等的,如果SNS向端点发送推送通知并接收反馈,则向同一令牌发送推送通知的另一个网关将收到相同的反馈。
答案 1 :(得分:1)
这是我在使用APNS时的经验,在您开始在任何环境中测试通知之前,这就像一个清单,
根据你所拥有的证书。开发证书或生产
证书,指向相应的APNS沙箱。
生产沙箱: - 主机名:gateway.push.apple.com, 港口:2195
开发环境: - 主机名:gateway.sandbox.push.apple.com, 港口:2195
生产证书只能在一个服务器或一个网络中使用,没有任何限制。可以在多个盒子或多个网络中使用相同的生产证书向设备上的同一个应用程序发送通知。
最重要的是检查防火墙阻止从您的网络到APNS Dev或Production的连接。所以对生产和开发环境APNS进行远程登录。不应阻止连接。
如果防火墙阻止与APNS的连接,服务器代码将在发送推送通知时抛出“连接被拒绝”或“连接已关闭”异常。
这是我在APNS和证书中看到的最奇怪的行为,因为我失去了2-3天。我根据具体情况经历了以下情况,
:)如果你做错配置,你应该很幸运得到“Socket Closed Exception”。
如果所有配置都正确(对于ex凭据,防火墙),更正证书并指向正确的APNS环境,设备将会明确地获得推送通知。推送通知将像魅力一样工作。这将是即时的。
希望此清单有助于您的实施和健全性检查。