O'Reilly logo

iOS 7 Programming Cookbook by Vandad Nahavandipoor

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

17.9. Reacting to Push Notifications

Problem

You have been able to deliver push notifications to your app after reading Recipe 17.8 but don’t know how to react to them in your app.

Solution

Implement the application:didReceiveRemoteNotification: method of your app delegate.

Discussion

The application:didReceiveRemoteNotification: method of your app delegate gets called whenever a push notification is delivered to iOS and the user acts upon it in a way that opens your app. This method gets called if your app is either in the foreground or the background, but not completely terminated. For instance, the user can ignore the push notification. In that case, the aforementioned method will not get called. If the user presses the push notification, which in turn opens your app, iOS will open your app and bring it to the foreground, after which the aforementioned method will get called on your app delegate.

If your app is fully terminated and not in the background, the push notification that triggers your app to wake up will be encapsulated by iOS in the launch options that will be passed to the application:didFinishLaunchingWithOptions: method of your app delegate. To retrieve the notification object, simply query the didFinishLaunchingWithOptions parameter of this method (which is of type NSDictionary) and look for the UIApplicationLaunchOptionsRemoteNotificationKey key. The value of this key will be the push notification object that started your app.

The didReceiveRemoteNotification parameter ...

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, interactive tutorials, and more.

Start Free Trial

No credit card required