Apple Push (APNs) für Delphi & C++ Builder | eSeGeCe

Apple Push Notifications

Sende APNs Push-Benachrichtigungen aus Delphi über HTTP/2 an api.push.apple.com. Unterstützt sowohl zertifikatbasierte als auch tokenbasierte (JWT ES256) Authentifizierung.

TsgcHTTP2Client + TsgcHTTP_JWT_Client

Kombiniere TsgcHTTP2Client (HTTP/2-Transport) mit TsgcHTTP_JWT_Client (ES256-Token-Erzeugung), um APNs anzusteuern — die von Apple empfohlene Kombination, seit das alte binäre Protokoll abgeschaltet wurde.

Komponentenklasse

TsgcHTTP2Client + TsgcHTTP_JWT_Client

Protokoll

APNs HTTP/2

Plattformen

Windows, macOS, Linux, iOS, Android

Edition

Standard / Professional / Enterprise

JWT signieren, Alert per POST senden, HTTP/2-Status prüfen

Konfiguriere TsgcHTTP_JWT_Client mit deinem privaten APNs-ES256-Schlüssel sowie Key-/Team-IDs, verknüpfe ihn mit TsgcHTTP2Client.Authentication.Token.JWT und sende dann die JSON-Payload per POST an /3/device/<token>.

uses
  sgcHTTP, sgcBase_Helpers;

var
  HTTP2: TsgcHTTP2Client;
  JWT: TsgcHTTP_JWT_Client;
begin
  JWT := TsgcHTTP_JWT_Client.Create(nil);
  JWT.JWTOptions.Header.alg := jwtES256;
  JWT.JWTOptions.Header.kid := 'APPLE-KEY-ID';
  JWT.JWTOptions.Payload.iss := 'APPLE-TEAM-ID';
  JWT.JWTOptions.Payload.iat := StrToInt64(GetDateTimeUnix(Now, False));
  JWT.JWTOptions.Algorithms.ES.PrivateKey.LoadFromFile('AuthKey_XXX.p8');
  JWT.JWTOptions.RefreshTokenAfter := 40 * 60;

  HTTP2 := TsgcHTTP2Client.Create(nil);
  HTTP2.TLSOptions.IOHandler := iohSChannel;
  HTTP2.Authentication.Token.JWT := JWT;
  HTTP2.Request.CustomHeaders.Clear;
  HTTP2.Request.CustomHeaders.Add('apns-topic: com.example.app');

  HTTP2.Post(
    'https://api.push.apple.com/3/device/',
    '{"aps":{"alert":"hello","sound":"default"}}');
end;
// uses: sgcHTTP
TsgcHTTP_JWT_Client *JWT = new TsgcHTTP_JWT_Client(this);
JWT->JWTOptions->Header->alg = jwtES256;
JWT->JWTOptions->Header->kid = "APPLE-KEY-ID";
JWT->JWTOptions->Payload->iss = "APPLE-TEAM-ID";
JWT->JWTOptions->Algorithms->ES->PrivateKey->LoadFromFile("AuthKey_XXX.p8");

TsgcHTTP2Client *HTTP2 = new TsgcHTTP2Client(this);
HTTP2->Authentication->Token->JWT = JWT;
HTTP2->Request->CustomHeaders->Add("apns-topic: com.example.app");
HTTP2->Post("https://api.push.apple.com/3/device/", payload);

Was steckt drin

Zwei zusammenarbeitende Komponenten erledigen APNs durchgängig — HTTP/2-Framing und JWT-Erzeugung.

Tokenbasierte Authentifizierung

ES256-JWTs, signiert mit deinem privaten Apple-Schlüssel AuthKey_*.p8. Der JWT-Client erneuert das Token automatisch alle 40 Minuten (Apple erwartet eine Rotation innerhalb einer Stunde).

Zertifikatbasierte Authentifizierung

