Apple ha presentato il suo framework CloudKit insieme a iOS 8 nel 2014. Sebbene lo scopo principale fosse quello di fungere da database online per le applicazioni iOS, CloudKit offre anche molte altre funzionalità, tra cui le notifiche push.
In questo tutorial, ti mostrerò come utilizzare il framework CloudKit per implementare le notifiche push per le tue app iOS. Se vuoi saperne di più sulle altre funzionalità offerte da CloudKit, puoi leggere il mio tutorial che illustra le basi del framework:
Questo tutorial richiede che tu stia utilizzando almeno Xcode 8 con Swift 3. Avrai anche bisogno di un dispositivo iOS fisico con cui testare e un account sviluppatore Apple in modo da poter abilitare CloudKit per la tua applicazione.
Innanzitutto, esamineremo i vantaggi (e gli svantaggi) dell'utilizzo di CloudKit per le notifiche push della tua app.
Come vedrai in questo tutorial, per configurare le notifiche push con CloudKit, non devi preoccuparti di creare certificati e profili di provisioning come con altri servizi cloud. Dato che tutto è fatto da Apple, tutto ciò che devi fare è abilitare CloudKit per la tua app, e il resto funziona.
Una delle cose migliori di CloudKit per alcuni sviluppatori è quanto ottieni gratis. Esistono molte altre società di Backend-as-a-Service (BaaS) e offrono notifiche push per le app iOS, ma la maggior parte di esse ha dei limiti sul numero di notifiche che possono essere inviate gratuitamente. Con CloudKit, non c'è limite al numero di notifiche push che puoi inviare ai tuoi utenti. Tuttavia, il livello gratuito di CloudKit limita la memorizzazione dei dati, il trasferimento dei dati e il numero di richieste degli utenti al secondo.
Un altro vantaggio dell'utilizzo di CloudKit nelle tue app è che, essendo forniti da Apple, la stabilità e la manutenzione della rete saranno qualcosa di cui non dovrai mai preoccuparti. Le interruzioni del servizio Apple si verificano molto raramente e vengono risolte tempestivamente. Ciò significa che puoi fare affidamento su CloudKit per funzionare sempre correttamente per i tuoi utenti.
Tuttavia, uno svantaggio di cui dovresti essere a conoscenza quando utilizzi CloudKit è che non è attualmente disponibile su piattaforme non Apple. Ciò significa che se vuoi creare una versione Android della tua app, CloudKit non funzionerà. Per una soluzione multipiattaforma, consiglierei un altro BaaS come back4app (costruito su Parse) come discuto in questo tutorial:
Per iniziare, crea un nuovo progetto in Xcode da iOS> Applicazione> Applicazione vista singola modello.
Una volta che Xcode ha creato il tuo progetto, vai su Navigatore di progetto e fare clic su funzionalità scheda. In questa schermata, fai clic sul pulsante per abilitare iCloud e quindi abilitare il CloudKit casella di controllo:
Una volta abilitato CloudKit, puoi ora accedere alla dashboard di CloudKit per la tua app.
Per inviare notifiche push agli utenti della nostra app, creeremo a GlobalNotification tipo di registrazione che notificherà a tutti gli utenti quando viene creato un nuovo record di questo tipo. Se la Tipo di registrazione la sezione del dashboard di CloudKit non è già aperta per te dopo aver effettuato l'accesso, fai clic su di essa nella barra laterale.
Per creare un nuovo tipo di record, fare clic su +pulsante nella parte superiore dello schermo. Compila il menu come mostrato nello screenshot seguente:
Per questo tutorial, stiamo aggiungendo solo un singolo soddisfare campo al tipo di record, ma per le proprie applicazioni, è possibile aggiungere tutte le occorrenze necessarie.
Quando hai finito, fai clic su Salvare pulsante nell'angolo in basso a destra.
Di nuovo in Xcode, apri il tuo AppDelegate.swift file e aggiungi le seguenti istruzioni di importazione nella parte superiore del tuo codice:
importare CloudKit import UserNotifications
Questo codice importerà solo i framework CloudKit e UserNotifications. Utilizzeremo UserNotifications per gestire sia le autorizzazioni di notifica che le notifiche in arrivo. Se vuoi saperne di più su questo framework, puoi leggere il mio tutorial coprendolo qui:
Quindi, modifica il tuo AppDelegate
definizione della classe per renderla conforme al UNUserNotificationCenterDelegate
protocollo:
class AppDelegate: UIResponder, UIApplicationDelegate, UNUserNotificationCenterDelegate ...
Ora dobbiamo richiedere l'autorizzazione per mostrare le notifiche. Per fare ciò, sostituisci il tuo applicazione (_: didFinishLaunchingWithOptions :)
metodo con il seguente:
func application (_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool UNUserNotificationCenter.current (). delegate = self UNUserNotificationCenter.current (). requestAuthorization (opzioni: [.alert, .badge, .sound ], completionHandler: autorizzato, errore in se autorizzato application.registerForRemoteNotifications ()) restituisce true
Con questo codice, chiediamo all'utente l'autorizzazione per mostrare le notifiche e, se accettano, registra l'app per le notifiche push.
Ora, abbiamo bisogno di implementare il applicazione (_: didRegisterForRemoteNotificationsWithDeviceToken :)
metodo. Aggiungi il seguente codice al tuo AppDelegate
classe:
func application (_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) let subscription = CKQuerySubscription (recordType: "GlobalNotification", predicato: NSPredicate (formato: "TRUEPREDICATE"), opzioni: .firesOnRecordCreation) let info = CKNotificationInfo () info.alertBody = "È stata pubblicata una nuova notifica!" info.shouldBadge = true info.soundName = "default" subscription.notificationInfo = informazioni CKContainer.default (). publicCloudDatabase.save (subscription, completionHandler: subscription, error in error == nil // Subscription saved successfully else // Si è verificato un errore )
Con questo codice, per prima cosa creiamo un CKQuerySubscription
oggetto. Questo oggetto di abbonamento è ciò che dice a CloudKit per cosa deve inviare le notifiche. Quando inizializzi questo abbonamento, includiamo quanto segue:
Quindi creiamo a CKNotificationInfo
oggetto, fornirgli un contenuto e quindi assegnarlo all'oggetto di abbonamento. Il CKNotificationInfo
l'oggetto è come si formatta la notifica push che viene consegnata ai propri utenti. In questo esempio, lo stiamo configurando con le seguenti proprietà:
alertBody
di "È stata pubblicata una nuova notifica!"
shouldBadge
valore di vero
. Ciò farà sì che l'icona dell'app nella schermata iniziale aumenti il suo numero per ogni notifica ricevuta.NomeSuono
di "predefinito"
. Verrà utilizzato il suono di notifica iOS predefinito per la tua app. Se si desidera utilizzare un suono personalizzato, sarà necessario utilizzare il nome del file audio.desiredKeys
array con un singolo valore. Per ogni chiave inclusa in questo array, CloudKit caricherà il valore corrispondente dal record che ha attivato la notifica e lo includerà nel dizionario delle informazioni dell'utente della notifica.Più in basso, assegniamo le informazioni di notifica alla sottoscrizione, che viene quindi salvata nel database CloudKit pubblico per la tua app.
Per poter visualizzare la notifica mentre la tua app è in esecuzione, aggiungi il seguente metodo alla tua classe AppDelegate:
func userNotificationCenter (_ center: UNUserNotificationCenter, willPresent notification: UNNotification, withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Void) completionHandler ([. alert, .sound])
Questo codice utilizza il framework UserNotifications per mostrare la tua notifica come se la tua app non fosse affatto in esecuzione.
Prima di eseguire la tua app, dovrai verificare se il tuo dispositivo di test è connesso a un account iCloud andando a impostazioni. In caso contrario, sarà necessario farlo perché le API di CloudKit richiedono l'accesso dell'utente corrente.
Crea ed esegui la tua app da Xcode e accetta la richiesta della tua app per mostrare le notifiche. Dopo averlo fatto, torna alla dashboard di CloudKit per la tua app e fai clic su Tipi di abbonamento nella barra laterale di sinistra. Dovresti vedere un nuovo abbonamento per GlobalNotification registra con un INSERIRE trigger:
Ora, tutto ciò che resta da fare è inviare una notifica! Sempre nella dashboard CloudKit, fare clic su Zona di Default sotto Dati pubblici nella barra laterale di sinistra. Fare clic su + pulsante o acceso Nuovo record per creare un nuovo GlobalNotification disco. Compila il soddisfare con quello che vuoi e clicca Salvare nell'angolo in basso a destra.
Una volta che il tuo record è stato salvato, dovresti vedere la notifica apparire immediatamente sul tuo dispositivo di test:
Come hai visto, puoi facilmente implementare notifiche push per la tua app iOS utilizzando CloudKit. La configurazione è molto semplice, con solo pochi passaggi e le API fornite consentono qualsiasi notifica push che potrebbe essere necessaria per le tue app.
Come sempre, si prega di essere sicuri di lasciare i vostri commenti e feedback nella sezione commenti qui sotto. E dai un'occhiata ad altri nostri corsi ed esercitazioni iOS!