I\'m currently creating an app that needs to receive push notifications from a server.
When I got the device token, I send it to my server and save it into DB,
M
I found answered of my question.
Never use your NSUserDefaults' key as @"key".
For example what I have previously used.
[[NSUserDefaults standardUserDefaults] setObject:deviceToken forKey:@"key"];
[[NSUserDefaults standardUserDefaults] synchronize];
And what I am using now.
[[NSUserDefaults standardUserDefaults] setObject:deviceToken forKey:@"token"];
[[NSUserDefaults standardUserDefaults] synchronize];
And now push notification is coming as it is.
So conclusion is never used your key name @"key". I don't know why but may be some preference is using this @"key" by default.
Thanks.
When you install your app on the device via XCode it will run in development (sandbox) configuration. You will receive development token and you need to issue push notification via ssl://gateway.sandbox.push.apple.com:2195
(using development certificate).
However: when you install your app via TestFlight your app is compiled (an run) in distribution (production) mode: production token is not the same as development token. It is also not enough to simply use this new (production) token. Push notification has to be issued via ssl://gateway.push.apple.com:2195
(using production certificate) in this case.