NOTIFICHE¶
Cosa imparerò:
- Notifiche locali
- Notifiche push
Le notifiche permettono a un’app di comunicare informazioni importanti all’utente anche quando l’app non è aperta in primo piano. Nelle piattaforme Apple si distinguono principalmente in notifiche locali e notifiche remote (push notifications). Le notifiche locali vengono create e programmate direttamente dall’app sul dispositivo. Le notifiche remote vengono inviate da un server al servizio Apple Push Notification Service (APNs), che le recapita al dispositivo.
Le notifiche possono mostrare un avviso, riprodurre un suono, aggiornare il badge dell’app e, in alcuni casi, attivare azioni personalizzate. Prima che il sistema possa mostrare notifiche visibili o riprodurre suoni per la tua app, è necessario chiedere all’utente l’autorizzazione. La stessa richiesta di autorizzazione vale sia per le notifiche locali sia per quelle remote.
Notifiche Locali: Le notifiche locali sono programmate dall'app sul dispositivo dell'utente e vengono attivate a un'ora specificata. Possono visualizzare avvisi, riprodurre suoni o aggiornare il badge sull'icona dell’app.
Notifiche Remote (push notifications): Le notifiche remote sono inviate da un server al dispositivo dell'utente tramite il servizio Apple Push Notification Service (APNs).
AUTORIZZAZIONE¶
Prima di programmare o mostrare notifiche, è necessario richiedere il permesso all’utente tramite UNUserNotificationCenter. Apple indica di usare il metodo requestAuthorization(options:completionHandler:) per chiedere l’autorizzazione a mostrare alert, badge e suoni. Questo metodo richiede il consenso dell’utente sia per notifiche locali sia per notifiche remote.
import UserNotifications
UNUserNotificationCenter.current().requestAuthorization(options: [.alert, .sound, .badge]) { granted, error in
if granted {
print("Permesso concesso")
} else if let error = error {
print("Errore: \(error.localizedDescription)")
}
}
LOCAL¶
Per creare una notifica locale si definisce prima il contenuto con UNMutableNotificationContent, poi un trigger, e infine si aggiunge la richiesta al notification center. Apple documenta UNMutableNotificationContent come l’oggetto da usare per specificare titolo, testo, suono, badge e altri elementi del payload di una notifica locale.
import UserNotifications
let content = UNMutableNotificationContent()
content.title = "Titolo della Notifica"
content.body = "Questa è una notifica locale."
content.sound = .default
let trigger = UNTimeIntervalNotificationTrigger(timeInterval: 5, repeats: false)
let request = UNNotificationRequest(identifier: UUID().uuidString, content: content, trigger: trigger)
UNUserNotificationCenter.current().add(request) { error in
if let error = error {
print("Errore: \(error.localizedDescription)")
}
}
Con questo esempio, la notifica verrà mostrata dopo 5 secondi. I trigger possono essere di vari tipi, ad esempio temporali o basati sul calendario, a seconda del comportamento desiderato.
PUSH¶
Le notifiche push richiedono una configurazione aggiuntiva rispetto alle notifiche locali. In particolare, l’app deve: 1. avere la capability Push Notifications abilitata nel target Xcode; 2. registrarsi con APNs; 3. ricevere un device token; 4. inviare quel token al proprio server, che userà APNs per spedire le notifiche.
Apple specifica che la registrazione con APNs produce un device token univoco per la combinazione app-dispositivo, e che il token deve essere inviato al provider server dell’app. Inoltre il token non va considerato fisso: Apple raccomanda di non hardcodarne dimensione o gestione e di ottenerlo dal sistema quando serve.
Registrazione per le notifiche push Dopo aver richiesto l’autorizzazione all’utente, l’app può registrarsi per le notifiche remote chiamando registerForRemoteNotifications(). Apple documenta questo passaggio come parte della procedura standard di registrazione con APNs. Se la registrazione va a buon fine, il sistema chiama didRegisterForRemoteNotificationsWithDeviceToken; in caso di errore chiama didFailToRegisterForRemoteNotificationsWithError. Questo è il punto in cui l’app riceve il device token e può inviarlo al proprio backend.
Capability e Background Modes Per ricevere notifiche push visibili serve la capability Push Notifications. Se invece vuoi anche elaborare aggiornamenti in background legati a notifiche remote silenziose o aggiornamenti dati, Apple indica di aggiungere la capability Background Modes e selezionare Remote notifications.