APNs with background refresh. Refresh called twice, when the APN is delivered and when the notification is tapped on?

I am trying to implement APNs in my app with the content-available key so that a background refresh will be triggered. Here is my code:

- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult result))handler { if([userInfo[@"aps"][@"content-available"] intValue]== 1){ //This stops a refresh happening is a push is delivered with the app in the foreground if(application.applicationState!=UIApplicationStateActive){ NSLog(@“Background push refresh called"); [self backgroundRefreshWithPushUpdate:NO andHandler:^(BOOL successful, BOOL newMessages) { if(successful){ if(newMessages) handler(UIBackgroundFetchResultNewData); else handler(UIBackgroundFetchResultNoData); } else{ handler(UIBackgroundFetchResultFailed); } }]; } else handler(UIBackgroundFetchResultNoData); } }

I have this additional condition: if(application.applicationState!=UIApplicationStateActive) for refreshing in the background as I don't want it to be triggered if the app is in the foreground. However, if I receive a push and then tap on the notification to open the app ALL of the code in - (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult result))handler is called again. This means my background fetch is called when the notification first comes in and then it's called again when the notification is tapped on. I don't want this to happen. Any ideas how I can get around this?

Category:ios Time:2018-12-22 Views:3

Related post

Copyright (C) pcaskme.com, All Rights Reserved.

processed in 2.394 (s). 13 q(s)