nilkash
nilkash

Reputation: 7546

Get push notification data when application is in background IOS

Hi I am developing small IOS application in which I am using push notification. So in my case I am able get notifications and I am also able to access data for notification. Data from notification mean title, description etc. So in my case I am not saving my notification at my server side. I want to save those locally. For that what I want as soon as notification come I want to save that data locally. I am able to access my data when App is in foreground but I am not able to access my notification data when app is in background. I want to access the data of notification so that I can save it. For notification I did following things:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
[application registerForRemoteNotificationTypes:
 UIRemoteNotificationTypeBadge |
 UIRemoteNotificationTypeAlert |
 UIRemoteNotificationTypeSound];

[[UIApplication sharedApplication] setApplicationIconBadgeNumber: 0];
[[UIApplication sharedApplication] cancelAllLocalNotifications];

return YES;
}

 - (void)application:(UIApplication *)application
didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)newDeviceToken {
 }

- (void)application:(UIApplication *)application
 didReceiveRemoteNotification:(NSDictionary *)userInfo {
for (NSString *key in [userInfo allKeys])
{
    NSString *data = [userInfo objectForKey:key];
    NSLog(@"inside did register for notification .... %@  ---- > %@",key,data);
}
}

My requirement is simple I want access to notification when my app is in background. Any one is here who already did this? Need Help. Thank you.

Upvotes: 2

Views: 2174

Answers (2)

Shobhit Srivastava
Shobhit Srivastava

Reputation: 501

There is a way in iOS 7.0 and later where you can send notifications and access its content without user tapping it. So, the notification payload which you send has a parameter called content-available. You can view the payload parmeters in the following link: https://developer.apple.com/library/ios/documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/Chapters/ApplePushService.html

So when you set the content available to 1 and deliver the notification, iOS calls the below function even if the app is not in the background or foreground(must have remote notification enabled)

- (void)application:(UIApplication *)application
didReceiveRemoteNotification:(NSDictionary *)userInfo
fetchCompletionHandler:(void (^)(UIBackgroundFetchResult result))handler

Then you can use the userInfo dictionary to fetch your notification data.

Upvotes: 1

staticVoidMan
staticVoidMan

Reputation: 20274

In iOS, the app cannot access it's push notification until the user taps on the push notification from the notification center.
Once the push notification is tapped and the app loads/becomes active, only then will you be able to access the push notification.

FYI:

  1. When the app is in background and a push notification is recieved.
    After the user taps on the push notification:
    • the contents will be accessible in the -didReceiveRemoteNotification: method.
  2. When the app is not open and a push notification is received.
    After the user taps on the push notification
    • the contents will be accessible in the -didFinishLaunchingWithOptions: method in it's launchOptions parameter.

Also... push notifications aren't 100% reliable. They may or may not be delivered (although them not being delivered is pretty rare in my observation but worth pointing out none-the-less)

Upvotes: 2

Related Questions