didReceiveRemoteNotification: fetchCompletionHandler: ouvert à partir de l'icône vs push notification

Je suis en train de mettre en œuvre le fond de notification push de la manipulation, mais je vais avoir des problèmes avec déterminer si l'utilisateur ouvre l'application à partir de la notification qui vous a été envoyé par opposition à l'ouverture de l'icône.

- (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);
}

Avec ce code, l'application est en cours d'ouverture à la MPOOpenViewController indépendamment de la façon dont l'utilisateur ouvre l'application. Comment puis-je faire en sorte que le point de vue contrôleur est seulement poussé si elles ouvrez l'application à partir d'un balayage de la notification?

Avec le même code, il a travaillé sur iOS 6, mais avec le nouvel iOS 7 méthode, il n'est pas se comporter de la façon dont je le veux.

Edit: je suis en train de lancer l'application sur iOS 7 maintenant, et nous ne sommes pas de soutenir toute version antérieure à la version iOS 7. J'ai utilisé ce même code dans l'iOS 6 version de la méthode (sans le gestionnaire d'achèvement) et il s'est comporté de la manière que je l'avais prévu. Vous auriez glisser la notification et ce serait appelée. Si vous avez ouvert à partir de l'icône, la méthode ne sera jamais appelé.

  • C'est semble bien. Lorsque vous avez ouvert l'application à partir de l'icône de cette méthode ne jamais être appelé. Donc exactement ce qui est le problème auquel vous êtes confronté, ou ce que vous voulez réaliser ?
  • ce n'est pas vrai. Depuis l'application prend en charge de fond à distance des notifications, cette méthode est appelée lorsque l'application est toujours en arrière-plan. Par exemple, si j'ai mis un point de rupture de l'ici et de fermer l'application. Alors quand je reçois le pousser, il touche le point d'arrêt avec l'app encore fermé. Ce n'est pas arrivé dans iOS6
  • Dans votre Question en ligne "Avec le même code, il a travaillé sur iOS 6, mais avec le nouvel iOS 7 méthode, il n'est pas se comporter de la façon dont je le veux.". Spécifier dans quel iOS il est en cours d'exécution ?
  • Vous ne pouvez pas le faire dans iOS 6. stackoverflow.com/questions/20487890/...
  • Je suis sur ce sur iOS 7. Nous ne sommes pas soutenir quoi que ce soit avant iOS 7
  • Je pense que vous devriez vérifier la marque de la notification push mode d'arrière-plan pour l'activer. OU Entrer dans Plist pour activer le mode d'arrière-plan pour le push notification. Je pense que vous conscient à ce sujet.
  • Vous êtes manquant à ma question entièrement. Cette méthode est appelée à chaque fois que je reçois un push, comme il se doit. Le problème est que dans le fond, une nouvelle vue est poussé sur la pile de navigation. J'avais comme qui de se produire si l'utilisateur effectue à partir de la notification (ils s'attendent à voir le contenu du droit de suite). Si ils ont frappé l'icône, elles devraient être prises à l'écran d'accueil, où nous avons un badge indiquant à l'utilisateur qu'il y a du nouveau contenu pour eux dans leur alimentation.
  • Même question est d'entrer en ios 10 ,en 9.3 il travaille très bien et ci-dessous des solutions sont à défaut dans ios 10

InformationsquelleAutor Mike V | 2014-02-28