web-dev-qa-db-fra.com

Avertissement d'analyse de didReceiveRemoteNotification: fetchCompletionHandler

Je reçois une erreur après avoir ajouté ce code de parse.com:

- (void)application:(UIApplication *)application
didReceiveRemoteNotification:(NSDictionary *)userInfo
fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler {
    if (application.applicationState == UIApplicationStateInactive) {
        [PFAnalytics trackAppOpenedWithRemoteNotificationPayload:userInfo];
    }
}

Je ne comprends pas vraiment ce qui se passe, mais je reçois cet avertissement dans le journal:

Vous avez implémenté - [application: didReceiveRemoteNotification: fetchCompletionHandler:], mais vous devez toujours ajouter "notification à distance" à la liste de vos UIBackgroundModes pris en charge dans votre Info.plist.

Je pense ajouter dans votre fichier plist UIBackgroundModes - remote-notification réglerait le problème,

Mais quand je le fais, cela change les mots comme suit:

Required Background Modes -> App downloads content in response to Push notifications

Ce que mon application ne fait pas, je ne comprends donc pas pourquoi je le fais en premier lieu.

67
Arian Faurtosh

Si vous n'avez pas l'intention d'extraire des données en réponse à une notification à distance, je pense que vous pouvez implémenter cette méthode de délégation:

- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo 

par exemple.

- (void)application:(UIApplication *)application
didReceiveRemoteNotification:(NSDictionary *)userInfo {
    if (application.applicationState == UIApplicationStateInactive) {
        [PFAnalytics trackAppOpenedWithRemoteNotificationPayload:userInfo];
    }
}

au lieu de celui que vous utilisez actuellement.

32
djshiow

Si vous ne souhaitez pas ajouter manuellement la clé dans votre fichier .plist, Voici une version graphique de la réponse de @ MurraySagal, suivez les étapes 1 à 7 et vous aurez terminé. :)

enter image description here

Remarque: si vous ne pouvez pas lire les étapes, vous pouvez effectuer un zoom arrière sur l’onglet actuel en combinant les options suivantes: Command++ (pour zoom avant) et Command+- (pour effectuer un zoom arrière). Si Command ne fonctionnera pas, vous pouvez essayer avec Ctrl.

209
Hemang

Je pense que @djshiow ne résout pas votre problème.

Vous devez ajouter les éléments suivants dans votre fichier info.plist:

remote-notification

1) Ajoutez une nouvelle ligne et, dans la colonne de gauche, sélectionnez Modes de fond requis .

2) Sur la ligne 0, cliquez sur la colonne de droite et tapez: remote-notification . Appuyez sur Entrée.

Source: http://hayageek.com/ios-silent-Push-notifications/

37
jomafer

Dans Xcode 6:

  • Dans le navigateur de projet, cliquez sur le projet.
  • Dans la liste Projets et cibles, cliquez sur la cible.
  • Fonctions de clic
  • Développer et activer les modes d'arrière-plan
  • Cliquez sur Notifications à distance

Cela va ajouter le Required background modes clé et App downloads content in response to Push notifications valeur à info.plist.

22
Murray Sagal

Lorsque vous utilisez la nouvelle méthode didReceive ..., vous devez faire deux choses:

  1. Ajoutez l'entrée nécessaire dans votre plist
  2. Ajouter un gestionnaire d'achèvement qui gérera l'événement pour gérer les données

Si vous ne souhaitez pas télécharger de données, vous pouvez ajouter cela à votre méthode didReceive ...

completionHandler(.NoData)
0
goggelj