¿Por qué didReceiveRemoteNotification: fetchCompletionHandler se llama pero usual didReceiveRemoteNotification no lo es?

En mi aplicación tengo dos types de notifications push: notifications remotas en silencio con content-available = 1 indicador y notifications push habituales con body , badge y otras cosas.

También defino dos methods delegates didReceiveRemoteNotification:fetchCompletionHandler y usual didReceiveRemoteNotification .

Pero cuando llega una notificación push sin el indicador de content-available didReceiveRemoteNotification:fetchCompletionHandler se llama didReceiveRemoteNotification:fetchCompletionHandler , en lugar de didReceiveRemoteNotification .

¿Cómo arreglar esto?
¿Por qué no puedo tener dos methods delegates para el background y los empujones habituales?

iOS 7 solo llama al nuevo, así es como lo manejé en mi aplicación:

 -(void) application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo { // Pass on [self application:application didReceiveRemoteNotification:userInfo fetchCompletionHandler:nil]; } -(void) application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler { // Check if in background if ([UIApplication shanetworkingApplication].applicationState == UIApplicationStateInactive) { // User opened the push notification } else { // User hasn't opened it, this was a silent update } }