Ruby apns gem返回nil

Aar*_*egh 8 ruby-on-rails apple-push-notifications ios

我正在尝试使用我的Rails应用程序使用APNS gem.几个月前我最初设置了这个,并且推送到iOS设备的通知工作顺利.现在,我的应用程序正在运行,我发现通知不会再出现了.该APNS宝石已经有一段时间没有更新,所以我已经试过它的各种后叉,所有达到同样的效果.

这是我正在做的事情:

APNS.host = 'gateway.push.apple.com' 
APNS.pem  = Rails.root + "lib/push_production.pem"
APNS.port = 2195 
APNS.send_notification(device_token, "Test send" )
Run Code Online (Sandbox Code Playgroud)

结果呢?

=> nil
Run Code Online (Sandbox Code Playgroud)

没有任何方法的反馈,没有我可以检查的日志文件.我已经尝试过生成和重新生成我的证书; 一切似乎都没问题.我尝试用各种方式表达我的设备令牌,没有尖括号,字符组之间没有空格...... APNS并不关心.

考虑到涉及的活动部件的数量,我知道这是一个棘手的问题.但有人可以建议去哪里看看吗?

Aar*_*egh 2

我相信我已经找到答案了。在 Urban Airship 注册帐户后,我尝试向手机发送测试消息,但再次无济于事。但这些人实际上是一起行动的,所以他们能够向我展示错误消息!结果我的设备令牌无效。为什么?因为它是由应用程序的沙盒版本生成的。

是的,我的应用程序在商店中,但事实证明我的应用程序商店分发配置文件是在添加推送通知权利之前生成的。因此,当您在我的可执行文件上运行协同设计工具时,它不会显示权利。这是一个例子:

Diomedes:Release-iphoneos aaron$ codesign -dvvvv --entitlements - Tiberius.app
Run Code Online (Sandbox Code Playgroud)

该命令应显示一个 plist,其中包含值为“product”的键。我的版本根本没有那个密钥。

实际上,我被迫在配置门户中生成一个全新的分发配置文件,它最终包含了正确的权利。我还没有能够对此进行测试(8 天的 App Store 评论,有人吗?),但我觉得这就是问题所在。

PS Urban Airship 网站上的这篇文章对我很有帮助。