iOS
Send Push Notifications
Push-Benachrichtigungen mit Cloud-Code und ObjC
26 min
push benachrichtigungen mit cloud code in objective c senden einfĂŒhrung in diesem abschnitt wird erklĂ€rt, wie sie push benachrichtigungen ĂŒber cloud code mit back4app senden können so wird es aussehen zu jeder zeit können sie das vollstĂ€ndige projekt, das mit diesem tutorial erstellt wurde, in unserem https //github com/templates back4app/ios install sdk aufrufen um dieses schnellstart tutorial abzuschlieĂen, benötigen sie https //developer apple com/xcode/ eine app, die bei back4app erstellt wurde befolgen sie das https //www back4app com/docs/get started/new parse app um zu lernen, wie man eine parse app bei back4app erstellt eine ios app, die mit back4app verbunden ist hinweis befolgen sie das https //www back4app com/docs/ios/parse swift sdk um ein xcode projekt zu erstellen, das mit back4app verbunden ist eine ios app, die ĂŒber https //www back4app com/docs/ios/push notifications/best ios push notification service eingerichtet ist 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 fĂŒr push benachrichtigungen registrierten gerĂ€t installiert ist, hat ein zugehöriges installation installation objekt das installation installation 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 installation installation objekts ist auch erforderlich, um pushbezogene app öffnungsereignisse zu verfolgen der einfachste weg, um mit dem senden von benachrichtigungen zu beginnen, ist die verwendung von kanĂ€len dies ermöglicht es ihnen, ein publisher subscriber modell fĂŒr das senden 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 eine gegebene installation installation angemeldet hat, werden im channels channels feld des installation installation objekts gespeichert danach werden wir uns mit dem versenden gezielter push benachrichtigungen an einen einzelnen benutzer oder an eine gruppe von benutzern basierend auf einer abfrage befassen in zukunft gehen wir davon aus, dass sie alle schritte des https //www back4app com/docs/ios/push notifications/best ios push notification service , auch wenn sie das ios projekt verwenden, das mit diesem tutorial verfĂŒgbar ist, das sich in unserem https //github com/mpc20001/ios objc push cloud code sie sollten grundlegende push benachrichtigungen zum laufen gebracht haben und auch in der lage sein, push benachrichtigungen ĂŒber die administrationskonsole zu versenden 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 in unserer app delegate datei Ă€ndern öffnen sie die datei appdelegate m ihres projekts und stellen sie sicher, dass ihre version von didregisterforremotenotificationswithdevicetoken mit dem untenstehenden code ĂŒbereinstimmt wir fĂŒgen eine neue codezeile hinzu â\[currentinstallation setobject @\[@ânews1â] 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 ĂŒber cloud code fĂŒr den kanal namens ânewsâ anmelden appdelegate m \ (void)application (uiapplication )application didregisterforremotenotificationswithdevicetoken (nsdata )devicetoken { // speichern sie das devicetoken in der aktuellen installation und speichern sie es in parse pfinstallation currentinstallation = \[pfinstallation currentinstallation]; \[currentinstallation setdevicetokenfromdata\ devicetoken]; \[currentinstallation setobject @\[@"news1"] forkey @"channels"]; \[currentinstallation saveinbackgroundwithblock ^(bool succeeded, nserror error) { if (!error) { nslog(@"installation gespeichert!!!"); }else{ nslog(@"installation speichern fehlgeschlagen %@",error debugdescription); } }]; } 2\ testen sie es, indem sie ihre app auf einem physischen gerĂ€t ausfĂŒhren sie können 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 nachdem es erfolgreich ausgefĂŒhrt wurde, sollten sie dies im installationsbereich ihres dashboards sehen sie können ĂŒberprĂŒfen, indem sie zu https //www back4app com/ gehen und auf das dashboard ihrer app klicken und dann die installationstabelle ĂŒberprĂŒfen in der spalte kanĂ€le sollten sie 'news' sehen, was ihnen zeigt, dass sie jetzt fĂŒr den news push kanal abonniert sind 3 erstellen sie ihren cloud code um mehr darĂŒber zu erfahren, wie sie mit cloud code beginnen können, schauen sie sich https //www back4app com/docs 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 werden wir parse push send parse push send aufrufen, um push benachrichtigungen an den â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 hochladen zum cloud code gehe zu deiner app bei https //www back4app com/ und klicke auf dashboard dashboard finde den cloud code cloud code und klicke auf functions & web hosting functions & web hosting es sieht so aus 3\ lade eine neue datei hoch oder erstelle eine neue datei (du kannst auch die aktuelle main js main js datei direkt im browser bearbeiten) klicke dann auf deploy deploy wie hier gezeigt 5 rufe cloud code von deiner ios app auf als nĂ€chstes 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 öffnen sie die viewcontroller m datei ihres projekts wir mĂŒssen parse im view controller einfĂŒgen, indem wir den folgenden code â#import \<parse/parse h>â an den anfang der datei hinzufĂŒgen viewcontroller \#import "viewcontroller h" \#import \<parse/parse h> 3\ als nĂ€chstes werden wir in der viewcontroller m 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 funktion einfĂŒgen viewcontroller m https //github com/mpc20001/ios objc push cloud code/blob/master/addingparsesdkobjc/appdelegate m#l29 l62 \ (void)viewdidappear (bool)animated { \[self asktosendpushnotifications]; } \ (void)asktosendpushnotifications { uialertcontroller alert = \[uialertcontroller alertcontrollerwithtitle @"senden sie eine push benachrichtigung an den nachrichtenkanal" message\ nil preferredstyle\ uialertcontrollerstylealert]; uipopoverpresentationcontroller poppresenter = \[alert popoverpresentationcontroller]; poppresenter sourceview = self view; uialertaction okbutton = \[uialertaction actionwithtitle @"ok" style\ uialertactionstyledefault handler ^(uialertaction action) { \[self sendpushnotifications]; }]; \[alert addaction\ okbutton]; uialertaction cancelbutton = \[uialertaction actionwithtitle @"abbrechen" style\ uialertactionstylecancel handler ^(uialertaction action) { }]; \[alert addaction\ cancelbutton]; poppresenter sourcerect = self view\ frame; alert modalpresentationstyle = uimodalpresentationpopover; \[self presentviewcontroller\ alert animated\ yes completion\ nil]; } \ (void)sendpushnotifications { \[pfcloud callfunctioninbackground @"pushsample" withparameters @{} block ^(id object, nserror error) { if (!error) { nslog(@"push gesendet"); }else{ nslog(@"fehler beim senden der push %@",error localizeddescription); } }]; } 4\ fĂŒhren sie ihre app im simulator aus, und wenn die aufforderung zum senden der push benachrichtigung erscheint, drĂŒcken sie âokâ auf ihrem physischen gerĂ€t sollten sie die push benachrichtigung auf dem sperrbildschirm sehen 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 https //www digitalocean com/community/tutorials/an introduction to the linux terminal , https //blog teamtreehouse com/introduction to the mac os x command line oder https //www bleepingcomputer com/tutorials/windows command prompt introduction/ curl x post h "x parse application id your app id here" \\ h "x parse rest api key your rest api key here" \\ h "content type application/json" \\ d â{ // geben sie hier die funktionsparameter im json format ein }â \\ https //parseapi back4app com/functions/pushsample um die push benachrichtigungen zu testen, verwenden sie einfach den rest code, wĂ€hrend das gerĂ€t geschlossen ist 7 zielgerichtete push benachrichtigungen mit einem benutzerobjekt senden 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 https //github com/mpc20001/ios objc targeted push cloud code herunterladen, aber sie mĂŒssen immer noch alle einrichtungsschritte 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 bei der app an oder registrieren sie sich stellen sie zunĂ€chst sicher, dass sie die funktionierende vorlage von github unter https //github com/mpc20001/ios objc targeted push cloud code 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 m einfĂŒgen appdelegate m \ (bool)application (uiapplication )application didfinishlaunchingwithoptions (nsdictionary )launchoptions { // ĂŒberschreibungsstelle fĂŒr anpassungen nach dem start der anwendung \[parse initializewithconfiguration \[parseclientconfiguration configurationwithblock ^(id\<parsemutableclientconfiguration> configuration) { configuration applicationid = @"paste your application id here"; configuration clientkey = @"paste your client id here"; configuration server = @"https //parseapi back4app com/"; }]]; return yes; } 2\ diese app weist einige wesentliche unterschiede zur vorherigen app auf 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 âdidregisterforremotenotificationswithdevicetokenâ in der datei appdelegate m wir haben eine zeile hinzugefĂŒgt, die die objekt id des benutzers als teil des installationsobjekts speichert so können wir wissen, welcher benutzer mit welchem installationsobjekt verknĂŒpft ist und sie individuell fĂŒr push benachrichtigungen ansprechen appdelegate m \ (void)application (uiapplication )application didregisterforremotenotificationswithdevicetoken (nsdata )devicetoken { // speichern sie das devicetoken in der aktuellen installation und speichern sie es in parse pfinstallation currentinstallation = \[pfinstallation currentinstallation]; \[currentinstallation setdevicetokenfromdata\ devicetoken]; \[currentinstallation setobject @\[@"news"] forkey @"channels"]; \[currentinstallation setobject\ pfuser currentuser objectid forkey @"userid"]; \[currentinstallation saveinbackgroundwithblock ^(bool succeeded, nserror error) { if (!error) { nslog(@"installation gespeichert!!!"); }else{ nslog(@"installation speichern fehlgeschlagen %@",error debugdescription); } }]; } 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â der datei appdelegate m 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 und die objekt id abrufen loggedinviewcontroller \ (void)viewdidappear (bool)animated { appdelegate delegate = (appdelegate )\[\[uiapplication sharedapplication] delegate]; \[delegate registerforremotenotifications]; } appdelegate m \[currentinstallation setobject\ pfuser currentuser objectid forkey @"userid"]; 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 datei, die sie zuvor erstellt haben, und fĂŒgen sie die folgenden funktionen hinzu, um installationen nach benutzer id zu zielen 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('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 hochladen zum cloud code gehe zu deiner app unter https //www back4app com/ und klicke auf dashboard dashboard finde den cloud code cloud code und klicke auf funktionen & webhosting funktionen & webhosting es sieht so aus 3\ laden sie eine neue datei hoch oder erstellen sie eine neue datei (sie können auch die aktuelle main js main js datei direkt im browser) klicken sie 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 abschlieĂende gedanken damit endet das tutorial sie sollten ein festes verstĂ€ndnis dafĂŒr haben, wie man push benachrichtigungen basierend auf dem kanal eines benutzers oder der objekt id eines benutzers oder einer anderen abfrage sendet, die das abrufen der objekt id des benutzers beinhaltet 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 mehr als eine installationsobjekt haben können 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!