iOS推送通知不适用于开发证书
Posted
技术标签:
【中文标题】iOS推送通知不适用于开发证书【英文标题】:iOS Push Notifications not working with Development certificate 【发布时间】:2015-08-20 09:21:31 【问题描述】:情况:我们在不同的后端 URL 上安装了 PROD 和 DEV APN 证书。生产证书有效!:推送已交付。
DEV 证书不起作用,Apple 服务器返回错误代码 7(无效令牌)。我已经检查了所有的东西,但可能我仍然缺少一些东西。
app id 正确(与 prod 相同) 我使用正确的后端(安装了 DEV 证书) 我从 XCode 以 DEBUG 模式启动应用程序(对应于 DEV 环境) 我使用来自同一帐户的正确应用开发证书 我使用正确的开发配置文件(其中支持推送)应该真的有效,对吧?
【问题讨论】:
你在创建dev apn后测试了吗?在 .pem 文件上试试这个:$ openssl s_client -connect gateway.sandbox.push.apple.com:2195 -cert YourCertHere.pem -key YourKeyHere.pem 并替换文件名,然后 Enter YourKeyHere.pem 的密码短语: 之后您应该看看它们是否正常 我遇到了同样的问题。升级到 ios 9 后,我的应用在开发模式下突然无法收到通知。也就是说,从 XCode 安装应用程序并使用开发证书发送通知。令牌似乎无效,但我遵循了 Apple 的指示。每次启动应用程序时都会获取令牌。真正奇怪的是,如果我通过 prod cert 发送通知,开发应用程序可以收到它! iOS 系统似乎以某种方式认为我的应用正在生产中? @Shawn 这里有同样的问题。我认为苹果又搞砸了:forums.developer.apple.com/thread/19993 原来我们有一个错误生成的 mobileprovision 文件。那没关系。 我也可以使用 dev cert 运行我的应用程序并使用 auth api 接收通知,但是当我从服务器发送通知时,它给出了错误的设备令牌错误@ArnieSchwarzvogel 【参考方案1】:如果是 IOS 9,请从 Apple Production Push 通知证书发送通知,它将起作用。
从生产 APS 证书制作 pem 文件,并在开发和生产模式中使用此文件。
此外,在这两种情况下都使用生产网关,即“gateway.push.apple.com:2195”
即使您在开发模式下发送通知,也不要使用“gateway.sandbox.push.apple.com:2195”。
【讨论】:
【参考方案2】:手机返回的推送通知的设备令牌在生产和开发中是不同的。向 APNS 发出请求时,请确保您的服务器使用实际的开发设备令牌(我不是在谈论证书,而是在谈论设备标识符)。
如果您的设备已经运行了应用的生产版本,生产令牌可能在您的数据库中,您的服务器可能会尝试使用它。不过,这取决于您如何处理用户帐户。
【讨论】:
我遇到了同样的问题。请看上面的评论。如果您有任何想法,请告诉我。谢谢。以上是关于iOS推送通知不适用于开发证书的主要内容,如果未能解决你的问题,请参考以下文章
我正在使用 `fcm` gem 发送推送通知,它适用于 android 但不适用于 IOS