Apple heeft in 2014 naast Cloud 8 ook hun CloudKit-framework geïntroduceerd. Hoewel het hoofddoel was om te fungeren als een online database voor iOS-applicaties, biedt CloudKit ook veel andere functies, waaronder pushmeldingen.
In deze zelfstudie laat ik je zien hoe je het CloudKit-framework gebruikt om pushmeldingen voor je iOS-apps te implementeren. Als je meer wilt weten over de andere functies die CloudKit te bieden heeft, kun je mijn tutorial over de basis van het framework lezen:
Deze tutorial vereist dat je minimaal Xcode 8 gebruikt met Swift 3. Je moet ook een fysiek iOS-apparaat hebben om mee te testen en een Apple ontwikkelaarsaccount zodat je CloudKit voor je applicatie kunt inschakelen.
Eerst bekijken we de voordelen (en nadelen) van het gebruik van CloudKit voor de pushmeldingen van uw app.
Zoals u in deze zelfstudie zult zien, hoeft u geen push-meldingen in te stellen met CloudKit, maar hoeft u zich geen zorgen te maken over het maken van certificaten en provisioningprofielen zoals u met andere cloudservices doet. Aangezien alles door Apple is gemaakt, hoeft u alleen CloudKit voor uw app in te schakelen en de rest werkt gewoon.
Een van de beste dingen over CloudKit voor sommige ontwikkelaars is hoeveel u gratis krijgt. Veel andere Backend-as-a-Service (BaaS) -bedrijven bestaan en bieden pushmeldingen voor iOS-apps, maar de meeste hiervan hebben beperkingen voor het aantal meldingen dat gratis kan worden verzonden. Met CloudKit is er geen limiet op het aantal pushmeldingen dat u naar uw gebruikers kunt verzenden. De vrije laag van CloudKit beperkt echter de gegevensopslag, gegevensoverdracht en het aantal gebruikersverzoeken per seconde.
Een ander voordeel van het gebruik van CloudKit in uw apps is dat Apple, netwerkstabiliteit en onderhoud, u nooit zorgen hoeft te maken. Uitvallen van de Apple-service treden zeer zelden op en worden snel verholpen. Dit betekent dat u erop kunt vertrouwen dat CloudKit altijd goed werkt voor uw gebruikers.
Een nadeel dat u echter moet weten wanneer u CloudKit gebruikt, is dat het momenteel niet beschikbaar is op niet-Apple-platforms. Dat betekent dat CloudKit niet werkt als u een Android-versie van uw app wilt maken. Voor een platformonafhankelijke oplossing zou ik een andere BaaS zoals back4app (gebouwd op Parse) aanbevelen, zoals ik in deze tutorial bespreek:
Maak om te beginnen een nieuw project in Xcode vanuit de iOS> Toepassing> Toepassing enkele weergave sjabloon.
Zodra Xcode uw project heeft gemaakt, gaat u naar Project navigator en klik op de mogelijkheden tab. Klik in dit scherm op de schakelaar om in te schakelen iCloud en schakel vervolgens de CloudKit checkbox:
Nadat u CloudKit hebt ingeschakeld, kunt u nu naar het CloudKit-dashboard voor uw app gaan.
Om pushmeldingen naar de gebruikers van onze app te sturen, gaan we een GlobalNotification recordtype dat alle gebruikers op de hoogte brengt wanneer een nieuwe record van dit type wordt aangemaakt. Als het Recordtype gedeelte van het CloudKit-dashboard is na het inloggen nog niet open voor u, klik erop in de zijbalk.
Om een nieuw recordtype aan te maken, klikt u op de +knop aan de bovenkant van het scherm. Vul het menu in zoals getoond in de volgende screenshot:
Voor deze zelfstudie voegen we slechts één toe inhoud veld naar het recordtype, maar voor uw eigen toepassingen kunt u er zoveel toevoegen als u nodig hebt.
Als u klaar bent, klikt u op de Opslaan knop in de rechter benedenhoek.
Terug in Xcode, open je AppDelegate.swift bestand en voeg de volgende importinstructies toe bovenaan uw code:
importeer CloudKit gebruikersnota's importeren
Deze code importeert alleen het framework CloudKit en UserNotifications. We gaan UserNotifications gebruiken om zowel meldingsrechten als inkomende meldingen te beheren. Als u meer wilt weten over dit kader, kunt u mijn zelfstudie hier bespreken:
Bewerk vervolgens uw AppDelegate
klassendefinitie om het conform te maken met de UNUserNotificationCenterDelegate
protocol:
class AppDelegate: UIResponder, UIApplicationDelegate, UNUserNotificationCenterDelegate ...
Nu moeten we toestemming vragen om meldingen weer te geven. Om dit te doen, vervangt u uw applicatie (_: didFinishLaunchingWithOptions :)
methode met de volgende:
toepassing func (_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool UNUserNotificationCenter.current (). delegate = self UNUserNotificationCenter.current (). requestAuthorization (options: [.alert, .badge, .sound ], completionHandler: authorized, error in if authorized application.registerForRemoteNotifications ()) return true
Met deze code vragen we de gebruiker om toestemming om meldingen weer te geven. Als deze accepteren, registreert u de app voor pushmeldingen.
Nu moeten we het applicatie (_: didRegisterForRemoteNotificationsWithDeviceToken :)
methode. Voeg de volgende code toe aan uw AppDelegate
klasse:
toepassing func (_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) let subscription = CKQuerySubscription (recordType: "GlobalNotification", predicate: NSPredicate (format: "TRUEPREDICATE"), options: .firesOnRecordCreation) let info = CKNotificationInfo () info.alertBody = "Er is een nieuwe melding gepost!" info.shouldBadge = true info.soundName = "default" subscription.notificationInfo = info CKContainer.default (). publicCloudDatabase.save (abonnement, completionHandler: abonnement, foutmelding als fout == nihil // Abonnement succesvol opgeslagen else // Er is een fout opgetreden )
Met deze code maken we eerst een CKQuerySubscription
voorwerp. Dit abonnement-object vertelt CloudKit waar het meldingen voor moet verzenden. Bij het initialiseren van dit abonnement nemen we het volgende op:
Vervolgens maken we een CKNotificationInfo
object, geef het een bepaalde inhoud en wijs het toe aan het abonnementsobject. De CKNotificationInfo
object is hoe u de pushmelding formatteert die aan uw gebruikers wordt geleverd. In dit voorbeeld configureren we het met de volgende eigenschappen:
alertBody
van "Er is een nieuwe melding gepost!"
shouldBadge
waarde van waar
. Dit zorgt ervoor dat het app-pictogram op het startscherm het aantal verhoogt voor elke melding die binnenkomt.soundName
van "standaard"
. Hiermee wordt alleen het standaard iOS-meldingsgeluid voor uw app gebruikt. Als u een aangepast geluid wilt gebruiken, moet u de naam van uw geluidsbestand gebruiken.desiredKeys
array met een enkele waarde. Voor elke sleutel die u in deze array opneemt, laadt CloudKit de bijbehorende waarde uit de record die de melding heeft geactiveerd en neemt deze op in het gebruikersinformatiewoordenboek van de kennisgeving..Verderop kennen we de meldingsinformatie toe aan het abonnement, dat vervolgens wordt opgeslagen in de openbare CloudKit-database voor uw app.
Zodat u de melding kunt zien terwijl uw app actief is, voegt u de volgende methode toe aan uw AppDelegate-klasse:
func userNotificationCenter (_ center: UNUserNotificationCenter, willPresent notification: UNNotification, withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Void) completionHandler ([. alert, .sound])
Deze code gebruikt het UserNotifications-framework om uw melding weer te geven alsof uw app helemaal niet actief was.
Voordat u uw app uitvoert, moet u controleren of uw testapparaat is ingelogd op een iCloud-account door naar instellingen. Als dat niet het geval is, moet u dit doen omdat de CloudKit-API's vereisen dat de huidige gebruiker wordt aangemeld.
Bouw en voer je app uit Xcode uit en accepteer het verzoek van je app om meldingen weer te geven. Zodra je dat hebt gedaan, ga je terug naar het CloudKit-dashboard voor je app en klik je op Subscription Types in de linkerzijbalk. Je zou een nieuw abonnement moeten zien voor GlobalNotification records met een INSERT op gang brengen:
Nu hoeven we alleen maar een melding te verzenden! Klik nog steeds in het CloudKit-dashboard Standaardzone onder Publieke gegevens in de linkerzijbalk. Klik op de + knop of aan Nieuw record om een nieuw te maken GlobalNotification record. Vul de inhoud met wat je maar wilt en klik Opslaan in de rechter benedenhoek.
Zodra uw record is opgeslagen, ziet u de melding meteen verschijnen op uw testapparaat:
Zoals je hebt gezien, kun je gemakkelijk pushmeldingen voor je iOS-app implementeren met behulp van CloudKit. De installatie is heel eenvoudig, met slechts een klein aantal stappen, en de geleverde API's staan alle pushmeldingen toe die je nodig hebt voor je apps.
Laat zoals altijd uw opmerkingen en feedback achter in de opmerkingen hieronder. En bekijk enkele van onze andere iOS-cursussen en tutorials!