Så här använder du Apples CloudKit för push-meddelanden

Introduktion

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:

  • En introduktion till CloudKit

    I den här handledningen lär du dig hur du konfigurerar CloudKit för en iOS-applikation. På vägen kommer du att bli bekant med CloudKit instrumentbräda, ...
    Davis Allie
    iOS 8

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.

1. Varför använda CloudKit?

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:

2. Ställa in CloudKit

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.

3. Installera App

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:

  • En introduktion till UserNotifications Framework

    I denna handledning kommer du att lära dig om det nya UserNotifications-ramverket i iOS 10, tvOS 10 och watchOS 3. Den här nya ramen ger en modern uppsättning av ...
    Davis Allie
    iOS

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:

  • Namnet på den inspelningstyp som ska övervakas.
  • Ett predikat som kan användas för att begränsa abonnemanget till särskilda poster av din specificerade typ. I den här handledningen vill vi prenumerera på alla GlobalNotification poster så vi passerar i ett predikat som alltid är sant.
  • En eller flera utlösare berättar om CloudKit när en anmälan ska skickas. I det här exemplet behöver vi bara en anmälan när en ny post skapas. Andra giltiga utlösare inkluderar när en post uppdateras eller raderas.

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:

  • En alertBody av "En ny anmälan har skrivits!"
  • en shouldBadge värdet av Sann. Detta kommer att få appikonen på startskärmen att öka sitt nummer för varje meddelande som kommer in.
  • en 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.
  • en 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:

4. Skicka en anmälan

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:

Slutsats

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!

  • Vad är nytt i iOS 10

    Med varje ny version av iOS presenterar Apple ett gäng nya funktioner och förbättringar till utvecklaren. Dessa är speciellt spännande för ...
    Markus Mühlberger
    iOS
  • Skapa SiriKit Extensions i IOS 10

    iOS 10 har äntligen öppnat Siri för tredjepartsprogram. I den här handledningen visar jag dig hur du kan utnyttja Siris funktioner och integrera röst ...
    Patrick Balestra
    iOS SDK
  • iOS 10: Notifikationstjänstförlängningar

    När du tar emot en anmälan i en iOS-app kanske du vill hämta innehåll som svar på det eller redigera innehållet innan det visas för användaren. I denna…
    Davis Allie
    iOS 10
  • Enkla iOS-push-meddelanden med back4app

    I den här handledningen lär du dig att enkelt implementera push-meddelanden för iOS-appar med hjälp av back4app som back-end-tjänst. Denna handledning täcker ...
    Davis Allie
    iOS SDK