Für ältere Universalzertifikate setze TLSOptions.CertFile + Password und leere Authentication.Token.JWT. Der TLS-Handshake authentifiziert die Verbindung.

Produktion / Sandbox

Richte die URL für die Produktion auf api.push.apple.com oder für die Sandbox auf api.development.push.apple.com — dieselbe Komponente, nur ein anderer Host.

apns-topic + Header

Setze Request.CustomHeaders für apns-topic, apns-priority, apns-push-type, apns-collapse-id, apns-expiration gemäß Apples Dokumentation.

HTTP/2-Multiplexing

Eine einzige TLS-Verbindung sendet Tausende Pushes pro Minute — HTTP/2-Streams multiplexen die Anfragen. Prüfe Response.Status je Aufruf auf die Zustellergebnisse.

SChannel oder OpenSSL

Nutze iohSChannel unter Windows für TLS im Kernelmodus (keine DLLs nötig) oder iohOpenSSL für plattformübergreifende Server-Bereitstellungen.

Spezifikationen & Referenzen

Maßgebliche Quellen für die APIs, die diese Komponente implementiert.

Dokumentation & Demos

Springe direkt zur Komponentenreferenz, lade das einsatzbereite Demo-Projekt herunter und teste die Testversion.

Online-Hilfe — TsgcHTTP2Client Vollständige Eigenschaften-, Methoden- und Ereignisreferenz für diese Komponente.
Demo-Projekt — Demos\20.HTTP_Protocol\07.Apple_Push_Notifications Einsatzbereites Beispielprojekt. Im sgcWebSockets-Paket enthalten — lade unten die Testversion herunter.
Technisches Dokument (PDF) Funktionen, Schnellstart, Codebeispiele für Delphi & C++ Builder und Primärquellenreferenzen — nur für diese Komponente.
Benutzerhandbuch (PDF) Umfassendes Handbuch zu jeder Komponente der Bibliothek.

Apple Push – Häufig gestellte Fragen

Häufige Fragen zum Senden von APNs-Benachrichtigungen aus Delphi und C++ Builder.

Kombiniere einen TsgcHTTP2Client (HTTP/2-Transport) mit einem TsgcHTTP_JWT_Client (ES256-Token-Erzeugung). Konfiguriere den JWT-Client mit deiner APNs-Key-ID, Team-ID und deinem .p8-Private-Key, verknüpfe ihn mit HTTP2.Authentication.Token.JWT, setze den apns-topic-Header und sende dann die JSON-Payload per POST an https://api.push.apple.com/3/device/<token>.
Beides. Für tokenbasierte Auth erzeugt TsgcHTTP_JWT_Client ES256-JWTs aus deinem Apple-AuthKey_*.p8-Key und erneuert sie automatisch (Apple erwartet eine Rotation innerhalb einer Stunde). Für die ältere Zertifikat-Auth setzt du TLSOptions.CertFile und Password und löschst Authentication.Token.JWT, sodass der TLS-Handshake die Verbindung authentifiziert.
Ja. TsgcHTTP2Client spricht die APNs-HTTP/2-API, die das eingestellte Binärprotokoll abgelöst hat. Eine einzige TLS-Verbindung multiplext Tausende von Pushes pro Minute über HTTP/2-Streams, und du liest Response.Status pro Aufruf für die Zustellergebnisse aus. TLS läuft über Windows SChannel (iohSChannel) oder OpenSSL (iohOpenSSL).
sgcWebSockets unterstützt Delphi 7 bis zum aktuellen Delphi-Release und die passenden C++ Builder-Versionen, unter Windows, macOS, Linux, iOS und Android. Lade die kostenlose Testversion herunter, um Apple Push Notifications in dein eigenes Projekt zu integrieren.

Bereit, APNs-Pushes aus Delphi zu senden?

Lade die kostenlose Testversion herunter und integriere Apple Push Notifications in deine Delphi-Anwendungen.