AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

APN Provider API - HTTP/2

Ein Thema von AndyDF · begonnen am 5. Jun 2016 · letzter Beitrag vom 6. Jun 2016
Antwort Antwort
AndyDF

Registriert seit: 6. Sep 2006
Ort: Allgäu
99 Beiträge
 
Delphi 10.4 Sydney
 
#1

APN Provider API - HTTP/2

  Alt 5. Jun 2016, 10:51
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
Andreas Blenk
  Mit Zitat antworten Zitat
Benutzerbild von Valle
Valle

Registriert seit: 26. Dez 2005
Ort: Karlsruhe
1.223 Beiträge
 
#2

AW: APN Provider API - HTTP/2

  Alt 5. Jun 2016, 10:54
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?
Valentin Voigt
BOFH excuse #423: „It's not RFC-822 compliant.“
Mein total langweiliger Blog
  Mit Zitat antworten Zitat
mjustin

Registriert seit: 14. Apr 2008
3.006 Beiträge
 
Delphi 2009 Professional
 
#3

AW: APN Provider API - HTTP/2

  Alt 5. Jun 2016, 12:47
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.
Michael Justin
habarisoft.com
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#4

AW: APN Provider API - HTTP/2

  Alt 5. Jun 2016, 13:28
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.
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)

Geändert von Sir Rufo ( 5. Jun 2016 um 13:32 Uhr)
  Mit Zitat antworten Zitat
mjustin

Registriert seit: 14. Apr 2008
3.006 Beiträge
 
Delphi 2009 Professional
 
#5

AW: APN Provider API - HTTP/2

  Alt 5. Jun 2016, 13:40
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.
Michael Justin
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#6

AW: APN Provider API - HTTP/2

  Alt 5. Jun 2016, 13:51
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

Interessant hierzu https://github.com/http2/http2-spec/...mplementations
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
AndyDF

Registriert seit: 6. Sep 2006
Ort: Allgäu
99 Beiträge
 
Delphi 10.4 Sydney
 
#7

AW: APN Provider API - HTTP/2

  Alt 5. Jun 2016, 14:14
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.
Andreas Blenk
  Mit Zitat antworten Zitat
Rollo62

Registriert seit: 15. Mär 2007
4.116 Beiträge
 
Delphi 12 Athens
 
#8

AW: APN Provider API - HTTP/2

  Alt 5. Jun 2016, 22:12
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
  Mit Zitat antworten Zitat
AndyDF

Registriert seit: 6. Sep 2006
Ort: Allgäu
99 Beiträge
 
Delphi 10.4 Sydney
 
#9

AW: APN Provider API - HTTP/2

  Alt 6. Jun 2016, 16:09
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
Andreas Blenk
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:53 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