Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Callback Method if user declines Push Notification Prompt?

My problem is I want to show a loading screen for the initial Push Notification Prompt "The app wants to send you push notifications."

So if the user hits yes I can proceed and start the app in the then invoked delegate methods:

- (void)application:(UIApplication*)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData*)deviceToken {   [self hideLoadingScreen]; }  - (void)application:(UIApplication*)application didFailToRegisterForRemoteNotificationsWithError:(NSError*)error {   [self hideLoadingScreen]; } 

However if the user hits no, none of these methods get called, which makes sense. My question is, is there a different delegate method that gets fired if he declines?

My problem is if no is selected, the loading screens never disappear. So I somehow need to know when the user is done with the selection.

like image 909
最白目 Avatar asked Sep 27 '13 14:09

最白目


2 Answers

In iOS 7, when the system's push notification prompt appears, the app becomes inactive and UIApplicationWillResignActiveNotification fires. Similarly when the user responds to the prompt (pressing either Yes or No), the app becomes active again and UIApplicationDidBecomeActiveNotification fires.

So you can listen for this notification, and then hide your loading screen.

Note: While the prompt is displayed, the Home button, Notification Center, and Control Center are disabled so they cannot trigger a false-positive UIApplicationDidBecomeActiveNotification. However if the user presses Lock button it will trigger UIApplicationDidBecomeActiveNotification.

like image 121
Jeff Mascia Avatar answered Oct 06 '22 00:10

Jeff Mascia


You can always get current allowed notification types from:

UIRemoteNotificationType notificationTypes = [[UIApplication sharedApplication] enabledRemoteNotificationTypes]; 

Keep in mind user can also disable notification in phone settings.

If you check that on didRegisterForRemoteNotificationsWithDeviceToken you should see if types you asked for are enabled.

like image 38
Grzegorz Krukowski Avatar answered Oct 06 '22 00:10

Grzegorz Krukowski