We use remote notifications in our iOS application, and we register on the APNS server inside the application method : didFinishLaunching: delegate. This means that it will be registered on the APNS server each time the application is restarted. Below is a snippet of code.
[[UIApplication sharedApplication] registerForRemoteNotifications]
We noticed that the device token (which is delivered to us by the APNS server) is the same every time. So, we thought that we could save the token in NSUserDefaults and use it later . In the application: didFinishLaunching method: we can check if the device token is present in NSUserDefaults or not. If it is available, we can use it instead of registering with APNS. Otherwise, we may register with APNS.
But, from Apple's documentation, he noted that “ they encourage us to register for remote notifications every time the application launches only . Below is a screen shot of the documents.

? NSUserDefaults , ? !! !