Apple introduserte sitt CloudKit-rammeverk sammen med iOS 8 i 2014. Mens hovedformålet var å fungere som en online database for iOS-applikasjoner, tilbyr CloudKit også mange andre funksjoner, inkludert push notifications.
I denne veiledningen vil jeg vise deg hvordan du bruker CloudKit-rammeverket for å implementere pushvarsler for iOS-appene dine. Hvis du vil lære mer om de andre funksjonene CloudKit har å tilby, kan du lese opplæringen min som dekker grunnleggende om rammen:
Denne opplæringen krever at du bruker minst Xcode 8 med Swift 3. Du må også ha en fysisk iOS-enhet til å teste med og en Apple-utvikler-konto slik at du kan aktivere CloudKit for søknaden din.
Først vil vi se på fordelene (og ulempene) ved å bruke CloudKit for appens push-varsler.
Som du vil se i denne opplæringen, for å sette opp meldinger med CloudKit, trenger du ikke å bekymre deg for å opprette sertifikater og provisjonsprofiler som du gjør med andre skygtjenester. Siden alt er laget av Apple, er alt du trenger å gjøre, aktivere CloudKit for appen din, og resten fungerer bare.
En av de beste tingene med CloudKit for noen utviklere er hvor mye du får gratis. Mange andre Backend-as-a-Service-selskaper (BaaS) eksisterer og tilbyr push-varsler for iOS-apper, men de fleste av disse har begrensninger på hvor mange meldinger som kan sendes gratis. Med CloudKit er det ingen grense for antall push varsler du kan sende til brukerne. CloudKits gratis nivå begrenser imidlertid datalagring, dataoverføring og antall brukerforespørsler per sekund.
En annen fordel ved å bruke CloudKit i appene dine er at Apple, nettverksstabilitet og vedlikehold, vil være noe du aldri trenger å bekymre deg for. Apple-servicebrudd forekommer svært sjelden og er rettet raskt. Dette betyr at du kan stole på CloudKit for alltid å fungere riktig for brukerne.
En ulempe du bør være oppmerksom på når du bruker CloudKit, er at den ikke er tilgjengelig for øyeblikket på noen plattformer uten Apple. Det betyr at CloudKit ikke fungerer hvis du vil lage en Android-versjon av appen din. For en kryssplattformløsning, vil jeg anbefale en annen BaaS som back4app (bygget på Parse) som jeg diskuterer i denne opplæringen:
For å starte, opprett et nytt prosjekt i Xcode fra iOS> Program> Enkeltvisningsprogram mal.
Når Xcode har opprettet prosjektet ditt, går du til Prosjektnavigator og klikk på Capabilities fane. På denne skjermen klikker du på bryteren for å aktivere iCloud og aktiver deretter CloudKit boksen:
Når du har aktivert CloudKit, kan du nå gå til CloudKit dashbordet for appen din.
For å sende push notifikasjoner til brukerne våre, skal vi lage en GlobalNotification posttype som vil varsle alle brukere når en ny post av denne typen er opprettet. Hvis Record Type delen av CloudKit dashbordet er ikke allerede åpen for deg etter at du har logget på, klikker du på den i sidefeltet.
Hvis du vil opprette en ny posttype, klikker du på +knappen øverst på skjermen. Fyll inn menyen som vist på følgende skjermbilde:
For denne opplæringen legger vi bare til en enkelt innhold feltet til posttypen, men for dine egne applikasjoner kan du legge til så mange som du trenger.
Når du er ferdig, klikk på Lagre knappen i nederste høyre hjørne.
Tilbake i Xcode, åpne opp din AppDelegate.swift fil og legg til følgende importerklæringer øverst på koden din:
importere CloudKit import UserNotifications
Denne koden vil bare importere rammer for CloudKit og UserNotifications. Vi skal bruke UserNotifications for å administrere både varslingsrettigheter og innkommende varsler. Hvis du vil lære mer om dette rammeverket, kan du lese veiledningen min som dekker det her:
Deretter redigerer du AppDelegate
klasse definisjon for å gjøre det i samsvar med UNUserNotificationCenterDelegate
protokoll:
klasse AppDelegate: UIResponder, UIApplicationDelegate, UNUserNotificationCenterDelegate ...
Nå må vi be om tillatelse til å vise varsler. For å gjøre det, erstatt din applikasjons (_: didFinishLaunchingWithOptions :)
metode med følgende:
Funk-applikasjon (_ søknad: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool UNUserNotificationCenter.current (). delegate = selv UNUserNotificationCenter.current (). requestAuthorization (alternativer: [.alert .badge, .sound ], completionHandler: autorisert, feil i hvis autorisert application.registerForRemoteNotifications ()) return true
Med denne koden ber vi brukeren om tillatelse til å vise varsler, og hvis de godtar, kan du registrere appen for push-varsler.
Nå må vi implementere søknad (_: didRegisterForRemoteNotificationsWithDeviceToken :)
metode. Legg til følgende kode i din AppDelegate
klasse:
func application (_ søknad: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) la abonnement = CKQuerySubscription (recordType: "GlobalNotification", predikat: NSPredicate (format: "TRUEPREDICATE"), alternativer: .firesOnRecordCreation) la info = CKNotificationInfo () info.alertBody = "Et nytt varsel er lagt ut!" info.shouldBadge = sann info.soundName = "default" subscription.notificationInfo = info CKContainer.default (). publicCloudDatabase.save (abonnement, fullføringHandler: abonnement, feil i hvis feil == nil // Abonnement lagret vellykket else // En feil oppstod )
Med denne koden, oppretter vi først en CKQuerySubscription
gjenstand. Dette abonnementsobjektet er hva som forteller CloudKit hva det skal sende varsler om. Når du initialiserer dette abonnementet, inkluderer vi følgende:
Deretter lager vi en CKNotificationInfo
objekt, gi det litt innhold, og tilordne det til abonnementsobjektet. De CKNotificationInfo
Objektet er hvordan du formaterer pushvarselet som er levert til brukerne. I dette eksemplet konfigurerer vi det med følgende egenskaper:
alertBody
av "Et nytt varsel er lagt ut!"
shouldBadge
verdien av ekte
. Dette vil føre til at appikonet på startskjermen øker tallet for hvert varsel som kommer inn.soundName
av "misligholde"
. Dette vil bare bruke standard iOS-varslingslyden for appen din. Hvis du vil bruke en egendefinert lyd, må du bruke navnet på lydfilen din.desiredKeys
array med en enkelt verdi. For hver nøkkel du inkluderer i denne gruppen, vil CloudKit laste den tilsvarende verdien fra posten som utløste varselet og inkludere det i varselens brukerinformasjon ordbok.Videre ned, tilordner vi varslingsinformasjonen til abonnementet, som deretter lagres i den offentlige CloudKit-databasen for appen din.
Slik at du kan se varselet mens appen din kjører, legger du til følgende metode i AppDelegate-klassen din:
func userNotificationCenter (_ senter: UNUserNotificationCenter, willPresent melding: UNNotification, withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Gratulerer) completionHandler ([.varsel, .ound])
Denne koden bruker brukernotifikasjonsrammen for å vise varselet ditt som om appen din ikke kjørte i det hele tatt.
Før du kjører appen din, må du sjekke om testenheten din er logget inn i en iCloud-konto ved å gå til innstillinger. Hvis ikke, må du gjøre det fordi CloudKit-API-ene krever at brukeren er innlogget.
Bygg og kjør appen din fra Xcode og godta appens forespørsel om å vise varsler. Når du har gjort det, gå tilbake til CloudKit dashbordet for appen din og klikk på Abonnementstyper i venstre sidefelt. Du bør se et nytt abonnement for GlobalNotification poster med en SETT INN avtrekker:
Nå er alt som er igjen for oss å gjøre, å sende et varsel! Fortsett i CloudKit-dashbordet, klikk på Standard sone under Offentlige data i venstre sidefelt. Klikk enten på + knappen eller på Ny rekord å opprette en ny GlobalNotification ta opp. Fyll ut innhold med hva du vil og klikk Lagre i nederste høyre hjørne.
Når oppføringen din er lagret, bør du se varselet vises umiddelbart på testenheten din:
Som du har sett, kan du enkelt implementere pushvarsler for din iOS-app ved hjelp av CloudKit. Oppsettet er veldig enkelt, med bare et lite antall trinn, og de angitte APIene tillater eventuelle pushvarsler du måtte trenge for appene dine.
Som alltid, vær så snill å legge igjen dine kommentarer og tilbakemeldinger i kommentarfeltet nedenfor. Og sjekk ut noen av våre andre iOS-kurs og opplæringsprogrammer!