Come utilizzare CloudKit di Apple per le notifiche push

introduzione

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:

  • Un'introduzione a CloudKit

    In questo tutorial, imparerai come configurare CloudKit per un'applicazione iOS. Lungo la strada, acquisirai familiarità con il dashboard di CloudKit, il ...
    Davis Allie
    iOS 8

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.

1. Perché utilizzare CloudKit?

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:

2. Impostazione di CloudKit

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.

3. Impostazione dell'app

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:

  • Introduzione al framework UserNotifications

    In questo tutorial, imparerai a conoscere il nuovo framework UserNotifications in iOS 10, tvOS 10 e watchOS 3. Questo nuovo framework fornisce un set moderno di ...
    Davis Allie
    iOS

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:

  • Il nome del tipo di record da monitorare.
  • Un predicato che può essere utilizzato per limitare la sottoscrizione a particolari record del tipo specificato. In questo tutorial, vogliamo iscriverti a tutti GlobalNotification registra così passiamo in un predicato che è sempre vero.
  • Uno o più trigger che comunicano a CloudKit quando deve essere inviata una notifica. In questo esempio, vogliamo solo una notifica quando viene creato un nuovo record. Altri trigger validi includono quando un record viene aggiornato o cancellato.

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à:

  • Un alertBody di "È stata pubblicata una nuova notifica!"
  • UN shouldBadge valore di vero. Ciò farà sì che l'icona dell'app nella schermata iniziale aumenti il ​​suo numero per ogni notifica ricevuta.
  • UN 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.
  • UN 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:

4. Invio di una notifica

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:

Conclusione

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!

  • Novità di iOS 10

    Con ogni nuova versione di iOS, Apple introduce un sacco di nuove funzionalità e miglioramenti all'esperienza degli sviluppatori. Questi sono particolarmente eccitanti per il ...
    Markus Mühlberger
    iOS
  • Crea estensioni SiriKit in iOS 10

    iOS 10 ha finalmente aperto Siri a app di terze parti. In questo tutorial, ti mostrerò come puoi sfruttare le capacità di Siri e integrare la voce ...
    Patrick Balestra
    SDK iOS
  • iOS 10: estensioni del servizio di notifica

    Quando si riceve una notifica in un'app iOS, è possibile scaricare il contenuto in risposta ad esso o modificarne il contenuto prima che venga mostrato all'utente. In questo…
    Davis Allie
    iOS 10
  • Notifiche push Easy iOS con back4app

    In questo tutorial, imparerai come implementare facilmente le notifiche push per le app iOS utilizzando back4app come servizio di back-end. Questo tutorial copre il ...
    Davis Allie
    SDK iOS