Apple a introdus cadrul CloudKit împreună cu iOS 8 în 2014. În timp ce scopul său principal era de a acționa ca o bază de date online pentru aplicații iOS, CloudKit oferă de asemenea multe alte caracteristici, inclusiv notificări push.
În acest tutorial, vă voi arăta cum să utilizați cadrul CloudKit pentru a implementa notificări push pentru aplicațiile dvs. iOS. Dacă doriți să aflați mai multe despre celelalte funcții pe care le oferă CloudKit, puteți citi tutorialul meu care acoperă elementele de bază ale cadrului:
Acest tutorial vă cere să utilizați cel puțin Xcode 8 cu Swift 3. De asemenea, va trebui să aveți un dispozitiv fizic iOS pentru a testa și un cont de dezvoltator Apple, astfel încât să puteți activa CloudKit pentru aplicația dvs..
În primul rând, vom examina avantajele (și dezavantajele) utilizării CloudKit pentru notificările push pentru aplicația dvs..
După cum veți vedea în acest tutorial, pentru a stabili notificări push cu CloudKit, nu trebuie să vă faceți griji cu privire la crearea de certificate și profiluri de provizionare, ca și în cazul altor servicii cloud. Din moment ce totul este făcut de Apple, tot ce trebuie să faceți este să activați CloudKit pentru aplicația dvs., iar restul funcționează.
Unul dintre cele mai bune lucruri despre CloudKit pentru unii dezvoltatori este cât de mult obțineți gratuit. Multe alte companii Backend-as-a-Service (BaaS) există și oferă notificări push pentru aplicațiile iOS, însă majoritatea acestora au limite privind numărul de notificări care pot fi trimise gratuit. Cu CloudKit, nu există nici o limită a numărului de notificări push pe care le puteți trimite utilizatorilor. Cu toate acestea, nivelul liber al CloudKit nu limitează stocarea datelor, transferul de date și numărul de solicitări de utilizatori pe secundă.
Un alt avantaj al utilizării CloudKit în aplicațiile dvs. este că, fiind furnizat de Apple, stabilitatea și întreținerea rețelei vor fi ceva ce nu va trebui să vă faceți griji. Întreruperile serviciului Apple apar foarte rar și sunt reparate cu promptitudine. Acest lucru înseamnă că vă puteți baza pe CloudKit pentru a funcționa întotdeauna în mod corespunzător pentru utilizatorii dvs..
Cu toate acestea, un dezavantaj pe care ar trebui să îl cunoașteți atunci când utilizați CloudKit este că acesta nu este disponibil în prezent pe platforme non-Apple. Aceasta înseamnă că, dacă doriți să creați o versiune Android a aplicației dvs., CloudKit nu va funcționa. Pentru o soluție cross-platform, aș recomanda un alt BaaS, cum ar fi back4app (construit pe Parse) pe care îl discut în acest tutorial:
Pentru a începe, creați un nou proiect în Xcode din iOS> Application> Application Single View șablon.
Odată ce Xcode ți-a creat proiectul, du-te la Navigator de proiect și faceți clic pe Capacități tab. Pe acest ecran, faceți clic pe comutatorul pentru a activa icloud și apoi activați CloudKit Caseta de bifat:
După ce ați activat CloudKit, puteți accesa acum tabloul de bord CloudKit pentru aplicația dvs..
Pentru a trimite notificări push către utilizatorii aplicației noastre, vom crea un a GlobalNotification tipul de înregistrare care va notifica toți utilizatorii atunci când este creată o nouă înregistrare de acest tip. În cazul în care Tipul de înregistrare secțiunea tabloului de bord CloudKit nu este deja deschisă pentru dvs. după conectare, dați clic pe acesta în bara laterală.
Pentru a crea un nou tip de înregistrare, faceți clic pe +în partea de sus a ecranului. Completați meniul după cum se arată în următoarea imagine:
Pentru acest tutorial, adăugăm doar un single conţinut domeniul pentru tipul de înregistrare, dar pentru propriile aplicații, puteți adăuga cât mai multe de care aveți nevoie.
Când ați terminat, faceți clic pe Salvați în colțul din dreapta jos.
Înapoi în Xcode, deschideți-vă AppDelegate.swift fișier și adăugați următoarele declarații de import în partea de sus a codului:
importați notificările de utilizator CloudKit
Acest cod va importa doar cadrele CloudKit și UserNotifications. Vom folosi UserNotifications pentru a gestiona atât permisiunile de notificare cât și notificările primite. Dacă doriți să aflați mai multe despre acest cadru, puteți citi tutorialul meu care îl acoperă aici:
Apoi, editați-vă AppDelegate
pentru a se conforma definiției clasei UNUserNotificationCenterDelegate
protocol:
clasa AppDelegate: UIResponder, UIApplicationDelegate, UNUserNotificationCenterDelegate ...
Acum trebuie să solicităm permisiunea de a afișa notificări. Pentru a face acest lucru, înlocuiți-vă aplicare (_: didFinishLaunchingWithOptions :)
cu următoarele metode:
func cerere (_ cerere: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Oricare]) -> Bool UNUserNotificationCenter.current ()) delegate = auto UNUserNotificationCenter.current () requestAuthorization (opțiuni:. ], completionHandler: autorizat, eroare dacă este autorizat application.registerForRemoteNotifications ()) return true
Cu acest cod, solicităm utilizatorului permisiunea de a afișa notificări și dacă acceptă, înregistrați aplicația pentru notificări push.
Acum, trebuie să punem în aplicare cerere (_: didRegisterForRemoteNotificationsWithDeviceToken :)
metodă. Adăugați următorul cod la adresa dvs. AppDelegate
clasă:
funcția (cerere: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) lăsați abonament = CKQuerySubscription (recordType: "GlobalNotification", predicat: NSPredicate (format: TRUEPREDICATE) optiuni :.firesOnRecordCreation) info = CKNotificationInfo = "O nouă notificare a fost postată!" info.shouldBadge = true info.soundName = "implicit" subscription.notificationInfo = info CKContainer.default () publicCloudDatabase.save (subscriere, completareHandler: abonament, eroare în cazul în care error == nil // A aparut o eroare )
Cu acest cod, vom crea mai întâi un CKQuerySubscription
obiect. Acest obiect de abonament este ceea ce îi spune lui CloudKit la ce ar trebui să trimită notificări. Când inițializăm acest abonament, includem următoarele:
Apoi vom crea o CKNotificationInfo
obiect, furnizați-i un anumit conținut și apoi alocați-l obiectului de abonament. CKNotificationInfo
Obiect este modul în care formatați notificarea push trimisă utilizatorilor dvs. În acest exemplu, îl configurăm cu următoarele proprietăți:
alertBody
de "O nouă notificare a fost postată!"
shouldBadge
valoarea Adevărat
. Acest lucru va face ca pictograma aplicației de pe ecranul de pornire să crească numărul acesteia pentru fiecare notificare care apare.soundName
de "Mod implicit"
. Acesta va folosi doar sunetul de notificare implicit pentru iOS pentru aplicația dvs. Dacă doriți să utilizați un sunet personalizat, va trebui să utilizați numele fișierului dvs. de sunet.desiredKeys
array cu o singură valoare. Pentru fiecare cheie pe care o includeți în această matrice, CloudKit va încărca valoarea corespunzătoare din înregistrarea care a declanșat notificarea și va include în dicționarul de informații al utilizatorului.În continuare, alocăm informațiile de notificare abonamentului, care este apoi salvat în baza de date publică CloudKit pentru aplicația dvs..
Pentru a putea vedea notificarea în timp ce aplicația dvs. rulează, adăugați următoarea metodă la clasa AppDelegate:
func userNotificationCenter (_ center: UNUserNotificationCenter, notificare willPresent: UNOotification, completareCompletionHandlerHandler: @escaping (UNNotificationPresentationOptions) -> Void) completionHandler ([alert, .sound]
Acest cod folosește cadrul UserNotifications pentru a afișa notificarea ca și cum aplicația dvs. nu ar funcționa deloc.
Înainte de a rula aplicația, va trebui să verificați dacă dispozitivul dvs. de testare este conectat la un cont iCloud accesând Setări. Dacă nu, va trebui să faceți acest lucru, deoarece API-urile CloudKit necesită conectarea utilizatorului curent.
Construiți și difuzați aplicația din Xcode și acceptați solicitarea aplicației dvs. de a afișa notificări. Odată ce ați făcut acest lucru, reveniți la tabloul de bord CloudKit pentru aplicația dvs. și dați clic pe Tipuri de abonamente în bara laterală stângă. Ar trebui să vedeți un abonament nou pentru GlobalNotification înregistrează cu un INTRODUCE declanșare:
Acum, tot ce a mai rămas pentru noi este să trimiteți o notificare! Încă în tabloul de bord CloudKit, faceți clic pe Zona implicită sub Datele publice în bara laterală stângă. Faceți clic fie pe + buton sau pe Un nou record pentru a crea un nou GlobalNotification record. Completați conţinut cu ce vrei și dă clic pe Salvați în colțul din dreapta jos.
După ce înregistrarea a fost salvată, ar trebui să vedeți imediat că notificarea apare pe dispozitivul dvs. de testare:
După cum ați văzut, puteți utiliza cu ușurință notificări push pentru aplicația dvs. iOS utilizând CloudKit. Configurarea este foarte simplă, având doar un număr mic de pași, iar API-urile furnizate permit orice notificări push care s-ar putea să aveți nevoie pentru aplicațiile dvs..
Ca întotdeauna, vă rugăm să aveți grijă să lăsați comentariile și feedback-ul dvs. în secțiunea de comentarii de mai jos. Și verificați câteva dintre celelalte cursuri și tutoriale ale iOS!