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).

TsgcHTTP2Client + TsgcHTTP_JWT_Client

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.

Clase del componente

TsgcHTTP2Client + TsgcHTTP_JWT_Client

Protocolo

APNs HTTP/2

Plataformas

Windows, macOS, Linux, iOS, Android

Edición

Standard / Professional / Enterprise

Firma un JWT, envía la alerta con POST y vigila el estado HTTP/2

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);

Qué incluye

Dos componentes cooperan para gestionar APNs de extremo a extremo: el framing HTTP/2 y la generación de JWT.

Autenticación por token

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).

Autenticación por certificado

Para los certificados universales heredados, establece TLSOptions.CertFile + Password y deja vacío Authentication.Token.JWT. El handshake TLS autentica la conexión.

Producción / Sandbox

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.

apns-topic + cabeceras

Establece Request.CustomHeaders para apns-topic, apns-priority, apns-push-type, apns-collapse-id, apns-expiration según la documentación de Apple.

Multiplexación HTTP/2

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.

SChannel u OpenSSL

Usa iohSChannel en Windows para TLS en modo kernel (sin DLLs) o iohOpenSSL para despliegues de servidor multiplataforma.

Especificaciones y referencias

Fuentes de referencia de las API que implementa este componente.

Documentación y Demos

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.
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.
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.
Manual de usuario (PDF) Manual completo que cubre todos los componentes de la biblioteca.

Preguntas frecuentes sobre Apple Push

Preguntas habituales sobre el envío de notificaciones APNs desde Delphi y C++ Builder.

Combina un 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>.
Ambas. Para la autenticación basada en 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.
Sí. 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).
sgcWebSockets es compatible desde Delphi 7 hasta la última versión de Delphi y las versiones de C++ Builder correspondientes, en Windows, macOS, Linux, iOS y Android. Descarga la prueba gratuita para integrar Apple Push Notifications en tu propio proyecto.
La mejor opción: All-AccessTodos los productos de eSeGeCe, con Premium Support incluido, desde €1,059 al año.
Ver precios de All-Access

¿Listo para enviar notificaciones push APNs desde Delphi?

Descarga la prueba gratuita e integra Apple Push Notifications en tus aplicaciones Delphi.