Was sollte der geeignete Systemfluss für die Funktionalität des Push-Notification-Service sein, der mit PHP und Pushwoosh entwickelt wurde?

8

Ich bin ein PHP Entwickler von Beruf. Also, ich habe nicht viel Wissen über mobile Apps, iOS, Android, etc. solche Sachen. Also bitte versuch mich zu verstehen.

Ich habe eine App entwickelt, die vom jeweiligen Entwicklerteam mit iOS entwickelt wurde. Jetzt muss ich dieser App die Push-Benachrichtigungen mit Pushwoosh bereitstellen.

Ich habe verstanden, was durch Push-Notification und die Verwendung von Pushwoosh für die gleiche Sache gemeint ist. Außerdem kann ich eine Beispiel-Push-Benachrichtigung senden, indem ich app_id und auth_key von Pushwoosh Control Panel verwende. Wenn ich die entsprechende PHP-Datei vom Server starte, bekomme ich die 'Success Message' mit korrektem Statuscode.

In meiner Abfrage geht es darum, wie man diesen Push-Notification-Service serverseitig in die App implementiert?

Sehen wir uns jetzt die dynamischere und praktischere Sache an.

Tatsächlich gibt es eine Tabelle in der MySQL-Datenbank, die die Benachrichtigungen enthält. Sobald ein neuer Eintrag in die Tabelle eingefügt wird, muss überprüft werden, ob der neue Eintrag für den angemeldeten Benutzer bestimmt ist oder nicht. Wenn neue Benachrichtigungen für angemeldete Benutzer generiert werden, muss die Push-Benachrichtigung per 'Pushwoosh' an den betreffenden Benutzer an sein jeweiliges Gerät gesendet werden.

Nun ist meine Frage, ob die PHP-Datei, die den Code zum Überprüfen der neuen Benachrichtigungen enthält und sie als Push-Benachrichtigungen versendet, von der App aus aufgerufen wird oder gibt es einen anderen Weg?

Mit anderen Worten ist mein Zweifel, ob diese Überprüfung auf neue Benachrichtigungen nur auf eine Anfrage aus der App durchgeführt werden sollte?

Ich habe das gleiche Problem mit dem Entwicklungsteam für mobile Apps besprochen. Sie haben mir gesagt, dass wir Ihnen keine Anfrage senden. Sie müssen uns lediglich die Push-Benachrichtigung senden. Sie sagten mir, dass die Bedeutung der Push-Benachrichtigung nur die gleiche ist, dass die App niemals eine Anfrage an den Server sendet, der Server selbst sollte die Benachrichtigung an die App senden, wenn sie verfügbar ist.

Wie sollte in diesem Fall die PHP-Datei, die den Code enthält, ausgeführt werden, da keine Anfrage dafür empfangen wurde?

Eine weitere Frage ist, ob die App keine Anfrage an die PHP-Datei senden wird. Wie soll ich dann wissen, welcher Benutzer angemeldet ist und welche neuen Benachrichtigungen für ihn generiert werden?

Nehmen wir an, wenn die Anfrage für die PHP-Datei gekommen ist, dann muss ich tokenbasierte Authentifizierung in PHP-Code für diesen bestimmten Benutzer machen oder sie wird auf App-Seite durchgeführt und nur nach erfolgreicher Validierung des Benutzers werden sie die Anfrage senden zur PHP Datei?

Auch die Überprüfung auf neue Benachrichtigungen sollte für alle zwei Minuten erfolgen (Polling). Woher soll dieser Check gemacht werden? Ich meine, wird die PHP-Datei eine Anfrage von der App für alle zwei Minuten oder was?

Bitte helfen Sie mir, diese langwierigen Probleme zu lösen.

Danke.

Nachfolgend ist mein Beispielcode (Das Auth Token und die App ID wurden aus Sicherheitsgründen geändert):

%Vor%

Im obigen Code werde ich nur Code zum Prüfen und Senden neuer Benachrichtigungen integrieren, falls verfügbar.

    
PHPLover 04.06.2015, 03:00
quelle

2 Antworten

1

Beginnen wir mit der Installation der iOS App. Das iOS-Team sollte darauf achten, das Gerät nach der Installation auf dem Apple Push Notification Server (APNS) zu registrieren und ein Push-Token zu erhalten.

Bei der Anmeldung sollten sie dieses Push-Token an den PHP-Server senden und der Server sollte es zusammen mit den Benutzerdaten speichern. Normalerweise (aber nicht obligatorisch) sollte der Server nach einer erfolgreichen Anmeldung ein eindeutiges Token generieren und es an das Gerät zurücksenden, das danach für die Kommunikation zwischen ihnen verwendet wird. Wenn keine Ablaufanforderungen vorliegen, ist dieses Token gut genug, um zu wissen, dass der Benutzer angemeldet ist.

Wenn ein Ablauf erforderlich ist, sollte der Server einen Zeitstempel des Zeitpunkts der Generierung des Tokens speichern und in der Datenbank speichern. Dies erfordert auch, den Zeitstempel zu aktualisieren, wann immer der Benutzer mit der App / dem Server interagiert.

Ein Cron-Job könnte so eingestellt werden, dass er alle zwei Minuten ausgeführt wird und ein PHP-Skript aufruft. Dieses PHP-Skript durchläuft die Tabelle in der DB und sucht nach neuen Benachrichtigungen. Wenn es solche findet, sollte es versuchen, eine Push-Benachrichtigung zu senden. Wenn eine "eingeloggt" -Kontrolle erforderlich ist, sollte das Skript das Token des Benutzers überprüfen und beim Erfolg eine /createMessage API-Anfrage an Pushwoosh mit dem entsprechenden Geräte-Push-Token senden. Der Parameter in der JSON-Anfrage sollte folgendermaßen aussehen:

