我知道这样的问题一定被问了很多。
案例 - 我在 Distribution AdHoc 配置文件上对我的应用程序进行了代码设计。我已经在我的服务器上安装了我的生产推送 SSL 证书 p12 来推送消息。
消息正在从服务器成功推送,但未在设备上接收。
现在,在进一步挖掘之后,我读到沙盒和网关的设备令牌应该不同。如果 APNs 返回的设备令牌依赖于 aps-environment 字符串值,则有意义。所以,我确实从通知中注销了该应用程序。
[[UIApplication sharedApplication] unregisterFromRemoteNotifications];
使用上面提到的代码执行应用程序。然后删除代码并再次使用 APNs 注册应用程序。注册成功了,但是我收到的设备令牌没有改变,还是一样的。
我从服务器推送了一条消息。并检查了设备的控制台日志。(我确实使用 AdHoc 分发配置文件签署了应用程序并检查了控制台日志)。我在日志中收到以下内容:-
apsd[301] <APSCourier: 0x119f60>: Connecting courier stream using DNS TXT record at sandbox.push.apple.com and port TCP 5223
apsd[301] <Warning>: Fall back to alternate interface was disabled
apsd[301] <Warning>: Wake schedule completed for 2012-07-20 18:45:58 GMT (took 0.070 seconds)
apsd[301] <Warning>: Interface manager: Binding stream to WWAN context kCTDataConnectionServiceTypeInternet
apsd[301] <Warning>: <APSCourier: 0x119f60>: Connecting to courier 10-courier.sandbox.push.apple.com.
从服务器发送的所有消息都记录在设备的控制台中,但从未弹出。我猜操作系统会丢弃它们。
现在的问题,
为什么令牌没有改变?
为什么应用程序在 AdHoc Distribution 配置文件上构建时尝试调用 sandbox.push.apple.com 而它应该尝试调用 gateway.push.apple.com ?
当我使用 3G 连接时,为什么要使用端口 5223?
为什么不显示推送弹出窗口?
我没有想法,任何帮助表示赞赏。