2
votes

I have a problem with detecting a push notification from APNS.

If there is a push notification from APNS when the app is not running or in background,

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

is not work.

And when I'm back to the foreground without selecting a push notification message from notification centre, it is not work.

How can I solve this problem?

I'm testing the app in iOS 6.13 and iOS 7.0.4.

Thanks for your help. :)

2
It seem that you have not read document care fully. developer.apple.com/library/ios/documentation/…CRDave
Read for application:didFinishLaunchingWithOptions:CRDave
First ensure the basic setup of the APNS ..Kumar KL

2 Answers

2
votes

Actually,the first receiver of notifications is system,not your app.

If your app isn't in foreground, app's application:didReceiveRemoteNotification:fetchCompletionHandler will never be called until you tap the notification to make your app becomes to the foreground again.

When a push notification arrives and the user clicks 'cancel', your app has no way to read that push notification again. You have to implement a separate functionality (most probably on server-side) to fetch a list of notifications sent to this device.

1
votes

From Apple documentation:

Implement this method if your app supports the remote-notification background mode.

Which mean the method you are using focuses on the background task. And only available after iOS 7.0.

I recommend you use application:didReceiveRemoteNotification:.

From Apple documentation:

If the app is running and receives a remote notification, the app calls this method to process the notification.