%Vor%

Beachten Sie, dass Sie hier bis zu 1000 Push-Token hinzufügen können.

Auf diese Weise senden Sie eine Push-Benachrichtigung an das Gerät des konkreten Benutzers.

Bitte beachten Sie, dass 1 Benutzer die App auf mehreren Geräten installieren kann. In diesem Fall sollten alle Push-Tokens gespeichert und beim Senden der Push-Benachrichtigung verwendet werden.

Ich hoffe, ich habe nichts verpasst.

    
M. Sabev 11.08.2015 10:21
quelle
1

Push-Benachrichtigungen werden häufig verwendet, um Nutzer in eine App zu bringen, wenn sie sich längere Zeit nicht angemeldet haben oder wenn ein Ereignis oder eine Werbeaktion stattfindet. Aus diesem Grund können sich die meisten Push-Notification-Implementierungen nicht auf eine Anfrage von der App selbst verlassen.

In diesem Fall ist ein neuer Eintrag in einer MySQL-Datenbank die Voraussetzung für das Senden einer Push-Benachrichtigung. Daher würde ich eine PHP-Datei erstellen, die regelmäßig nach neuen, noch nicht gesendeten Zeilen in der MySQL-Datenbank sucht. Der beste Weg, PHP-Skripte nach einem Zeitplan anzufordern, besteht darin, einen Cron-Job auf Ihrem Server einzurichten, der alle zwei Minuten ausgeführt wird. Es gibt viele Informationen über das Einrichten von Cron-Jobs im Internet, und die meisten Ops-Teams können das für Sie erledigen. Aber wenn Sie es selbst einrichten wollen / wollen, sind die grundlegenden Schritte:

  1. SSH in den Server, auf dem das Skript ausgeführt wird
  2. Führen Sie crontab -e aus, um die Cron-Konfigurationsdatei
  3. zu bearbeiten
  4. Fügen Sie den Befehl cron hinzu. Es würde so etwas mögen:

    %Vor%
  5. Speichern und beenden Sie die Datei

Das */2 bedeutet, dass es alle 2 Minuten ausgeführt wird. Der Rest der * -Zeichen bedeutet, dass das Skript jede Stunde, jeden Tag, jeden Monat und jeden Wochentag ausführt. Zuletzt ist der Befehlszeilenbefehl auszuführen. Wenn Sie die Verzeichnisse vor dem Ausführen der PHP-Datei ändern, erhalten Sie dasselbe aktuelle Arbeitsverzeichnisverhalten wie beim Anfordern der PHP-Datei von einem Webserver.

Es gibt eine Reihe von Möglichkeiten, um festzustellen, ob Benutzer eingeloggt sind. Ich würde vorschlagen, ein Feld in der DB zu haben, das mit dem eingeloggten Status und der Zeit der letzten Aktion aktualisiert wird, die der Benutzer gemacht hat, als er eingeloggt war Zeitpunkt der letzten Aktion ist nützlich, da Benutzer sich häufig nicht bei Apps abmelden und sie stattdessen einfach schließen. Sie können die Zeit seit ihrer letzten Aktion verwenden, um festzustellen, ob die App lange genug inaktiv war, um davon auszugehen, dass der Benutzer sie nicht mehr verwendet. Dieses geloggte Feld könnte auch in einer Cache-Schicht gespeichert werden, wenn Ihre Anwendung eine verwendet, um die Belastung der Datenbank zu reduzieren.

Im Hinblick auf die Token-Authentifizierung müsste das von der App-Seite kommen. iOS-Geräte erfordern, dass der Benutzer der App die Berechtigung erteilt, bevor ein Push-Benachrichtigungstoken generiert und an die App gesendet wird. Dies ist etwas, das das App-Entwicklungsteam hätte erledigen sollen, und sie sollten in der Lage sein, Ihnen einen Speicherort zu geben, an dem diese Tokens gespeichert sind, oder Ihnen zumindest helfen, eine Speicherlösung für die Tokens zu erstellen. Wenn Sie das Push-Benachrichtigungs-Token und die zugehörige Benutzer-ID in einer MySQL-Datenbank speichern, sollte es nur eine einfache Suche sein, um auf ihr Authentifizierungs-Token zuzugreifen.

Um die obigen Informationen zusammenzufassen, würde ich eine Lösung ähnlich der folgenden erstellen:

App-Seite:

  1. Der Nutzer installiert die App, stimmt zu, Push-Benachrichtigungen zu erhalten
  2. Ein Authentifizierungs-Token für Push-Benachrichtigungen wird erstellt und in einem dem Benutzer zugeordneten DB gespeichert

PHP Seite:

  1. Irgendwann wird eine Push-Benachrichtigung zur MySQL-Datenbank hinzugefügt und muss gesendet werden
  2. Der Cron-Job führt Ihr PHP-Skript alle zwei Minuten aus
  3. Das PHP-Skript überprüft die Datenbank nach Zeilen, die nicht gesendet wurden (eine einfache boolesche Spalte sollte dafür ausreichen)
  4. Überprüfen Sie die Datenbank auf den angemeldeten Status des Benutzers. Wenn es angemeldet ist, überprüfe, ob die letzte Aktion nicht zu lange her ist
  5. Suchen Sie für jede nicht gesendete Push-Benachrichtigung mit einem Benutzer, der über einen entsprechenden Anmeldestatus verfügt, das Authentifizierungstoken für den Benutzer in der Datenbank
  6. Senden Sie das Authentifizierungs-Token und die Push-Benachrichtigung von Pushwoosh, um die Zustellung der Nachricht zu übernehmen
  7. Aktualisieren Sie die Push-Benachrichtigungszeilen in der DB als gesendet
Glen 17.08.2015 04:15
quelle