[SWIFT3] Accusé de réception d'une notification
Bonjour tout le monde ^^
J'ai récemment mis en place les notifications sur mon application, je peux en envoyer via php et pas de soucis, tout fonctionne bien.
Depuis hier, je me prends la tête pour savoir si une notification push est reçue par le téléphone ou pas..
Je peux savoir quand quelqu'un clic dessus mais si la personne ne clic pas dessus et préfère ouvrir l'application, ça ne fonctionne pas..
J'ai l'impression de passé à côté de quelque chose.
Est-ce-qu'il y a pas une fonction toute simple qui peut me dire si une notification vient d'être reçue par l'application ?
Merci de votre aide
Mots clés:
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Il y a différentes méthodes qui seront appelées en fonction de l'état de l'application: les didReceiveRemoteNotification: didFinishLaunchingWithOptions: etc.
Garde juste en mémoire une sorte d'ID dans ces cas. Et à l'ouverture regarde cette liste.
Une autre solution est d'utiliser uniquement des Silents Notifications, de les garde, et de les afficher toi-même en local si nécessaire. Tu garderas la liste.
Oui c'est ce que j'ai cru comprendre, pourtant ça ne fonctionne pas
Dans mon AppDelegate.swift, je me retrouve avec ça :
Le soucis, c'est que je ne passe jamais dans didReceiveRemoteNotification
Le "print" (en rouge) n'est jamais affiché..
J'ai d'ailleurs une erreur sur cette ligne :
Mais je ne la comprend pas trop
Une idée de ce qui peut coincer ?
Oui, Swift 3 qui a changé les signatures de ses méthodes
Tu verras que tes méthodes Swift 3 ont souvent après l'ouverture de la parenthèse un underscore.
Alors que celle de ton implémentation non. Donc c'est normal qu'elle ne soit pas appelée.
C'est exactement ce qu'on t'a déjà dit précédemment : http://forum.cocoacafe.fr/topic/14849-swift-3-erreur-de-code/?p=143130
A vrai dire, c'est juste une erreur de code dans mon post, dans mon code, l'underscore y est bien ^^
J'ai juste fait tellement de test que j'ai pas copier/coller le bon
Ceci dit, avec l'underscore, ça fonctionne pas non plus, je ne passe jamais dedans..
Pour info, je lance l'appli, j'envois une notification depuis php, lors de la réception, je devrais au moins passer dans mon print (en rouge) .. nan ? C'est bien le principe attendu où j'ai loupé un truc ?
Hello Insou,
peut-être que ça t'aidera. Depuis iOS 10, une application foreground peut afficher les notifications !
Voilà le code
C'est géré par un delegate (je te laisse googleiser pour trouver lequel)
Colas : C'est pas déjà ce que j'utilise ?
Regarde mon code plus haut, j'ai l'impression que c'est le même truc ^^
Puis mon soucis n'est pas pour afficher la notification mais pour détecter qu'elle à bien été reçue sur le téléphone..
Euh, non pas du tout !
C'est une méthode de UNUserNotificationCenterDelegate
Je pense qu'il faut que tu essaies avec ce delegate-là .
Sinon, j'ai l'impression qu'il y a une erreur de logique dans code (mais corrigez-moi si je me trompe) : comment le code pourrait être exécuté si l'application est background ?
Bah... pour moi j'utilise bien UNUserNotificationCenterDelegate nan ?
il est bien dans mes classes appelées au début..
Mais peut-être que j'ai mal compris comment l'utiliser ? Pour le coup là j'suis un peu perdu..
Pour la logique du code.. pour moi, le serveur Push envoi la notification, qui réveille le téléphone et qui associe la notification à la bonne application, ensuite quand tu clic dessus, ça te dit si l'application était lancée ou pas, tout simplement.. mais peut-être que je dis n'importe quoi..
Du coup si quelqu'un peut nous éclairer sur ça, c'est pas de refus non plus
Je n'avais pas bien lu.
Bah pour le coup, j'aurai préféré m'être trompé parce que j'ai pas plus d'infos sur le pourquoi ça ne fonctionne pas xd
Alors du coup, j'arrive à passer dans didReceiveRemoteNotification
Il suffisait de supprimer cette fonction dans mon code :
Je passe bien dans la fonction mais ça ne me fait pas pour autant un vrai accusé de réception..
Maintenant que je passe dedans, je peux voir si la personne l'a ouvert depuis la notification, ce qui bascule l'état en "Lu"
Mais si la personne supprime la notification ou ne l'a reçoit pas, je n'ai rien qui me le dit