我目前正在创建一个需要从服务器接收推送通知的应用。
当我拿到设备令牌时,我将其发送到我的服务器并将其保存到DB中,
我的问题是:
当我尝试从XCode正常在设备上安装应用程序时,我得到了正确的设备令牌,它正在用于推送通知。
但是当我尝试从TestFlight或diawi安装应用程序时,设备tocken已更改,而错误的设备tocken应用程序未收到任何推送通知。
任何帮助将不胜感激
答案 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
(使用生产证书)发出推送通知。