Salut
Dans cet article, je veux partager mon expérience de l'utilisation d'une option pas évidente (du moins pour moi) pour modifier le texte de notification de l'application, en envoyant des données supplémentaires via UNUserNotificationCenter.
J'espère que cet article sera utile pour les débutants en programmation pour iOS sur Swift. Il est supposé que vous avez au moins une certaine expérience de la programmation avec Swift pour iOS. J'ai utilisé Swift 5 et Xcode 10.2.1. Et donc, commençons.
Défi
J'ai une application qui affiche les notifications des utilisateurs. Une notification se compose d'un corps de texte et d'un texte d'arrière-plan.
Donc, l'idée est de ne montrer à l'utilisateur que le texte principal et si l'utilisateur veut connaître le texte secondaire, il doit cliquer sur le bouton "afficher" dans la notification.
J'utilise la méthode suivante pour afficher une notification (toutes les explications ci-dessous):
1. Tout d'abord, nous devons définir une instance de UNUserNotificationCenter:
class NotificationService: NSObject, UNUserNotificationCenterDelegate { let notificationCenter = UNUserNotificationCenter.current() }
2. Ensuite, nous déclarons une méthode que nous utiliserons pour envoyer des notifications:
Ma méthode de demande de notification Lorsque nous appelons cette méthode, nous verrons une notification à l'heure que nous avons définie.
Si l'utilisateur tire la notification vers le bas, le bouton "Show me" apparaît. Ensuite, l'utilisateur doit cliquer sur ce bouton pour voir le texte d'arrière-plan. Pour ce faire, nous devons utiliser la méthode déléguée UNUserNotificationCenterDelegate:
func userNotificationCenter(_ center: UNUserNotificationCenter, didReceive response: UNNotificationResponse, withCompletionHandler completionHandler: @escaping () -> Void) { … }
Ainsi, le code que j'utilise dans la méthode de ce délégué est le suivant:
Ma méthode de délégué func userNotificationCenter(_ center: UNUserNotificationCenter, didReceive response: UNNotificationResponse, withCompletionHandler completionHandler: @escaping () -> Void) { print(“didReceive response”)
Et voici à quoi ça ressemble:

À l'intérieur du projet (que vous pouvez télécharger à partir du lien ci-dessous), il y a un peu plus de code, mais l'essence de l'idée est décrite dans cet article.
Je vous remercie!
Lien vers le projet