Idrees Ashraf
Idrees Ashraf

Reputation: 1383

Push notification data retrieving

I want to get data from push notification message. I successfully get the data when app is on foreground and in background. but I am unable to get data when app is quit and user press view button on push notification. I write the code in application did finish launching. This code cause the app crash when pressing on View button of push notification message. If I comment the code then app doesn't crash. Kindly help me to fetch data from push notification when app is quit and user press view button on push notification. I'll really appreciate that.

if(launchOptions != nil){
        NSDictionary *tmpDic = [launchOptions objectForKey:UIApplicationLaunchOptionsRemoteNotificationKey];
        if (tmpDic!=nil) {
            pushedMessage=[NSString stringWithFormat:@"%@",[[tmpDic objectForKey:@"aps"] objectForKey:@"alert"]];
            pushedCountry=[NSString stringWithFormat:@"%@",[tmpDic objectForKey:@"country"]];
            [self saveToDatabase];
        }
    }

Upvotes: 5

Views: 5454

Answers (5)

Rahul K Rajan
Rahul K Rajan

Reputation: 796

From ios7 we have the below delegate method to handle the push notification when the app is in back ground or not running

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

Upvotes: 1

Ajay Gabani
Ajay Gabani

Reputation: 1178

Please try this...

Add this code to appdelegate.m => didFinishLaunchingWithOptions

if ([launchOptions valueForKey:@"UIApplicationLaunchOptionsRemoteNotificationKey"]) {

    [self application:application didReceiveRemoteNotification:launchOptions[UIApplicationLaunchOptionsRemoteNotificationKey]];

}

Upvotes: 1

Erwan
Erwan

Reputation: 3729

See my comment on the above answer.

Here is Apple's doc:

If the app is not running when a push notification arrives, the method launches the app and provides the appropriate information in the launch options dictionary. The app does not call this method to handle that push notification. Instead, your implementation of the application:willFinishLaunchingWithOptions: or application:didFinishLaunchingWithOptions: method needs to get the push notification payload data and respond appropriately.

So you need to implement:

- (void)application:(UIApplication*)application didReceiveRemoteNotification: 
(NSDictionary*)userInfo

As well as handling the launchOptions in:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

Upvotes: 0

Sakshi
Sakshi

Reputation: 1040

When you click view button

- (void)application:(UIApplication*)application didReceiveRemoteNotification:      (NSDictionary*)userInfo
{
}

this method is called and userinfo will contain all data

Things which you are doing in didfinishlaunch method do in didReceiveRemoteNotification:

Upvotes: 0

evan.stoddard
evan.stoddard

Reputation: 698

I don't totally understand what your asking but you can do stuff with what is being being push with a function in the app delegate

- (void)application:(UIApplication*)application didReceiveRemoteNotification: 
(NSDictionary*)userInfo
{
NSLog(@"Received notification: %@", userInfo);
[self addMessageFromRemoteNotification:userInfo updateUI:YES];
}

Now you can add that data to core data or sqlite. This may not be relevant to your question but it's the best I can give based on what you've asked in your question.

Upvotes: 0

Related Questions