Cum se utilizează CloudKit-ul Apple pentru notificări push

Introducere

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:

  • O introducere în CloudKit

    În acest tutorial, veți învăța cum să configurați CloudKit pentru o aplicație iOS. Pe parcurs, vă veți familiariza cu tabloul de bord CloudKit, ...
    Davis Allie
    iOS 8

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..

1. De ce folosiți CloudKit?

Î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:

2. Setarea CloudKit

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.

3. Configurarea aplicației

Î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:

  • O introducere în cadrul UserNotifications Framework

    În acest tutorial, veți afla despre noul cadru UserNotifications în iOS 10, tvOS 10 și watchOS 3. Acest nou cadru oferă un set modern de ...
    Davis Allie
    iOS

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:

  • Numele tipului de înregistrare de monitorizat.
  • Un predicat care poate fi folosit pentru a limita abonamentul la anumite înregistrări ale tipului specificat. În acest tutorial, dorim să vă abonați la toate GlobalNotification înregistrează astfel încât să trecem într-un predicat care este întotdeauna adevărat.
  • Unul sau mai mulți declanșatori spunând CloudKit când trebuie trimisă o notificare. În acest exemplu, dorim doar o notificare atunci când este creată o nouă înregistrare. Alte declanșatoare valide includ când o înregistrare este actualizată sau ștearsă.

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:

  • Un alertBody de "O nouă notificare a fost postată!"
  • A 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.
  • A 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.
  • A 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:

4. Trimiterea unei notificări

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:

Concluzie

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!

  • Ce este nou în iOS 10

    Cu fiecare versiune nouă a iOS, Apple introduce o grămadă de noi caracteristici și îmbunătățiri ale experienței dezvoltatorilor. Acestea sunt deosebit de incitante pentru ...
    Markus Mühlberger
    iOS
  • Creați extensii SiriKit în iOS 10

    iOS 10 a deschis în sfârșit Siri către aplicații terțe. În acest tutorial, vă voi arăta cum puteți influența capacitățile lui Siri și integrați vocea ...
    Patrick Balestra
    iOS SDK
  • iOS 10: Extensii de servicii de notificare

    Când primiți o notificare într-o aplicație iOS, este posibil să doriți să descărcați conținut ca răspuns la el sau să îl editați înainte de a fi afișat utilizatorului. In acest…
    Davis Allie
    iOS 10
  • Ușor de notificări iOS Push cu back4app

    În acest tutorial, veți afla cum să implementați cu ușurință notificări push pentru aplicații iOS utilizând back4app ca serviciu back-end. Acest tutorial acoperă ...
    Davis Allie
    iOS SDK
Cod