从 diawi 或 TestFlight 安装后设备令牌会更改吗?所以推送通知不会来
Device Tocken will Change after install from diawi or TestFlight? So Push notification is not coming
我目前正在创建一个需要从服务器接收推送通知的应用程序。
当我得到设备令牌后,我将它发送到我的服务器并将其保存到数据库中,
我的问题是:
当我尝试在 XCode 的设备上正常安装应用程序时,我得到了正确的设备令牌,它正在用于推送通知。
但是当我尝试从 TestFlight 或 diawi 安装应用程序时,设备令牌发生了变化,并且对于那个错误的设备令牌应用程序没有收到任何推送通知。
任何帮助将不胜感激
当您通过 XCode 在设备上安装您的应用程序时,它将 运行 在开发(沙盒)配置中。您将收到开发令牌,您需要通过 ssl://gateway.sandbox.push.apple.com:2195
(使用开发证书)发出推送通知。
但是:当您通过 TestFlight 安装您的应用程序时,您的应用程序在分发(生产)模式下编译(运行):生产令牌与开发令牌不同。仅仅使用这个新的(生产)令牌也是不够的。在这种情况下,必须通过 ssl://gateway.push.apple.com:2195
(使用生产证书)发出推送通知。
我找到了我的问题的答案。
切勿将 NSUserDefaults 的密钥用作@"key"。
比如我之前用过的
[[NSUserDefaults standardUserDefaults] setObject:deviceToken forKey:@"key"];
[[NSUserDefaults standardUserDefaults] synchronize];
还有我现在用的。
[[NSUserDefaults standardUserDefaults] setObject:deviceToken forKey:@"token"];
[[NSUserDefaults standardUserDefaults] synchronize];
现在推送通知照原样来了。
所以结论是从来没有用过你的键名@"key"。我不知道为什么,但可能有些偏好默认使用此 @"key"。
谢谢。
我目前正在创建一个需要从服务器接收推送通知的应用程序。
当我得到设备令牌后,我将它发送到我的服务器并将其保存到数据库中,
我的问题是:
当我尝试在 XCode 的设备上正常安装应用程序时,我得到了正确的设备令牌,它正在用于推送通知。
但是当我尝试从 TestFlight 或 diawi 安装应用程序时,设备令牌发生了变化,并且对于那个错误的设备令牌应用程序没有收到任何推送通知。
任何帮助将不胜感激
当您通过 XCode 在设备上安装您的应用程序时,它将 运行 在开发(沙盒)配置中。您将收到开发令牌,您需要通过 ssl://gateway.sandbox.push.apple.com:2195
(使用开发证书)发出推送通知。
但是:当您通过 TestFlight 安装您的应用程序时,您的应用程序在分发(生产)模式下编译(运行):生产令牌与开发令牌不同。仅仅使用这个新的(生产)令牌也是不够的。在这种情况下,必须通过 ssl://gateway.push.apple.com:2195
(使用生产证书)发出推送通知。
我找到了我的问题的答案。
切勿将 NSUserDefaults 的密钥用作@"key"。
比如我之前用过的
[[NSUserDefaults standardUserDefaults] setObject:deviceToken forKey:@"key"];
[[NSUserDefaults standardUserDefaults] synchronize];
还有我现在用的。
[[NSUserDefaults standardUserDefaults] setObject:deviceToken forKey:@"token"];
[[NSUserDefaults standardUserDefaults] synchronize];
现在推送通知照原样来了。
所以结论是从来没有用过你的键名@"key"。我不知道为什么,但可能有些偏好默认使用此 @"key"。
谢谢。