Analyser avertissement de didReceiveRemoteNotification:fetchCompletionHandler
-
20-12-2019 - |
Question
Je reçois un message d'erreur après l'ajout de 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 j'obtiens ce message d'avertissement dans le journal:
Vous avez mis en œuvre -[ application:didReceiveRemoteNotification:fetchCompletionHandler:], mais il faut encore ajouter à distance "notification" à la liste de vos pris en charge UIBackgroundModes dans votre Info.plist.
Je pense que l'ajout dans votre fichier plist UIBackgroundModes - remote-notification
serait résoudre le problème,
Mais quand je fais ça, il change les paroles de la suivre:
Required Background Modes
-> App downloads content in response to push notifications
Qui mon application ne permet pas de le faire, donc je suis confus quant à pourquoi je fais cela en premier lieu.
La solution
Si vous n'avez pas l'intention de récupérer les données en réponse à une notification à distance, je pense que vous pouvez mettre en œuvre cette méthode du délégué:
- (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.
Autres conseils
Si vous ne voulez pas ajouter manuellement des clés dans votre .plist
fichier alors voici une version graphique de @MurraySagal réponse, suivez les étapes de 1 à 7 et vous serez fait.:)
Note:Si vous ne pouvez pas lire les étapes, vous pouvez effectuer un zoom arrière de votre onglet actif en utilisant la combinaison de Commande++ (pour zoomer) et Commande+- (pour effectuer un zoom arrière).Si Commande ne fonctionne pas, vous pouvez essayer avec Ctrl.
Je pense que @djshiow n'est pas la résolution de votre problème.
Vous devez ajouter la ligne suivante dans votre info.fichier plist:
1) Ajouter une nouvelle ligne et, sur la colonne de gauche, sélectionnez Contexte les modes.
2) Sur l'Élément 0 de ligne, cliquez sur la colonne de droite et tapez: à distance de notification.Appuyez Sur Entrée.
Dans Xcode 6:
- Dans le Projet de navigation, cliquez sur le projet
- Dans les Projets et les Cibles de la liste, cliquez sur la cible.
- Cliquez Sur Les Capacités De
- Développez et mettez sur Fond Modes
- Cliquez Sur Notifications À Distance
Cela va ajouter de la Required background modes
clé et App downloads content in response to push notifications
la valeur de info.plist
.
Lorsque vous utilisez le nouveau didReceive...la méthode que vous êtes censé faire deux choses:
- Ajoutez l'entrée nécessaire dans votre plist
- Ajouter un gestionnaire d'achèvement qui gérera l'événement pour la manipulation de données
Si vous ne souhaitez pas télécharger toutes les données, vous pouvez ajouter ceci à votre didReceive...méthode
completionHandler(.NoData)