Les Notifications en SwiftUI
Comprendre les Notifications
Dans SwiftUI, les notifications sont cruciales pour tenir les utilisateurs informés et engagés grâce à deux types principaux : les notifications locales et les notifications distantes (push). Les premières se créent au sein de l'application sans nécessiter de serveur, tandis que les secondes s'appuient sur le service de Notifications Push d'Apple (APNS) pour leur livraison.
Notifications Locales
Définition : Les notifications locales sont générées et planifiées directement dans l'application. Idéales pour des rappels ou des événements de calendrier, elles s'activent suite à des actions de l'utilisateur ou selon un calendrier prédéfini.
Planification : Le développeur détermine le contenu et le moment où ces notifications apparaissent. Elles peuvent être programmées pour surgir à un moment spécifique ou en fonction d'événements déclencheurs dans l'application.
Autorisations Utilisateur : Bien qu'elles soient moins intrusives que les notifications distantes, les notifications locales nécessitent toujours une autorisation utilisateur. L'application doit en faire la demande pour pouvoir envoyer des notifications.
Personnalisation : Ces notifications peuvent être personnalisées, par exemple, avec des sons, des alertes ou des badges, et il est possible de les configurer pour réaliser certaines actions lorsque l'utilisateur interagit avec elles.
Implémentation sous SwiftUI : Pour mettre en place des notifications locales dans SwiftUI, il faut utiliser UNUserNotificationCenter
afin de gérer le contenu des notifications, demander les autorisations nécessaires et programmer la livraison des notifications.
Exemple de Code pour Notification Locale en SwiftUI
Voici un exemple de code qui crée une notification basique avec un déclencheur temporel :
import UserNotifications
func scheduleTimeBasedNotification() {
// 1. Demander la permission d'afficher des alertes et de jouer des sons.
UNUserNotificationCenter.current().requestAuthorization(options: [.alert, .sound]) { granted, error in
if granted {
print("Permission accordée")
} else if let error = error {
print(error.localizedDescription)
}
}
// 2. Créer le contenu de la notification
let content = UNMutableNotificationContent()
content.title = "Rappel"
content.body = "N'oubliez pas de vérifier l'application!"
content.sound = UNNotificationSound.default
// 3. Créer un déclencheur pour la notification
// Par exemple, dans 10 secondes
let trigger = UNTimeIntervalNotificationTrigger(timeInterval: 10, repeats: false)
// 4. Créer la requête de notification
let request = UNNotificationRequest(identifier: UUID().uuidString, content: content, trigger: trigger)
// 5. Ajouter la requête au centre de notifications
UNUserNotificationCenter.current().add(request) { error in
if let error = error {
print(error.localizedDescription)
} else {
print("Notification programmée")
}
}
}
Notifications Distantes (Push)
Définition : Les notifications distantes, ou notifications push, sont envoyées depuis un serveur directement vers l'appareil de l'utilisateur. Elles sont particulièrement efficaces car elles peuvent atteindre l'utilisateur même lorsqu'il n'utilise pas l'application. Elles permettent également un haut degré de personnalisation pour chaque utilisateur.
Interaction avec le Serveur et APNS :
Les notifications distantes nécessitent un serveur backend pour envoyer le contenu de la notification au service APNS d'Apple, qui se charge de la distribution vers l'appareil concerné.
Autorisations et Paramètres Utilisateur : Tout comme pour les notifications locales, l'utilisateur doit donner son accord. L'application doit explicitement demander l'autorisation d'envoyer des notifications push, et les utilisateurs peuvent personnaliser leurs paramètres.
Contenu et Interaction :
Les notifications distantes peuvent inclure des éléments multimédias comme des images et des sons, offrant également des options pour interagir, par exemple, répondre directement à un message.
Implémentation dans SwiftUI :
Pour mettre en œuvre des notifications push dans une application SwiftUI, il est nécessaire de configurer l'application pour recevoir ces notifications, de gérer le processus d'enregistrement auprès de l'APNS, puis de traiter les données des notifications entrantes.
Voici un exemple de code pour gérer les notifications push dans SwiftUI :
Exemple de Code pour Notifications Push en SwiftUI
Après avoir ajouté une classe AppDelegate pour s'occuper de l'enregistrement de la notification, vous pouvez intégrer cette classe dans le cycle de vie de votre application SwiftUI.
import Foundation
import UIKit
import UserNotifications
class AppDelegate: NSObject, UIApplicationDelegate {
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
UNUserNotificationCenter.current().requestAuthorization(options: [.alert, .badge, .sound]) { granted, error in
if granted {
DispatchQueue.main.async {
UIApplication.shared.registerForRemoteNotifications()
}
}
}
return true
}
func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) {
// Convertir le token en chaîne et l’envoyer à votre serveur
let tokenString = deviceToken.map { String(format: "%02.2hhx", $0) }.joined()
print("Token de notification push de l'appareil : \(tokenString)")
// Ici, vous enverriez typiquement le token à votre serveur
}
func application(_ application: UIApplication, didFailToRegisterForRemoteNotificationsWithError error: Error) {
print("Échec de l'enregistrement pour les notifications push : \(error)")
}
}
Intégration de AppDelegate avec SwiftUI :
Utilisez @UIApplicationDelegateAdaptor
pour lier votre AppDelegate à votre application SwiftUI. Voici comment procéder :
import SwiftUI
@main
struct RemotePushApp: App {
@UIApplicationDelegateAdaptor private var appDelegate: AppDelegate
var body: some Scene {
WindowGroup {
ContentView()
}
}
}
Utilisation des Notifications
Les notifications push offrent une multitude de fonctionnalités ; elles peuvent être utilisées pour gérer des éléments multimédias afin d'améliorer l'interactivité des notifications. De plus, il est également possible d'activer les notifications push en fonction de la localisation de l'utilisateur. Ces notifications représentent un puissant outil pour le marketing et la communication, augmentant l'engagement dans l'application et les revenus.