Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

When is didRegisterForRemoteNotificationsWithDeviceToken called?

There are a lot of questions about didRegisterForRemoteNotificationsWithDeviceToken but they all sidestep a very direct question which I cannot seem to find an exact answer to.

For an app which is properly set up for notifications in all other ways and has proper network connectivity: when is didRegisterForRemoteNotificationsWithDeviceToken called? Some possible choices might be:

  1. Every time the app starts
  2. Only after the initial prompt to the user to accept push notifications
  3. Something else?
like image 256
jwl Avatar asked Jun 11 '12 15:06

jwl


3 Answers

The application delegate will call the method upon successful registration of remote notification after you call this method in your UIApplication:

(void)registerForRemoteNotificationTypes:(UIRemoteNotificationType)types

According to: http://developer.apple.com/library/ios/#DOCUMENTATION/UIKit/Reference/UIApplication_Class/Reference/Reference.html

When you send this message, the device initiates the registration process with Apple Push Service. If it succeeds, the application delegate receives a device token in the application:didRegisterForRemoteNotificationsWithDeviceToken: method; if registration doesn’t succeed, the delegate is informed via the application:didFailToRegisterForRemoteNotificationsWithError: method. If the application delegate receives a device token, it should connect with its provider and pass it the token.

Now, to elaborate further, normally an app will call the registerForRemoteNotificationTypes in your didFinishLaunchingWithOptions:(NSDictionary *)launchOptions in your application delegate. And therefore, the application:didRegisterForRemoteNotificationsWithDeviceToken is then usually called moments after the launch of the application.

Edit: The application:didRegisterForRemoteNotificationsWithDeviceToken still gets called for subsequents registration after the first.

like image 166
Sani Avatar answered Oct 18 '22 15:10

Sani


When the app is first run it will ask the user whether they will allow remote notifications. If they say yes then it will fire didRegisterForRemoteNotificationsWithDeviceToken at that time and every time after it will fire this function when the app is first opened. If they say no then it will not be fired unless they went into settings and allowed notifications on the app.

like image 12
rooster117 Avatar answered Oct 18 '22 16:10

rooster117


There can be many reasons, check some reasons

  • If you run the app in the simulator, the application:didFailToRegisterForRemoteNotificationsWithError: method will not be called as push notifications are not supported in the simulator using a device token. You can still send push notifications to your simulator using xcrun simctl push <device> com.example.my-app ExamplePush.apns"

  • Check your deice internet connection if not connect it.

For more info check Link

like image 2
Denny Avatar answered Oct 18 '22 16:10

Denny