Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   APN Provider API - HTTP/2 (https://www.delphipraxis.net/189361-apn-provider-api-http-2-a.html)

AndyDF 5. Jun 2016 09:51

APN Provider API - HTTP/2
 
Hallo,

Apple hat seine Anbindung zum Senden von Push-Nachrichten ja umgestellt auf eine modernere API. Diese basiert auf HTTP/2.

Hier der Link: https://developer.apple.com/library/...8194-CH101-SW1

Die alte API von Apple war kein Problem mit Delphi (TIdTCPClient) anzubinden.
Meine Frage ist aber: Ist auch eine Kommunikation über HTTP/2 mit Delphi möglich?

Meine Internet Recherche hat leider zu keinem Erfolg geführt. HTTP/2 ist aber auch ein schwieriger Begriff zum Suchen in Google. :-)

Viele Grüße,
Andreas

Valle 5. Jun 2016 09:54

AW: APN Provider API - HTTP/2
 
Ich hab mich mit HTTP/2 noch nicht wirklich beschäftigt, aber Wikipeda sagt:

Zitat:

Dabei soll der neue Standard jedoch vollständig abwärtskompatibel zu HTTP/1.1 sein.
Also einfach einen ganz normalen HTTP Client verwenden und gut ist?

mjustin 5. Jun 2016 11:47

AW: APN Provider API - HTTP/2
 
Die verlinkte APN Dokumentation enthält diesen Hinweis:

Zitat:

APNs requires the use of HPACK (header compression for HTTP/2), which prevents repeated header keys and values.
Daraus folgt, dass HTTP/2 vom Client unterstützt werden muss.

Sir Rufo 5. Jun 2016 12:28

AW: APN Provider API - HTTP/2
 
Ich würde so eine Push-Notification immer über einen Server routen. Der sendet dann an den konkreten Empfänger und hat die entsprechende API von apple/google/wuppi implementiert.

Der Client kennt nur meinen Server und schickt dorthin. Dann muss der Client auch nur dann aktualisiert werden, wenn ich an meinem Server etwas ändere.

Ab Seattle gibt es einen Http-Client der als Wrapper für die Http-Funktionen des OS dient und der sollte eigentlich auch HTTP/2 können. (falls man den Server mit Delphi entwickeln möchte).

Diese Vorgehensweise ist auch naheliegend, wenn man die apple Dokumentation sorgfältig liest
Zitat:

Best Practices for Managing Connections
Keep your connections with APNs open across multiple notifications; don’t repeatedly open and close connections. APNs treats rapid connection and disconnection as a denial-of-service attack. You should leave a connection open unless you know it will be idle for an extended period of time—for example, if you only send notifications to your users once a day it is ok to use a new connection each day.

mjustin 5. Jun 2016 12:40

AW: APN Provider API - HTTP/2
 
Zitat:

Zitat von Sir Rufo (Beitrag 1339549)
Ab Seattle gibt es einen Http-Client der als Wrapper für die Http-Funktionen des OS dient und der sollte eigentlich auch HTTP/2 können.

Aktuell ist mir kein Betriebssystem bekannt, das HTTP/2 direkt unterstützt - die Browser müssen das HTTP/2 Protokoll daher selber implementieren. Gleiches gilt für Server, IIS, nginx etc. implementieren das Protokoll selber.

Sir Rufo 5. Jun 2016 12:51

AW: APN Provider API - HTTP/2
 
Zitat:

Zitat von mjustin (Beitrag 1339550)
Zitat:

Zitat von Sir Rufo (Beitrag 1339549)
Ab Seattle gibt es einen Http-Client der als Wrapper für die Http-Funktionen des OS dient und der sollte eigentlich auch HTTP/2 können.

Aktuell ist mir kein Betriebssystem bekannt, das HTTP/2 direkt unterstützt - die Browser müssen das HTTP/2 Protokoll daher selber implementieren. Gleiches gilt für Server, IIS, nginx etc. implementieren das Protokoll selber.

Ok, noch ein Grund mehr einen Server dazwischen zu schalten :stupid:

Interessant hierzu https://github.com/http2/http2-spec/...mplementations

AndyDF 5. Jun 2016 13:14

AW: APN Provider API - HTTP/2
 
Danke für eure Antworten!

Einen Server habe ich dazwischen geschaltet. Der Push funktioniert soweit auch mit der alten Apple-Implementierung. Da Apple aber empfiehlt, die neue Implementierung über HTTP/2 zu verwenden hatte ich das mal versucht. Ohne Erfolg.

Danke für den Tipp, dass die Verbindung offen gehalten werden sollte. Da muss ich glaube ich nachbessern. ;)

Rollo62 5. Jun 2016 21:12

AW: APN Provider API - HTTP/2
 
Hier war ein Tip von Vaugtler, zu OneSignal.

Damit probiere ich gerade ein bischen rum, scheint ein kostenloser PushServer zu sein.
Aber die REST-Api muss man selber zusammenbauen.
Für einfache Dinge scheint das ausreichend zu sein, habs aber noch nicht 100% am Laufen.

Rollo

AndyDF 6. Jun 2016 15:09

AW: APN Provider API - HTTP/2
 
Da ich leider mit meinen Tests keinen Erfolg hatte die neue API mittels HTTP/2 von Apple anzusprechen, belasse ich es zunächst mal noch bei der Alten.

Allerdings habe ich eure Anmerkungen mit berücksichtigt und schaue, dass ich nicht mehr für jede Push-Nachricht eine eigene Connection aufbaue.
Das hatte ich bisher deswegen, denn wenn einmal eine ungültige Nachricht auf die Connection geschrieben wurde, wurden alle nachfolgenden Nachrichten zwar über die Connection übermittelt aber kamen nie auf dem iPhone an. Jetzt validiere ich halt doppelt, so dass der Stream der Push-Nachricht gültig ist. Läuft jetzt ganz gut.

Viele Grüße,
Andreas


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:34 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz