iOS
Send Push Notifications
Push-Benachrichtigungen mit Cloud Code und Swift einrichten
28 min
push benachrichtigungen mit cloud code in swift senden einführung in diesem abschnitt wird erklärt, wie sie push benachrichtigungen mithilfe von cloud code über back4app senden können so wird es aussehen jederzeit können sie auf das vollständige projekt zugreifen, das mit diesem tutorial in unserem github repository um dieses schnellstartprojekt abzuschließen, benötigen sie xcode eine app, die bei back4app erstellt wurde befolgen sie das tutorial für neue parse apps , um zu lernen, wie man eine parse app bei back4app erstellt eine ios app, die mit back4app verbunden ist hinweis befolgen sie das tutorial zur installation des parse sdk (swift) , um ein xcode projekt zu erstellen, das mit back4app verbunden ist eine ios app, die über back4app push benachrichtigungen über das dashboard tutorial eingerichtet wurde ein ios gerät, iphone oder ipad, das ios 10 oder neuer ausführt ein kostenpflichtiges apple entwicklerkonto 1 richten sie ihre ios app ein, um push benachrichtigungen zu empfangen jede parse anwendung, die auf einem gerät installiert ist, das für push benachrichtigungen registriert ist, hat ein zugehöriges installations installations objekt das installations installations objekt ist der ort, an dem sie alle daten speichern, die benötigt werden, um push benachrichtigungen zu zielen zum beispiel könnten sie in ihrer app speichern, für welche teams einer ihrer benutzer interessiert ist, um updates über deren leistung zu senden das speichern des installations installations objekts ist auch erforderlich, um pushbezogene app öffnungsereignisse zu verfolgen der einfachste weg, um mit dem versenden von benachrichtigungen zu beginnen, ist die verwendung von kanälen dies ermöglicht es ihnen, ein publisher subscriber modell für das versenden von push benachrichtigungen zu verwenden geräte beginnen damit, sich für einen oder mehrere kanäle anzumelden, und benachrichtigungen können später an diese abonnenten gesendet werden die kanäle, für die sich ein bestimmter installation installation angemeldet hat, werden im channels channels feld des installation installation objekts gespeichert danach werden wir das versenden von gezielten push benachrichtigungen an einen einzelnen benutzer oder an eine gruppe von benutzern basierend auf einer abfrage durchgehen in zukunft gehen wir davon aus, dass sie alle schritte des back4app push notifications über das dashboard tutorial , auch wenn sie das ios projekt verwenden, das mit diesem tutorial verfügbar ist, das sich in unserem github repository sie sollten grundlegende push benachrichtigungen zum laufen bringen und auch in der lage sein, push benachrichtigungen über die administrationskonsole zu senden 2 abonnieren sie ihr gerät für den nachrichtenkanal zuerst fügen wir ihrem installationsobjekt einen kanal hinzu wir werden dies tun, indem wir die methode createinstallationonparse createinstallationonparse in unserer app delegate datei ändern öffnen sie die appdelegate m datei appdelegate m datei , und stellen sie sicher, dass ihre version von createinstallationonparse createinstallationonparse mit dem untenstehenden code übereinstimmt appdelegate swift 1 func createinstallationonparse(devicetokendata\ data){ 2 if let installation = pfinstallation current(){ 3 installation setdevicetokenfrom(devicetokendata) 4 installation setobject(\["news"], forkey "channels") 5 installation saveinbackground { 6 (success bool, error error?) in 7 if (success) { 8 print("you have successfully saved your push installation to back4app!") 9 } else { 10 if let myerror = error{ 11 print("error saving parse installation \\(myerror localizeddescription)") 12 }else{ 13 print("uknown error") 14 } 15 } 16 } 17 } 18 } wir fügen eine neue codezeile hinzu ‘installation setobject(\[“news”], forkey “channels”)’ die das kanal array des installationsobjekts auf einen kanal namens ‘news’ setzt dies ermöglicht es uns, eine nachricht an alle zu senden, die sich für den kanal namens news news über cloud code abonniert haben 2\ testen sie es, indem sie ihre app auf einem physischen gerät ausführen sie dürfen dies nicht im simulator ausführen sie benötigen ein tatsächliches push token, um ihren installationsdatensatz zu aktualisieren, daher ist ein physisches gerät ein muss 3\ nachdem es erfolgreich ausgeführt wurde, sollten sie etwas ähnliches wie das bild unten im installations installations bereich ihres dashboards sehen sie können dies überprüfen, indem sie zum dashboard ihrer app gehen unter back4app website und dann die installationstabelle überprüfen in der spalte kanäle sollten sie nachrichten nachrichten , die ihnen zeigt, dass sie jetzt für den nachrichten nachrichten push kanal abonniert sind 3 erstellen sie ihren cloud code um mehr darüber zu erfahren, wie man mit cloud code beginnen kann, schauen sie sich cloud code für ios tutorial an erstellen sie eine js js datei, um ihren cloud code zu speichern sie müssen sie main js main js nennen, damit back4app weiß, dass dies der ort ist, an dem sie ihren cloud code speichern definieren sie eine cloud funktion mit parse cloud define parse cloud define , um die push benachrichtigung aufzurufen innerhalb der funktion rufen wir parse push send parse push send auf, um push nachrichten an den ‘ news news ’ kanal zu senden es ist erforderlich, den master schlüssel in diesem vorgang zu verwenden der folgende code führt diese schritte aus parse server 3 x // main js 1 parse cloud define("pushsample", (request) => { 2 3 return parse push send({ 4 channels \["news"], 5 data { 6 title "hello from the cloud code", 7 alert "back4app rocks!", 8 } 9 }, { usemasterkey true }); 10 }); parse server 2 x //main js 1 parse cloud define("pushsample", function (request, response) { 2 parse push send({ 3 channels \["news"], 4 data { 5 title "hello from the cloud code", 6 alert "back4app rocks!", 7 } 8 }, { 9 success function () { 10 // push was successful 11 response success("push sent"); 12 console log("success push sent"); 13 }, 14 error function (error) { 15 // push was unsucessful 16 response error("error with push " + error); 17 console log("error " + error); 18 }, 19 usemasterkey true 20 }); 21 }) 4 in die cloud code hochladen gehe zu deiner app auf back4app website und klicke auf dashboard dashboard finde den cloud code cloud code und klicke auf funktionen & webhosting funktionen & webhosting es sieht so aus 3\ lade eine neue datei hoch oder erstelle sie (du kannst auch die aktuelle main js main js datei direkt im browser bearbeiten) klicke dann auf bereitstellen bereitstellen wie hier gezeigt 5 cloud code von ihrer ios app aufrufen jetzt werden wir etwas code schreiben, um diese cloud funktion von ihrer app aus aufzurufen sie benötigen sowohl den simulator als auch ein physisches gerät, um diese aufgabe abzuschließen sie werden die cloud funktion von ihrer app im simulator aus aufrufen und sie werden die push benachrichtigung auf ihrem physischen gerät sehen ihr physisches gerät sollte tatsächlich mit dem sperrbildschirm geschlossen sein, um die push benachrichtigung zu sehen eine push benachrichtigung wird nicht auf dem bildschirm angezeigt, wenn sie sich in der app befinden, die sie sendet, wenn sie die push benachrichtigung erhalten 2\ öffnen sie die viewcontroller swift viewcontroller swift datei ihres projekts wir müssen parse im view controller einfügen, indem wir den folgenden code ‘import parse’ oben in die datei hinzufügen viewcontroller swift 3\ als nächstes werden wir in der viewcontroller swift viewcontroller swift datei eine alarmfunktion aus der viewdidappear methode aufrufen der alarm ermöglicht es ihnen, den cloud code auszulösen, der eine push benachrichtigung an ihr gerät sendet stellen sie sicher, dass sie den folgenden codeblock nach der viewdidload viewdidload funktion einfügen viewcontroller swift viewcontroller swift 1 override func viewdidappear( animated bool) { 2 asktosendpushnotifications() 3 } 4 5 func asktosendpushnotifications() { 6 let alertview = uialertcontroller(title "send a push to the news channel", message nil, preferredstyle alert) 7 let okaction = uialertaction(title "ok", style default) { (action\ uialertaction) in 8 self sendpushnotifications() 9 } 10 alertview\ addaction(okaction) 11 let cancelaction = uialertaction(title "cancel", style cancel) { (action\ uialertaction) in 12 } 13 alertview\ addaction(cancelaction) 14 if let presenter = alertview\ popoverpresentationcontroller { 15 presenter sourceview = self view 16 presenter sourcerect = self view\ bounds 17 } 18 self present(alertview, animated true, completion\ nil) 19 } 20 21 func sendpushnotifications() { 22 let cloudparams \[anyhashable\ string] = \[ ] 23 pfcloud callfunction(inbackground "pushsample", withparameters cloudparams, block { 24 (result any?, error error?) > void in 25 if error != nil { 26 if let descrip = error? localizeddescription{ 27 print(descrip) 28 } 29 }else{ 30 print(result as! string) 31 } 32 }) 33 } 4\ führen sie ihre app im simulator aus, und wenn der alarm fragt, ob die push benachrichtigung gesendet werden soll, drücken sie „ok“ auf ihrem physischen gerät sollten sie die push benachrichtigung auf dem sperrbildschirm sehen, so wie hier 6 cloud code über die rest api aufrufen die rest api bietet eine schnelle und einfache möglichkeit, um zu testen, ob ihre cloud funktion funktioniert verwenden sie einfach den folgenden code in ihrem terminal oder eingabeaufforderung klicken sie hier, um mehr darüber zu erfahren, wie sie mit der befehlszeile in linux , macos oder windows um die push benachrichtigungen zu testen, verwenden sie einfach den rest code, während das gerät geschlossen ist 7 senden sie gezielte push benachrichtigungen mit einem benutzerobjekt in zukunft werden wir ein anderes ios projekt verwenden, das bereits grundlegende anmelde und registrierungsfunktionen enthält wir werden dieses ios projekt verwenden, um ihnen zu zeigen, wie sie erkennen können, ob ein benutzer angemeldet ist, und falls ja, seine installation mit einem link zu seiner objekt id für abfragen im cloud code speichern sie können das vollständige ios projekt, das mit dem tutorial dieses abschnitts erstellt wurde, in unserem github repository herunterladen, aber sie müssen dennoch alle einstellungen aus dem vorherigen tutorial durchführen, das erklärt, wie man push benachrichtigungen vom back4app dashboard sendet sie können das vollständige ios projekt, das mit dem tutorial dieses abschnitts erstellt wurde, in unserem github repository herunterladen, aber sie müssen dennoch alle einstellungen aus dem vorherigen tutorial durchführen, das erklärt, wie man push benachrichtigungen vom back4app dashboard sendet holen sie sich die neue version der app, richten sie sie ein und melden sie sich in der app an oder registrieren sie sich stellen sie zunächst sicher, dass sie die funktionierende vorlage von unserem github repository wir werden nicht alle schritte zum erstellen dieser app durchgehen, sondern uns auf die einrichtung des cloud codes und dessen funktionsweise konzentrieren sobald sie diese neue app öffnen, stellen sie sicher, dass sie die anmeldeinformationen ihrer eigenen app in die datei appdelegate swift einfügen appdelegate swift 1 func application( application uiapplication, didfinishlaunchingwithoptions launchoptions \[uiapplicationlaunchoptionskey any]?) > bool { 2 let configuration = parseclientconfiguration { 3 $0 applicationid = "paste your application id here" 4 $0 clientkey = "paste your client id here" 5 $0 server = "https //parseapi back4app com" 6 } 7 parse initialize(with configuration) 8 return true 9 } 2\ diese app hat einige wesentliche unterschiede zur vorherigen app sie verfügt über 2 abschnitte, einen für die anmeldung in ihrer app und einen abschnitt, wenn sie nicht in ihrer app angemeldet sind die nächste große änderung ist die funktion ‚createinstallationonparse‘ in der datei appdelegate swift wir haben 1 zeile hinzugefügt, die die objekt id des benutzers als teil des installationsobjekts speichert so können wir wissen, welcher benutzer mit welchem installationsobjekt verbunden ist und sie individuell für push benachrichtigungen ansprechen appdelegate swift 1 func createinstallationonparse(devicetokendata\ data){ 2 if let installation = pfinstallation current(){ 3 installation setdevicetokenfrom(devicetokendata) 4 installation setobject(\["news"], forkey "channels") 5 if let userid = pfuser current()? objectid { 6 installation setobject(userid, forkey "userid") 7 } 8 installation saveinbackground { 9 (success bool, error error?) in 10 if (success) { 11 print("you have successfully saved your push installation to back4app!") 12 } else { 13 if let myerror = error{ 14 print("error saving parse installation \\(myerror localizeddescription)") 15 }else{ 16 print("uknown error") 17 } 18 } 19 } 20 } 21 } 3\ da wir jetzt die objekt id des benutzers als teil des installationsobjekts speichern, möchten wir kein neues push token anfordern, bis der benutzer angemeldet ist wir möchten kein token direkt aus der funktion ‚application didfinishlaunchingwithoptions‘ in der datei appdelegate swift anfordern, sondern wir möchten es aus der funktion ‚viewdidappear‘ des loggedinviewcontroller aufrufen in ‚viewdidappear‘ rufen wir eine funktion im appdelegate auf, um zugriff auf ein push benachrichtigungstoken von apple anzufordern da sie diesen abschnitt nur sehen können, wenn sie angemeldet sind, können wir davon ausgehen, dass der benutzer angemeldet ist, wenn wir das installationsobjekt erstellen, aber um auf nummer sicher zu gehen, haben wir eine ‚if let anweisung‘ verwendet, um das objekt parse currentuser() zu entpacken und die objekt id abzurufen loggedinviewcontroller swift 1 override func viewdidappear( animated bool) { 2 appdelegate? startpushnotifications() 3 } appdelegate swift 1 if let userid = pfuser current()? objectid { 2 installation setobject(userid, forkey "userid") 3 } 4\ ok, jetzt, um sich anzumelden oder einzuloggen auf deinem physischen gerät (iphone oder ipad) starte die app du solltest das bild unten sehen du solltest dich registrieren, um einen neuen benutzer zu erstellen, oder dich anmelden, wenn du bereits einen benutzer in deiner app erstellt hast so wird es aussehen du solltest jetzt in der lage sein, den loggedinviewcontroller zu sehen es sollte so aussehen wenn sie versuchen, benachrichtigungen an sich selbst zu senden, wird es noch nicht funktionieren, da wir diese methoden nicht zum cloud code hinzugefügt haben das werden wir als nächstes tun 8 fügen sie die gezielten push methoden zum cloud code hinzu öffnen sie ihre main js main js datei, die sie zuvor erstellt haben, und fügen sie die folgenden funktionen hinzu, um installationen nach benutzer id anzusprechen es ist erforderlich, den master schlüssel in diesem vorgang zu verwenden parse server 3 x // main js 1 parse cloud define('sendpushtoyourself', (request) => { 2 let userid = request user id; 3 4 let query = new parse query(parse installation); 5 query equalto("userid", userid); 6 query descending("updatedat"); 7 return parse push send({ 8 where query, 9 data { 10 title "hello from the cloud code", 11 alert "back4app rocks! single message!", 12 } 13 }, { usemasterkey true }); 14 }); 15 16 parse cloud define('sendpushtoallusers', (request) => { 17 let currentuser = request user; 18 let userids = \[currentuser id]; 19 20 let query = new parse query(parse installation); 21 query containedin('userid', userids); 22 return parse push send({ 23 where query, 24 data { 25 title "hello from the cloud code", 26 alert "back4app rocks! group message!", 27 } 28 }, { usemasterkey true }); 29 }); parse server 2 x //main js 1 parse cloud define('sendpushtoyourself', function (request, response) { 2 var currentuser = request user; 3 var userid = currentuser id; 4 5 var query = new parse query("installation"); 6 query equalto("userid", userid); 7 query descending("updatedat"); 8 parse push send({ 9 where query, 10 data { 11 title "hello from the cloud code", 12 alert "back4app rocks! single message!", 13 } 14 }, { 15 usemasterkey true, 16 success function () { 17 response success("success sending a single push!"); 18 }, 19 error function (error) { 20 response error(error code + " " + error description); 21 } 22 }); 23 }); 24 25 parse cloud define('sendpushtoallusers', function (request, response) { 26 var currentuser = request user; 27 var userids = \[currentuser id]; 28 29 var query = new parse query(parse installation); 30 query containedin('userid', userids); 31 parse push send({ 32 where query, 33 data { 34 title "hello from the cloud code", 35 alert "back4app rocks! group message!", 36 } 37 }, { 38 usemasterkey true, 39 success function () { 40 response success('success sending a group push!'); 41 }, 42 error function (message) { 43 response error(error code + " " + error description); 44 } 45 }); 46 }); 9 in die cloud code hochladen gehe zu deiner app auf back4app website und klicke auf dashboard dashboard finde den cloud code cloud code und klicke auf funktionen & webhosting funktionen & webhosting es sieht so aus 3\ lade eine datei hoch oder erstelle eine neue datei (du kannst auch die aktuelle main js main js datei direkt im browser bearbeiten) klicke dann auf bereitstellen bereitstellen wie hier gezeigt 10 testen sie, ob sie gezielte push benachrichtigungen an sich selbst senden können öffnen sie ihre app im simulator, während sie ihr physisches gerät mit dem sperrbildschirm geschlossen lassen sie können testen, ob beide push funktionen funktionieren, indem sie die schaltfläche ‚push an sich selbst senden‘ und die schaltfläche ‚push an eine gruppe von personen senden‘ drücken sie sollten die push benachrichtigungen auf dem sperrbildschirm ihres geräts sehen fazit jetzt sollten sie ein festes verständnis dafür haben, wie sie push benachrichtigungen basierend auf dem kanal eines benutzers oder der objekt id eines benutzers oder einer anderen abfrage, die das abrufen der objekt id des benutzers beinhaltet, senden können denken sie daran, dass sie die objekt id des benutzers speichern müssen, indem sie sie zur push installation hinzufügen und nur dann ein push token anfordern, wenn der benutzer angemeldet ist beim senden von push benachrichtigungen über abfragen sollten sie beachten, dass dies standardmäßig auf 100 ergebnisse begrenzt ist und einige benutzer möglicherweise mehr als eine installationsobjekt haben es wird auch nicht empfohlen, push benachrichtigungen an arrays von installationsobjekten zu senden, die größer als 100 ergebnisse sind dies könnte dazu führen, dass einige push benachrichtigungen nicht gesendet werden wenn sie es mit großen gruppen von personen zu tun haben, ist es besser, kanäle zu verwenden oder die push benachrichtigungen in wiederholten anfragen zu senden es ist erledigt! in diesem stadium können sie push benachrichtigungen über cloud code über back4app senden! herzlichen glückwunsch!