Notificaciones Apple Push en Delphi
Envía notificaciones push APNs desde Delphi por HTTP/2 a api.push.apple.com. Admite autenticación basada en certificado y basada en token (JWT ES256).
Envía notificaciones push APNs desde Delphi por HTTP/2 a api.push.apple.com. Admite autenticación basada en certificado y basada en token (JWT ES256).
Combina TsgcHTTP2Client (transporte HTTP/2) con TsgcHTTP_JWT_Client (generación de tokens ES256) para trabajar con APNs — la combinación que Apple recomienda desde que se retiró el protocolo binario heredado.
TsgcHTTP2Client + TsgcHTTP_JWT_Client
Windows, macOS, Linux, iOS, Android
Standard / Professional / Enterprise
Configura TsgcHTTP_JWT_Client con tu clave privada ES256 de APNs y los IDs de clave/equipo, enlázalo a TsgcHTTP2Client.Authentication.Token.JWT y haz un POST del payload JSON a /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);
Dos componentes cooperan para gestionar APNs de extremo a extremo: el framing HTTP/2 y la generación de JWT.
JWTs ES256 firmados con tu clave privada de Apple AuthKey_*.p8. El cliente JWT renueva el token automáticamente cada 40 minutos (Apple espera una rotación en menos de una hora).
Para los certificados universales heredados, establece TLSOptions.CertFile + Password y deja vacío Authentication.Token.JWT. El handshake TLS autentica la conexión.
Apunta la URL a api.push.apple.com para producción o a api.development.push.apple.com para el sandbox — el mismo componente, solo cambia el host.
Establece Request.CustomHeaders para apns-topic, apns-priority, apns-push-type, apns-collapse-id, apns-expiration según la documentación de Apple.
Una sola conexión TLS envía miles de notificaciones push por minuto — los streams HTTP/2 multiplexan las peticiones. Inspecciona Response.Status en cada llamada para conocer el resultado de la entrega.
Usa iohSChannel en Windows para TLS en modo kernel (sin DLLs) o iohOpenSSL para despliegues de servidor multiplataforma.
Fuentes de referencia de las API que implementa este componente.
Enlace directo a la referencia del componente, descarga el proyecto demo listo para ejecutar y la prueba gratuita.
| Online Help — TsgcHTTP2Client Referencia completa de propiedades, métodos y eventos de este componente. | Abrir | |
| Demo Project — Demos\20.HTTP_Protocol\07.Apple_Push_Notifications Proyecto de ejemplo listo para ejecutar. Se incluye en el paquete sgcWebSockets — descarga la prueba gratuita más abajo. | Abrir | |
| Documento técnico (PDF) Características, inicio rápido, ejemplos de código para Delphi y C++ Builder y referencias de fuentes primarias — solo este componente. | Abrir | |
| Manual de usuario (PDF) Manual completo que cubre todos los componentes de la biblioteca. | Abrir |
Preguntas habituales sobre el envío de notificaciones APNs desde Delphi y C++ Builder.
TsgcHTTP2Client (transporte HTTP/2) con un TsgcHTTP_JWT_Client (generación de tokens ES256). Configura el cliente JWT con tu key ID de APNs, tu team ID y tu clave privada .p8, enlázalo a HTTP2.Authentication.Token.JWT, establece la cabecera apns-topic, y luego envía por POST el payload JSON a https://api.push.apple.com/3/device/<token>.TsgcHTTP_JWT_Client genera JWTs ES256 a partir de tu clave AuthKey_*.p8 de Apple y los refresca automáticamente (Apple espera la rotación en menos de una hora). Para la autenticación heredada por certificado, establece TLSOptions.CertFile y Password y vacía Authentication.Token.JWT, de modo que el handshake TLS autentique la conexión.TsgcHTTP2Client habla la API HTTP/2 de APNs que reemplazó al protocolo binario retirado. Una única conexión TLS multiplexa miles de pushes por minuto sobre streams HTTP/2, y lees Response.Status en cada llamada para los resultados de entrega. TLS funciona a través de Windows SChannel (iohSChannel) u OpenSSL (iohOpenSSL).