didReceiveRemoteNotification: fetchCompletionHandler: Öffnen über Symbol oder Push-Benachrichtigung

Ich versuche, die Push-Benachrichtigungsbehandlung im Hintergrund zu implementieren, habe jedoch Probleme, festzustellen, ob der Benutzer die App über die gesendete Push-Benachrichtigung geöffnet hat, anstatt sie über das Symbol zu öffnen.

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

    //************************************************************
    // I only want this called if the user opened from swiping the push notification. 
    // Otherwise I just want to update the local model
    //************************************************************
    if(applicationState != UIApplicationStateActive) {
        MPOOpenViewController *openVc = [[MPOOpenViewController alloc] init];
        [self.navigationController pushViewController:openVc animated:NO];
    } else {
        ///Update local model
    }

    completionHandler(UIBackgroundFetchResultNewData);
}

Mit diesem Code öffnet sich die App für den MPOOpenViewController, unabhängig davon, wie der Benutzer die App öffnet. Wie kann ich es so machen, dass der View-Controller nur gepusht wird, wenn er die App öffnet und die Benachrichtigung nicht wischt?

Mit dem gleichen Code funktionierte dies unter iOS 6, aber mit der neuen iOS 7-Methode verhält es sich nicht so, wie ich es möchte.

Bearbeiten: Ich versuche, die App jetzt auf iOS 7 auszuführen, und wir unterstützen keine Version vor iOS 7. Ich habe denselben genauen Code in der iOS 6-Version der Methode (ohne den Completion-Handler) verwendet und es hat sich so verhalten Ich würde es erwarten. Sie würden die Benachrichtigung durchziehen und dies würde aufgerufen werden. Wenn Sie über das Symbol öffnen, wird die Methode niemals aufgerufen.

Antworten auf die Frage(3)

Ihre Antwort auf die Frage