Apple introducerade sina CloudKit-ramar tillsammans med iOS 8 2014. Medan dess huvudsakliga syfte var att fungera som en online-databas för iOS-applikationer, erbjuder CloudKit också många andra funktioner, inklusive push-notifieringar.
I den här handledningen kommer jag att visa dig hur du använder CloudKit-ramen för att implementera push-meddelanden för dina iOS-appar. Om du vill lära dig mer om de andra funktionerna CloudKit har att erbjuda, kan du läsa min handledning som täcker grunderna i ramverket:
Denna handledning kräver att du använder minst Xcode 8 med Swift 3. Du måste också ha en fysisk iOS-enhet för att testa med och ett Apple Developer-konto så att du kan aktivera CloudKit för din ansökan.
Först ska vi titta på fördelarna (och nackdelarna) med att använda CloudKit för appens push-meddelanden.
Som du kommer att se i denna handledning, för att skapa push-meddelanden med CloudKit behöver du inte oroa dig för att skapa certifikat och provisioning-profiler som du gör med andra molntjänster. Eftersom allt är gjort av Apple, behöver du bara aktivera CloudKit för din app och resten fungerar bara.
En av de bästa sakerna med CloudKit för vissa utvecklare är hur mycket du får gratis. Många andra Backend-as-a-Service-företag (BaaS) finns och erbjuder push-meddelanden för iOS-appar, men de flesta av dessa har gränser för hur många meddelanden som kan skickas gratis. Med CloudKit finns det ingen gräns för antalet push-meddelanden som du kan skicka till dina användare. CloudKits kostnadsfria nivå begränsar dock datalagring, dataöverföring och antalet användarförfrågningar per sekund.
En annan fördel med att använda CloudKit i dina appar är att Apple, nätverksstabilitet och underhåll kommer att vara något du aldrig behöver oroa dig för. Apple-serviceavbrott inträffar mycket sällan och löses snabbt. Det betyder att du kan lita på CloudKit för att alltid fungera korrekt för dina användare.
En nackdel du borde vara medveten om när du använder CloudKit är att den inte är tillgänglig för närvarande på några plattformar utan Apple. Det betyder att om du vill skapa en Android-version av din app fungerar CloudKit inte. För en plattformslösning rekommenderar jag en annan BaaS som back4app (byggd på Parse) som jag diskuterar i denna handledning:
Börja skapa ett nytt projekt i Xcode från iOS> Applikation> Enkel visningsprogram mall.
När Xcode har skapat ditt projekt, gå till Projektnavigator och klicka på Förmågor flik. Klicka på knappen för att aktivera den här skärmen icloud och aktivera sedan CloudKit checkbox:
När du har aktiverat CloudKit kan du nu gå till CloudKit-instrumentpanelen för din app.
För att skicka push-meddelanden till våra app användare, kommer vi att skapa en GlobalNotification posttyp som meddelar alla användare när en ny post av denna typ skapas. Om Inspelningstyp delen av CloudKit instrumentpanel är inte öppen redan för dig efter att du loggat in, klicka på den i sidofältet.
För att skapa en ny posttyp klickar du på +knappen längst upp på skärmen. Fyll i menyn som visas i följande skärmdump:
För denna handledning lägger vi bara till en singel innehåll fält till posttypen, men för dina egna applikationer kan du lägga till så många som du behöver.
När du är klar klickar du på Spara knappen i nedre högra hörnet.
Tillbaka i Xcode, öppna din AppDelegate.swift fil och lägg till följande importmeddelanden längst upp i koden:
importera CloudKit import UserNotifications
Den här koden importerar bara CloudKit och UserNotifications-ramarna. Vi ska använda UserNotifications för att hantera både anmälningsbehörigheter och inkommande meddelanden. Om du vill lära dig mer om denna ram kan du läsa min handledning som täcker den här:
Därefter redigerar du AppDelegate
klassdefinition för att få den att överensstämma med UNUserNotificationCenterDelegate
protokoll:
klass AppDelegate: UIResponder, UIApplicationDelegate, UNUserNotificationCenterDelegate ...
Nu måste vi begära tillåtelse att visa meddelanden. För att göra det, ersätt din applikations (_: didFinishLaunchingWithOptions :)
metod med följande:
func application (_ ansökan: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool UNUserNotificationCenter.current (). delegate = self UNUserNotificationCenter.current (). requestAuthorization (alternativ: [.alert, .badge, .sound ], completionHandler: auktoriserad, fel i om auktoriserad application.registerForRemoteNotifications ()) returnera true
Med den här koden ber vi användaren om tillstånd att visa meddelanden och om de accepterar registrerar du appen för push-meddelanden.
Nu måste vi genomföra ansökan (_: didRegisterForRemoteNotificationsWithDeviceToken :)
metod. Lägg till följande kod till din AppDelegate
klass:
func application (_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) let abonnemang = CKQuerySubscription (recordType: "GlobalNotification", predikat: NSPredicate (format: "TRUEPREDICATE"), alternativ: .firesOnRecordCreation) låt info = CKNotificationInfo () info.alertBody = "En ny anmälan har skrivits!" info.shouldBadge = true info.soundName = "default" subscription.notificationInfo = info CKContainer.default (). publicCloudDatabase.save (prenumeration, completionHandler: prenumeration, fel i om fel == nil // Prenumeration sparad framgångsrikt annat // Ett fel uppstod )
Med den här koden skapar vi först en CKQuerySubscription
objekt. Detta prenumerationsobjekt är vad som berättar CloudKit vad det ska skicka meddelanden för. När du initialiserar den här prenumerationen inkluderar vi följande:
Nästa skapar vi en CKNotificationInfo
objekt, ge det lite innehåll och tilldela det sedan till prenumerationsobjektet. De CKNotificationInfo
Objektet är hur du formaterar push-meddelandet som levereras till dina användare. I det här exemplet konfigurerar vi det med följande egenskaper:
alertBody
av "En ny anmälan har skrivits!"
shouldBadge
värdet av Sann
. Detta kommer att få appikonen på startskärmen att öka sitt nummer för varje meddelande som kommer in.soundName
av "standard"
. Detta kommer bara att använda standard iOS-meddelandeljudet för din app. Om du vill använda ett anpassat ljud måste du använda namnet på din ljudfil.desiredKeys
array med ett enda värde. För varje nyckel som du inkluderar i denna array, kommer CloudKit att ladda motsvarande värde från den post som utlöste meddelandet och inkludera det i anmälarens användarinformationsordlista.Vidare lägger vi till anmälningsinformationen till prenumerationen, som sedan sparas i den offentliga CloudKit-databasen för din app.
Så att du kan se meddelandet medan appen körs lägger du till följande metod i din AppDelegate-klass:
func userNotificationCenter (_ center: UNUserNotificationCenter, willPresent notification: UNNotification, withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Radera) completionHandler ([. alert, .ound])
Den här koden använder användarinformationsramen för att visa din anmälan som om din app inte körde alls.
Innan du kör din app måste du kontrollera om din testenhet är inloggad på ett iCloud-konto genom att gå till inställningar. Om inte, måste du göra det eftersom CloudKit API: er kräver att den nuvarande användaren är inloggad.
Bygg och kör din app från Xcode och acceptera din apps begäran om att visa meddelanden. När du har gjort det, gå tillbaka till CloudKit instrumentpanelen för din app och klicka på Prenumerationstyper i den vänstra sidofältet. Du borde se en ny prenumeration för GlobalNotification poster med en FÖRA IN trigger:
Nu är allt som är kvar för oss att göra, att skicka en anmälan! Fortsätt i CloudKit-instrumentpanelen, klicka på Standardzon under Allmänna data i den vänstra sidofältet. Klicka på antingen på + knappen eller på Nytt rekord att skapa en ny GlobalNotification spela in. Fyll i innehåll med vad du vill och klicka Spara i nedre högra hörnet.
När din post har sparats bör du se att meddelandet visas genast på din testenhet:
Som du har sett kan du enkelt implementera push-meddelanden för din iOS-app med CloudKit. Inställningen är väldigt enkel, med bara ett fåtal steg, och de tillhandahållna API: erna möjliggör eventuella push-meddelanden som du kan behöva för dina appar.
Som alltid, var noga med att lämna dina kommentarer och feedback i kommentarfältet nedan. Och kolla in några av våra andra iOS-kurser och handledning!