Gli sviluppatori iOS amano immaginare le persone che usano costantemente la loro fantastica app. Ma, naturalmente, gli utenti a volte dovranno chiudere l’app ed eseguire altre attività. Il bucato non si piega da solo, sai! Fortunatamente, le notifiche push consentono agli sviluppatori di raggiungere gli utenti ed eseguire piccole attività, anche quando gli utenti non utilizzano attivamente un’app! In questo tutorial, imparerai come:
- Configurare la tua app per ricevere notifiche push.
- Visualizzarli agli utenti o eseguire altre attività.
Guida introduttiva
Che cosa sono le notifiche push? Sono messaggi inviati alla tua app tramite il servizio di notifica push Apple (APN) anche se la tua app non è in esecuzione o il telefono è inattivo. Per cosa è possibile utilizzare le notifiche push?
- Visualizza un breve messaggio di testo, chiamato avviso, che richiama l’attenzione su qualcosa di nuovo nella tua app.
- Riprodurre un suono di notifica.
- Imposta un numero di badge sull’icona dell’app per far sapere all’utente che ci sono nuovi elementi.
- Fornire azioni che l’utente può prendere senza aprire l’applicazione.
- Mostra un allegato multimediale.
- Tacere, permettendo l’applicazione per eseguire un’attività in background.
- Raggruppa le notifiche in thread.
- Modificare o rimuovere le notifiche consegnati.
- Esegui il codice per modificare la notifica prima di visualizzarla.
- Visualizza un’interfaccia utente interattiva personalizzata per la notifica.
- E probabilmente di più.
Questo tutorial copre molti di questi usi per aiutarti a iniziare a creare notifiche push nelle tue app. Per completare questo tutorial, è necessario quanto segue:
- Xcode 11.4 o successivo. Le versioni precedenti di Xcode non supportano le notifiche push utilizzando il simulatore.
- Un abbonamento Apple Developer Program per essere in grado di compilare l’applicazione con il diritto notifiche push.
Per inviare e ricevere notifiche push, è necessario eseguire tre attività principali:
- Configurare l’app e registrarla con gli APN.
- Invia una notifica push da un server a dispositivi specifici tramite APN. Lo simulerai con Xcode.
- Utilizzare callback in app per ricevere e gestire le notifiche push.
L’invio di notifiche push è una responsabilità del componente server della tua app. Molte app utilizzano terze parti per inviare notifiche push. Altri usano soluzioni personalizzate o librerie popolari (come Houston). Potrai solo toccare l’invio di messaggi push in questo tutorial, in modo da essere sicuri di controllare il Dove andare Da qui? sezione per costruire sulla vostra conoscenza delle notifiche push.
Per iniziare, scarica il progetto WenderCast starter utilizzando il pulsante Scarica materiali nella parte superiore o inferiore di questo tutorial. WenderCast è di tutti go-to fonte per raywenderlich.com podcast e ultime notizie.
Nella cartella iniziale, apri WenderCast.xcodeproj. Selezionare WenderCast nel navigatore progetto, quindi selezionare la destinazione WenderCast. Nella scheda Generale & Capacità, selezionare il team di sviluppo. Costruire ed eseguire in un simulatore.
WenderCast visualizza un elenco di raywenderlich.com podcast e consente agli utenti di riprodurli. Ma non consente agli utenti di sapere quando è disponibile un nuovo podcast e la scheda News è vuota! Presto risolverai questi problemi con la potenza delle notifiche push.
Invio e ricezione di notifiche push
Configurazione dell’app
La sicurezza è molto importante per le notifiche push. Non vuoi che nessun altro invii notifiche push ai tuoi utenti tramite la tua app. Dovrai eseguire diverse attività per configurare la tua app per ricevere in modo sicuro le notifiche push.
Abilitando il servizio di notifica push
In primo luogo, è necessario modificare l’identificatore del bundle. In Xcode, evidenziare WenderCast nel navigatore progetto, quindi selezionare la destinazione WenderCast. Seleziona Generale, quindi cambia l’identificatore del bundle in qualcosa di unico in modo che il server di notifica push di Apple possa indirizzare i push a questa app.
Successivamente, è necessario creare un ID app nel proprio account sviluppatore e abilitare il diritto di notifica push. Xcode ha un modo semplice per farlo:con il target WenderCast ancora selezionato, fai clic sulla scheda Signing & Capabilities e quindi fai clic sul pulsante + Capability. Digitare “push” nel campo filtro e premere Invio.
Dopo aver aggiunto il diritto alle notifiche push, il tuo progetto dovrebbe essere simile a questo:
Dietro le quinte, questo crea l’ID app e quindi aggiunge il diritto alle notifiche push ad esso. Puoi accedere all’Apple Developer Center per verificare questo:
Per ora è tutto ciò che devi configurare. Sei pronto per iniziare a migliorare l’app.
Chiedere il permesso di notifiche utente
Ci sono due passi da fare per registrarsi per le notifiche push. In primo luogo, è necessario ottenere il permesso dell’utente per mostrare le notifiche. Quindi, è possibile registrare il dispositivo per ricevere notifiche remote (push). Se tutto va bene, il sistema ti fornirà un token del dispositivo, che puoi pensare come un “indirizzo” per questo dispositivo.
In WenderCast, ti registrerai per le notifiche push subito dopo il lancio dell’app. Chiedi prima le autorizzazioni utente.
Apri AppDelegate.swift e aggiungere quanto segue nella parte superiore del file:
import UserNotifications
Quindi, aggiungi il seguente metodo alla fine di AppDelegate
:
func registerForPushNotifications() { //1 UNUserNotificationCenter.current() //2 .requestAuthorization(options: ) { granted, _ in //3 print("Permission granted: \(granted)") }}
Cosa fa questo codice:
-
UNUserNotificationCenter
gestisce tutte le attività relative alle notifiche nell’app, incluse le notifiche push. - Invochi
requestAuthorization(options:completionHandler:)
per (hai indovinato) richiedere l’autorizzazione per mostrare le notifiche. Iloptions
passato indica i tipi di notifiche che desideri utilizzare per la tua app: qui stai richiedendo avviso, suono e badge. - Il gestore di completamento riceve un Bool che indica se l’autorizzazione ha avuto successo. In questo caso, è sufficiente stampare il risultato.
requestAuthorization(options:completionHandler:)
possono includere qualsiasi combinazione diUNAuthorizationOptions
:
- .badge: visualizza un numero nell’angolo dell’icona dell’app.
- .suono: riprodurre un suono.
- .avviso: visualizza una notifica di testo.
- .CarPlay: Visualizzare le notifiche in CarPlay.
- .provvisorio: inviare notifiche senza interruzione. L’utente non riceverà una richiesta di autorizzazione se si utilizza solo questa opzione, ma le notifiche verranno visualizzate solo silenziosamente nel Centro notifiche.
- .providesAppNotificationSettings: indica che l’app ha la propria interfaccia utente per le impostazioni di notifica.
- .criticalAlert: Ignorare l’interruttore mute e Non disturbare. Avrai bisogno di un diritto speciale da parte di Apple per utilizzare questa opzione, perché è pensata solo per casi d’uso molto speciali.
Aggiungi quanto segue alla fine diapplication(_:didFinishLaunchingWithOptions:)
, appena prima direturn
:
registerForPushNotifications()
Chiamata registerForPushNotifications()
qui assicura l’applicazione tenterà di registrarsi per le notifiche push ogni volta che viene lanciato.
Crea ed esegui. Quando l’applicazione si avvia, si dovrebbe ricevere un prompt che chiede il permesso di inviare notifiche.
Toccare Consenti e poof! L’applicazione può ora visualizzare le notifiche. Forte! Ma cosa succede se l’utente rifiuta le autorizzazioni? Aggiungi questo metodo all’interno di AppDelegate
:
func getNotificationSettings() { UNUserNotificationCenter.current().getNotificationSettings { settings in print("Notification settings: \(settings)") }}
In primo luogo, è stato specificato le impostazioni desiderate. Questo metodo restituisce le impostazioni concesse dall’utente. Per ora, li stai stampando, ma tornerai qui a breve per fare di più con questo.
InregisterForPushNotifications()
, sostituire la chiamata arequestAuthorization(options:completionHandler:)
con quanto segue:
UNUserNotificationCenter.current() .requestAuthorization( options: ) { granted, _ in print("Permission granted: \(granted)") guard granted else { return } self?.getNotificationSettings() }
È stata aggiunta una chiamata agetNotificationSettings()
nel gestore di completamento. Questo è importante perché l’utente può, in qualsiasi momento, accedere all’app Impostazioni e modificare le autorizzazioni di notifica. guard
evita di effettuare questa chiamata nei casi in cui l’autorizzazione non è stata concessa.
Registrazione con APN
Ora che hai le autorizzazioni, ti registrerai per le notifiche remote!
getNotificationSettings()
, aggiungere il seguente sotto il print
all’interno di chiusura:
guard settings.authorizationStatus == .authorized else { return }DispatchQueue.main.async { UIApplication.shared.registerForRemoteNotifications()}
Qui, si verifica l’ authorizationStatus
.authorized
: L’utente ha concesso di notifica delle autorizzazioni. In tal caso, si chiama UIApplication.shared.registerForRemoteNotifications()
per avviare la registrazione con il servizio di notifica push Apple. È necessario chiamare questo sul thread principale, o riceverai un avviso di runtime.
Aggiungi quanto segue alla fine diAppDelegate
:
func application( _ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) { let tokenParts = deviceToken.map { data in String(format: "%02.2hhx", data) } let token = tokenParts.joined() print("Device Token: \(token)")}
Questo metodo viene chiamato da iOS ogni volta che una chiamata aregisterForRemoteNotifications()
riesce. Il codice può sembrare criptico, ma sta semplicemente prendendo un deviceToken
ricevuto e convertendolo in una stringa. Il token del dispositivo è il frutto di questo processo. E ‘ fornito da APN e identifica in modo univoco questa applicazione su questo particolare dispositivo.
Quando si invia una notifica push, il server utilizza token come “indirizzi” per consegnare ai dispositivi corretti. Nella tua app, ora invierai questo token al tuo server per salvarlo e utilizzarlo in seguito per inviare notifiche.
Ora aggiungi quanto segue:
func application( _ application: UIApplication, didFailToRegisterForRemoteNotificationsWithError error: Error) { print("Failed to register: \(error)")}
Questo metodo viene chiamato da iOS seregisterForRemoteNotifications()
fallisce. Stai solo stampando l’errore per ora.
Questo è tutto! Costruire ed eseguire. Poiché sei su un simulatore, vedrai un erroreFailed to register
. Puoi ignorarlo per ora. Successivamente, quando si esegue su un dispositivo reale, è necessario ricevere un token nell’output della console. Ecco un esempio:
Invio di una notifica push simulata
Utilizzare un editor di testo per creare un file chiamato prima.apn, che passerai all’utilità simctl di Xcode. Incolla il seguente testo JSON e salva il file.
{ "aps": { "alert": "Breaking News!", "sound": "default", "link_url": "https://raywenderlich.com" }}
La struttura di questo JSON sarà spiegata nella prossima sezione. Pazienza, cavalletta.
Crea ed esegui nuovamente l’app sul simulatore, quindi esegui lo sfondo dell’app o blocca il dispositivo. L’applicazione non è ancora in grado di elaborare le notifiche push, mentre in primo piano.
Per utilizzare simctl, è necessario conoscere l’identificatore del dispositivo per il simulatore in cui si sta eseguendo l’app. Se nel simulatore è in esecuzione un solo dispositivo, è possibile utilizzare booted anziché un identificatore. Per ottenere l’identificatore, in Xcode, seleziona Windows ▸ Dispositivi e simulatori, quindi seleziona la scheda Simulatori in alto e seleziona il simulatore che stai utilizzando dall’elenco a sinistra. Usa il mouse per copiare l’identificatore. Potrebbe essere necessario allargare la finestra di dialogo per vederlo completamente.
Aprire l’app Terminal e passare alla directory in cui è stato salvato per primo.apn. Quindi digitare il seguente comando utilizzando l’identificatore di dispositivo avviato o da Xcode al posto di device_identifier: xcrun simctl push device_identifier bundle_identifier first.apn
. Sostituisci device_identifier
con l’identificatore del dispositivo copiato da Xcode e sostituisci bundle_identifier
con l’identificatore del bundle dell’app, quello utilizzato quando hai impostato per la prima volta il progetto. Ecco un esempio:
Esegui il comando e vedrai apparire la notifica push sul simulatore!
Toccare la notifica per avviare l’applicazione.
Non è bello? :]
Guardando una Base di Notifica Push
Prima di passare alla gestione delle notifiche push, date un’occhiata al corpo della notifica di aver inviato:
{ "aps": { "alert": "Breaking News!", "sound": "default", "link_url": "https://raywenderlich.com" }}
Il payload è un JSON dizionario che contiene almeno un elemento, aps, che è anche un dizionario. In questo esempio,aps
contiene i campialert
sound
elink_url
. Quando il dispositivo riceve questa notifica push, mostra una vista di avviso con il testo ” Breaking News!”e riproduce l’effetto sonoro standard.
link_url
è in realtà un campo personalizzato. Puoi aggiungere campi personalizzati al payload in questo modo e verranno consegnati alla tua applicazione. Poiché non lo stai ancora gestendo all’interno dell’app, questa coppia chiave/valore attualmente non fa nulla.
link_url
dovrebbe essere a livello peer alla voce del dizionarioaps
piuttosto che all’interno di esso. Funziona ancora se lo si inserisce all’interno, ma suggeriamo sempre di aderire alla documentazione di Apple e correggerà questo nel nostro prossimo aggiornamento a questo tutorial.Ci sono otto chiavi incorporate che puoi aggiungere al dizionarioaps
(vedi il riferimento ufficiale della chiave del Payload per ulteriori informazioni):
- alert: Questa può essere una stringa, come nell’esempio precedente, o un dizionario. Come dizionario, può localizzare il testo o modificare altri aspetti della notifica.
- badge: Questo è un numero che verrà visualizzato nell’angolo dell’icona dell’app. È possibile rimuovere il badge impostando questo su 0.
- suono: Nome del file di un suono di notifica personalizzato che si trova nell’app. Questi devono essere più brevi di 30 secondi.
- thread-id: usa questo tasto per raggruppare le notifiche.
- categoria: definisce la categoria della notifica, che viene utilizzata per mostrare azioni personalizzate sulla notifica. Esplorerai questo a breve.
- content-available: Impostando questo tasto su
1
, la notifica push diventa silenziosa. Scoprirai questo nella sezione Notifiche push silenziose qui sotto. - mutable-content: Impostando questa chiave su
1
, la tua app può modificare la notifica prima di visualizzarla. - target-content-id: Questo è l’identificatore della finestra portata avanti.
Al di fuori di questi, è possibile aggiungere tutti i dati personalizzati che si desidera, purché il carico utile non superi i 4.096 byte.
Una volta che hai avuto abbastanza divertimento provare queste opzioni e l’invio di notifiche push al simulatore, passare alla sezione successiva!
Gestione delle notifiche push
In questa sezione, imparerai come eseguire azioni quando la tua app riceve notifiche e quando gli utenti le toccano.
Capire cosa succede quando si riceve una notifica push
Quando la tua app riceve una notifica push, iOS chiama un metodo inUIApplicationDelegate
.
Dovrai gestire una notifica in modo diverso a seconda dello stato in cui si trova la tua app quando viene ricevuta la notifica:
- Se la tua app non era in esecuzione e l’utente la avvia toccando la notifica push, iOS passa la notifica alla tua app nel
launchOptions
diapplication(_:didFinishLaunchingWithOptions:)
. - Se la tua app era in esecuzione in primo piano o in background, il sistema avvisa la tua app chiamando
application(_:didReceiveRemoteNotification:fetchCompletionHandler:)
. Quando l’utente apre l’app toccando la notifica push, iOS può chiamare nuovamente questo metodo, in modo da poter aggiornare l’interfaccia utente e visualizzare le informazioni pertinenti.
Nel primo caso, WenderCast creerà la notizia e si aprirà direttamente alla scheda Notizie. In AppDelegate.swift, aggiungi il seguente codice alla fine di application(_:didFinishLaunchingWithOptions:)
, appena prima dell’istruzione return:
// Check if launched from notificationlet notificationOption = launchOptions?// 1if let notification = notificationOption as? , let aps = notification as? { // 2 NewsItem.makeNewsItem(aps) // 3 (window?.rootViewController as? UITabBarController)?.selectedIndex = 1}
Questo è quello che stai facendo:
- Controlla se il valore per
UIApplication.LaunchOptionsKey.remoteNotification
esiste inlaunchOptions
. Se lo fa, la tua app è stata lanciata da una notifica. Questo conterrà il payload di notifica push che hai inviato. - Poiché il
aps
dizionario esiste, creare unNewsItem
con esso. - Cambia la scheda selezionata del controller tab nella sezione Notizie.
Per testare questo, è necessario modificare lo schema di WenderCast. Innanzitutto, crea ed esegui per installare il codice più recente sul simulatore. Quindi, fare clic sullo schema WenderCast e selezionare Modifica schema…:
Selezionare Esegui dal menu laterale, quindi nella scheda Info selezionare in Attesa eseguibile da lanciare:
Questa opzione farà in modo che il debugger attendere che l’applicazione per essere lanciato per la prima volta dopo l’installazione di allegare ad esso.
Crea ed esegui. Una volta terminata l’installazione, invia altre ultime notizie usando come prima. Toccare la notifica, e l’applicazione si aprirà alle notizie:
Per gestire la situazione in cui l’applicazione è in esecuzione quando una notifica push è ricevuto, aggiungere il seguente AppDelegate
:
func application( _ application: UIApplication, didReceiveRemoteNotification userInfo: , fetchCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void) { guard let aps = userInfo as? else { completionHandler(.failed) return } NewsItem.makeNewsItem(aps)}
in Questo modo si cerca di estrarre l’aps fornito userInfo
oggetto e, in caso di successo, crea un nuovo NewsItem
da esso.
Poiché iOS chiama questo metodo quando l’app è in esecuzione, è necessario modificare lo schema per avviare automaticamente l’app per testarlo. Nell’editor schema, in Avvia, selezionare Automaticamente.
Crea ed esegui. Mantenere l’applicazione in esecuzione in primo piano e nella scheda Notizie. Invia un’altra notifica push di notizie e guarda come appare nel feed:
Il gioco è fatto! La tua app ora può ricevere magicamente le ultime notizie mentre accade. :]
Lavorare con le notifiche attuabili
Le notifiche attuabili consentono di aggiungere pulsanti personalizzati alla notifica stessa. Potreste aver notato questo sulle notifiche e-mail o Tweet che consentono di “rispondere” o “preferito” sul posto.
La tua app può definire notifiche utilizzabili quando ti registri per le notifiche utilizzando le categorie. Ogni categoria di notifica può avere alcune azioni personalizzate preimpostate.
Una volta registrato, il server può impostare la categoria di una notifica push. Le azioni corrispondenti saranno disponibili per l’utente una volta ricevute.
Per WenderCast, definirai una categoria di notizie con un’azione personalizzata denominata View. Questa azione consentirà agli utenti di visualizzare l’articolo di notizie nell’app se lo desiderano.
In registerForPushNotifications()
, inserire quanto segue appena sotto la guardia e sopra la chiamata a getNotificationSettings()
:
// 1let viewAction = UNNotificationAction( identifier: Identifiers.viewAction, title: "View", options: )// 2let newsCategory = UNNotificationCategory( identifier: Identifiers.newsCategory, actions: , intentIdentifiers: , options: )// 3UNUserNotificationCenter.current().setNotificationCategories()
Passando attraverso questo, passo dopo passo:
- Crea una nuova azione di notifica, con la vista titolo sul pulsante, che apre l’app in primo piano quando viene attivata. L’azione ha un identificatore distinto, che iOS utilizza per distinguere tra altre azioni sulla stessa notifica.
- Definire la categoria news, che conterrà l’azione view. Questo ha anche un identificatore distinto che il payload dovrà contenere per specificare che la notifica push appartiene a questa categoria.
- Registrare la nuova notifica attuabile chiamando
setNotificationCategories
.
Crea ed esegui l’app per registrare le nuove impostazioni di notifica.
in Background l’app e poi inviare il seguente payload tramite il xcrun simctl
utilità:
{ "aps": { "alert": "Breaking News!", "sound": "default", "link_url": "https://raywenderlich.com", "category": "NEWS_CATEGORY" }}
Quando la notifica viene visualizzata, tirare verso il basso per rivelare la Vista in azione:
Bello! Toccando Vista lancerà WenderCast, ma non fa nulla di eccitante appena ancora. Per farlo visualizzare la notizia, è necessario fare un po ‘ più di gestione degli eventi nel delegato.
Gestione delle azioni di notifica
Ogni volta che viene attivata un’azione di notifica,UNUserNotificationCenter
informa il suo delegato. Torna in AppDelegate.swift, aggiungi la seguente estensione di classe nella parte inferiore del file:
// MARK: - UNUserNotificationCenterDelegateextension AppDelegate: UNUserNotificationCenterDelegate { func userNotificationCenter( _ center: UNUserNotificationCenter, didReceive response: UNNotificationResponse, withCompletionHandler completionHandler: @escaping () -> Void ) { // 1 let userInfo = response.notification.request.content.userInfo // 2 if let aps = userInfo as? , let newsItem = NewsItem.makeNewsItem(aps) { (window?.rootViewController as? UITabBarController)?.selectedIndex = 1 // 3 if response.actionIdentifier == Identifiers.viewAction, let url = URL(string: newsItem.link) { let safari = SFSafariViewController(url: url) window?.rootViewController? .present(safari, animated: true, completion: nil) } } // 4 completionHandler() }}
Questo è il callback che ottieni quando l’app si apre a causa di un’azione personalizzata. Potrebbe sembrare che ci sia molto da fare, ma non c’è molto di nuovo qui:
- Ottieni il dizionario
userInfo
. - Creare un
NewsItem
dalaps
dizionario e passare alla scheda Notizie. - Controllare il
actionIdentifier
. Se è l’azione” Visualizza “e il collegamento è un URL valido, visualizza il collegamento in unSFSafariViewController
. - Chiama il gestore di completamento che il sistema ti passa.
C’è un ultimo bit: devi impostare il delegato su UNUserNotificationCenter
. Aggiungi questa riga all’inizio diapplication(_:didFinishLaunchingWithOptions:)
:
UNUserNotificationCenter.current().delegate = self
Crea ed esegui. Chiudi di nuovo l’app, quindi invia un’altra notifica di notizie con il seguente payload:
{ "aps": { "alert": "New Posts!", "sound": "default", "link_url": "https://raywenderlich.com", "category": "NEWS_CATEGORY" }}
Abbassa la notifica e tocca l’azione Visualizza, e vedrai WenderCast presentare un controller di visualizzazione Safari subito dopo l’avvio:
Congratulazioni,! Invia un paio di più e provare ad aprire la notifica in modi diversi per vedere come si comporta.
Invio a un dispositivo reale
Se non vuoi inviare notifiche push a un dispositivo reale o non hai ancora bisogno di notifiche push silenziose, puoi saltare questa sezione e andare a Dove andare Da qui?
Tuttavia, se si desidera avere un’idea di come inviare notifiche push a un dispositivo reale e provare silent push, è necessario eseguire alcune impostazioni aggiuntive. Scarica l’utilità PushNotifications. Potrai utilizzare questa applicazione di utilità per inviare notifiche a un dispositivo reale. Per installarlo, seguire le istruzioni sotto Come installare. Presta particolare attenzione a come aprire l’app perché dovrai modificare alcune impostazioni per eseguire questa utility.
Vai all’Apple Developer Member Center e accedi.
L’invio di notifiche push richiede una chiave di autenticazione. Nel centro membri, selezionare Certificati, identificatori& Profili, quindi trovare le chiavi nel riquadro di sinistra. A destra del titolo dei tasti c’è un pulsante+. Fare clic su di esso per creare una nuova chiave.
Assegnare alla chiave un nome, ad esempio la chiave di notifica push. In Servizi chiave, selezionare Servizio notifiche push Apple (APN).
Fare clic su Continua e quindi Registrarsi nella schermata successiva per creare la nuova chiave. Tocca Scarica. Il file scaricato avrà un nome simile a AuthKey_4SVKWF966R. p8. Tieni traccia di questo file-ne avrai bisogno per inviare le notifiche! La parte 4SVKWF966R del nome del file è l’ID della chiave. Avrai anche bisogno di questo.
L’ultimo pezzo di cui hai bisogno è il tuo ID squadra. Passare alla pagina dei dettagli di appartenenza del centro membri per trovarlo.
Ce l’hai fatta! Con la tua nuova chiave, ora sei pronto per inviare la tua prima notifica push! Ti serve solo un’altra cosa.
Esegui l’app sul tuo dispositivo reale e copia il token del dispositivo dalla console debugger e fallo pronto.
Avvia PushNotifications e completa i seguenti passaggi:
- In Autenticazione, seleziona Token.
- Fare clic sul pulsante Seleziona P8 e selezionare il .file p8 dalla sezione precedente.
- Inserisci il tuo ID chiave e ID squadra nei campi pertinenti.
- In Body, inserisci l’ID bundle della tua app e il token del tuo dispositivo.
- Cambia il corpo della richiesta in modo che assomigli a questo:
{ "aps": { "alert": "Breaking News!", "sound": "default", "link_url": "https://raywenderlich.com" }}
Fai clic sul pulsante Invia in PushNotifications.
Si dovrebbe ricevere notifiche push:
Risoluzione di Problemi Comuni
Qui ci sono un paio di problemi che si potrebbero incontrare:
- Alcuni arrivano le notifiche, ma non è tutto: Se si sta inviando molte le notifiche push contemporaneamente, ma viene visualizzato solo un paio, non abbiate paura! Questo è di progettazione. APN mantiene un QoS (Qualità del servizio) coda per ogni dispositivo. La dimensione di questa coda è 1, quindi se invii più notifiche, l’ultima notifica viene sovrascritta.
- Problema di connessione al servizio di notifica push: Una possibilità potrebbe essere che ci sia un firewall che blocca le porte utilizzate dagli APN. Assicurati di sbloccare queste porte.
Utilizzando le notifiche push silenziose
Le notifiche push silenziose possono riattivare l’app in silenzio per eseguire alcune attività in background. WenderCast può utilizzare questa funzione per aggiornare tranquillamente l’elenco dei podcast.
Con un componente server appropriato questo può essere molto efficiente. La tua app non avrà bisogno di eseguire costantemente il polling per i dati. È possibile inviare una notifica push silenziosa ogni volta che sono disponibili nuovi dati.
Per iniziare, selezionare nuovamente il target WenderCast. Ora fai clic sulla scheda Firma & Funzionalità e aggiungi la funzionalità Modalità sfondo. Quindi controlla l’opzione Notifiche remote:
Ora, la tua app si sveglierà in background quando riceverà una di queste notifiche push.
In AppDelegate.swift, trova application(_:didReceiveRemoteNotification:fetchCompletionHandler:)
. Sostituire la chiamata aNewsItem.makeNewsItem()
con quanto segue:
// 1if aps as? Int == 1 { let podcastStore = PodcastStore.sharedStore // 2 podcastStore.refreshItems { didLoadNewItems in // 3 completionHandler(didLoadNewItems ? .newData : .noData) }} else { // 4 NewsItem.makeNewsItem(aps) completionHandler(.newData)}
Andando oltre il codice:
- Si controlla per vedere se
content-available
è impostato su 1. Se è così, questa è una notifica silenziosa. - Si aggiorna l’elenco dei podcast, che è una chiamata di rete asincrona.
- Al termine dell’aggiornamento, chiamare il gestore di completamento per far sapere al sistema se l’app ha caricato nuovi dati.
- Se non si tratta di una notifica silenziosa, allora è una notizia, in modo da fare una notizia.
Assicurati di chiamare il gestore di completamento con il risultato onesto. Il sistema misura il consumo della batteria e il tempo che la tua app utilizza in background e potrebbe limitare la tua app, se necessario.
Questo è tutto quello che c’è da fare. Per testarlo, costruire ed eseguire, in primo piano l’applicazione e spingere il seguente payload tramite l’utilità PushNotifications:
{ "aps": { "content-available": 1 }}
Se tutto va bene, non dovrebbe accadere nulla, a meno che non sia stato appena aggiunto un nuovo podcast al database remoto. Per confermare che il codice è stato eseguito come previsto, impostare un punto di interruzione in application(_:didReceiveRemoteNotification:fetchCompletionHandler:)
e passare attraverso di esso dopo l’invio della notifica.
Dove andare da qui?
Congratulazioni! Hai completato questo tutorial e reso WenderCast un’applicazione completa con notifiche push!
È possibile scaricare il progetto completato utilizzando il pulsante Scarica materiali nella parte superiore o inferiore di questo tutorial.
Vuoi approfondire tutto ciò che puoi fare con le notifiche push, come la creazione di interfacce utente personalizzate e l’invio di avvisi critici? Le nostre notifiche push di Tutorial libro vi insegnerà le funzionalità avanzate di notifiche push.
Un’altra risorsa è il tutorial sulle notifiche push per iOS: Rich Push Notifications tutorial.
Anche se le notifiche push sono una parte importante delle app moderne, è anche molto comune che gli utenti rifiutino le autorizzazioni per la tua app se esageri con le notifiche. Ma con un design accurato, le notifiche push possono far tornare i tuoi utenti alla tua app ancora e ancora!
Questo gatto ha ricevuto una notifica push che la sua cena era pronta!
Spero che ti sia piaciuto questo tutorial sulle notifiche push. Se avete domande, sentitevi liberi di lasciarli nel forum di discussione qui sotto.
raywenderlich.com Settimanale
Il raywenderlich.com newsletter è il modo più semplice per rimanere up-to-date su tutto quello che c’è da sapere come uno sviluppatore mobile.
Ottieni un digest settimanale dei nostri tutorial e corsi e ricevi un corso e-mail approfondito gratuito come bonus!
Valutazione media
4.9 / 5
Aggiungi una valutazione per questo contenuto
Accedi per aggiungere una valutazione