We managed to resolve the issue using the following, assumption:
iOS 7 introduced -application:didReceiveRemoteNotification:fetchCompletionHandler:
in the UIApplicationDelegate
, we made an assumption that perhaps the reason the notification was not being received was that iOS was testing to see if the application delegate responds to the newer selector.
Naturally Xcode 4 does not have UIBackgroundFetchResult
so the method could simply be implemented using an NSUInteger
. So we added the method in our application delegate:
- (void)application:(UIApplication *)application
didReceiveRemoteNotification:(NSDictionary *)userInfo
fetchCompletionHandler:(void (^)(NSUInteger result))handler
{
[self application:application didReceiveRemoteNotification:userInfo];
handler(0);
}
Furthermore, we had to add remote-notification to UIBackgroundModes in the application plist.
Building the code using Xcode 4 onto any iOS 7 device successfully resolved the issue and allowed us to submit to the store.
I hope this answer helps anyone else who was in the same position