如何使推送通知在 iOS 的生产环境中工作?
Posted
技术标签:
【中文标题】如何使推送通知在 iOS 的生产环境中工作?【英文标题】:How do I make push notifications work in production for iOS? 【发布时间】:2015-02-20 02:43:40 【问题描述】:直到我将我的应用程序提交到 App Store(现在可用)后,我才意识到分发令牌和生产令牌之间存在差异。在开发过程中,推送通知对我有用,但从 App Store 下载后,它不起作用。
我为开发和分发启用了推送通知。我已经创建了适当的开发和分发配置文件并启用了推送通知。
我的一些问题是:
既然应用程序已在应用商店中,我可以在我的 .php 文件中做些什么来允许推送通知而无需提交其他更新,即将 APNS 服务器位置从开发更改为生产?
我是否必须更改在 AppDelegate.m 中获取令牌的方式?现在我在didRegisterForRemoteNotificationsWithDeviceToken
中有这个:
NSString *token = [ [deviceToken description] stringByTrimmingCharactersInSet: [NSCharacterSet characterSetWithCharactersInString:@"<>"] ];
// Remove spaces from the token
token = [token stringByReplacingOccurrencesOfString:@" " withString:@""];
如何在 Xcode 中测试生产模式?我已经创建了 Ad-Hoc 证书。
谢谢
【问题讨论】:
【参考方案1】:您只需对您的 php
脚本进行两次更改,其余的就可以了:
-
将目标更改为
gateway.push.apple.com:2195
而不是 gateway.sandbox.push.apple.com:2195`。
使用生产证书而不是开发证书签署您的推送通知。
其余的应该可以正常工作。生产令牌将相应地发送生产推送通知。
【讨论】:
1.我已经在 php 文件中这样做了。 2.不知道你的意思,我已经有一个 APNs Production ios 证书,如果这就是你的意思。但是,它似乎仍然不起作用。我不需要更改获取令牌的方式吗?我的代码获取开发令牌。有区别吗? 你的令牌没问题。关于证书,在发送开发推送的时候,你还记得生成一个.pem
文件吗?您必须再次这样做,除了使用分发证书而不是开发证书。
是的,我使用本指南生成了一个用于开发的.pem
文件:raywenderlich.com/32960/…,我对分发证书做了完全相同的事情。但是,由于 Xcode 不允许应用程序使用分发配置文件在我的设备上运行,我如何获取生产令牌来测试它?
要使用分发证书进行测试,请使用您的设备创建一个 AdHoc 配置文件,然后将其导出为 IPA 文件。从那里,将其拖到管理器中的设备中。您现在可以在设备上使用该应用发送生产证书。【参考方案2】:
首先导出带有adhoc证书的ipa文件并安装到你的iphone上。
通过这种方式,您可以测试您的生产证书,但您不能直接通过 xcode 测试(运行)。
检查您的 php 端消息是否发送成功。
【讨论】:
【参考方案3】:我意识到我没有将 ck.pem 文件(证书和密钥的组合)上传到服务器上。
现在已经修复了。
【讨论】:
以上是关于如何使推送通知在 iOS 的生产环境中工作?的主要内容,如果未能解决你的问题,请参考以下文章