设备Tocken将在从diawi或TestFlight安装后更改?所以推送通知不会到来

时间:2015-05-25 19:28:55

标签: objective-c xcode ios8 push-notification testflight

我目前正在创建一个需要从服务器接收推送通知的应用。

当我拿到设备令牌时,我将其发送到我的服务器并将其保存到DB中,

我的问题是:

当我尝试从XCode正常在设备上安装应用程序时,我得到了正确的设备令牌,它正在用于推送通知。

但是当我尝试从TestFlight或diawi安装应用程序时,设备tocken已更改,而错误的设备tocken应用程序未收到任何推送通知。

任何帮助将不胜感激

2 个答案:

答案 0 :(得分:4)

我找到了回答我的问题。

永远不要使用您的NSUserDefaults'键为@"键"。

例如我之前使用的内容。

[[NSUserDefaults standardUserDefaults] setObject:deviceToken forKey:@"key"];
[[NSUserDefaults standardUserDefaults] synchronize];

我现在正在使用它。

[[NSUserDefaults standardUserDefaults] setObject:deviceToken forKey:@"token"];
[[NSUserDefaults standardUserDefaults] synchronize];

现在推送通知即将到来。

因此,结论永远不会使用您的密钥名称 @" key" 。我不知道为什么,但可能有些偏好是默认使用 @"键"

感谢。

答案 1 :(得分:3)

当您通过XCode在设备上安装应用程序时,它将在开发(沙盒)配置中运行。您将收到开发令牌,您需要通过ssl://gateway.sandbox.push.apple.com:2195(使用开发证书)发出推送通知。

但是:当您通过TestFlight安装应用程序时,您的应用程序将以分发(生产)模式进行编译(运行):生产令牌与开发令牌不同。简单地使用这个新的(生产)令牌也是不够的。在这种情况下,必须通过ssl://gateway.push.apple.com:2195(使用生产证书)发出推送通知。