Apple Push Notifications

Envie notificações push APNs a partir do Delphi via HTTP/2 para api.push.apple.com. Suporta autenticação por certificado e por token (JWT ES256).

TsgcHTTP2Client + TsgcHTTP_JWT_Client

Combine TsgcHTTP2Client (transporte HTTP/2) com TsgcHTTP_JWT_Client (emissão de token ES256) para acionar o APNs — a combinação recomendada pela Apple desde a aposentadoria do protocolo binário legado.

Classe do componente

TsgcHTTP2Client + TsgcHTTP_JWT_Client

Protocolo

APNs HTTP/2

Plataformas

Windows, macOS, Linux, iOS, Android

Edição

Standard / Professional / Enterprise

Assine um JWT, faça POST do alerta, verifique o status HTTP/2

Configure TsgcHTTP_JWT_Client com sua chave privada ES256 do APNs e os IDs de chave/equipe, vincule-o a TsgcHTTP2Client.Authentication.Token.JWT e faça POST do payload JSON para /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);

O que tem por dentro

Dois componentes cooperantes tratam o APNs de ponta a ponta — framing HTTP/2 e emissão de JWT.

Autenticação por token

JWTs ES256 assinados com sua chave privada Apple AuthKey_*.p8. O cliente JWT renova o token automaticamente a cada 40 minutos (a Apple exige rotação em menos de uma hora).

Autenticação por certificado

Para certificados universais legados, defina TLSOptions.CertFile + Password e limpe Authentication.Token.JWT. O handshake TLS autentica a conexão.

Produção / Sandbox

Aponte a URL para api.push.apple.com em produção ou api.development.push.apple.com para o sandbox — mesmo componente, apenas host diferente.

apns-topic + cabeçalhos

Defina Request.CustomHeaders para apns-topic, apns-priority, apns-push-type, apns-collapse-id, apns-expiration conforme a documentação da Apple.

Multiplexação HTTP/2

Uma única conexão TLS envia milhares de notificações por minuto — os streams HTTP/2 multiplexam as requisições. Verifique Response.Status por chamada para os resultados de entrega.

SChannel ou OpenSSL

Use iohSChannel no Windows para TLS em modo kernel (sem DLLs necessárias) ou iohOpenSSL para implantações de servidor multiplataforma.

Especificações e referências

Fontes autoritativas das APIs que este componente implementa.

Documentação e demos

Acesse a referência do componente, obtenha o projeto demo pronto para executar e baixe a versão de avaliação.

Ajuda online — TsgcHTTP2Client Referência completa de propriedades, métodos e eventos deste componente.
Projeto de demonstração — Demos\20.HTTP_Protocol\07.Apple_Push_Notifications Projeto de exemplo pronto para executar. Acompanha o pacote sgcWebSockets — baixe a versão de avaliação abaixo.
Documento técnico (PDF) Recursos, início rápido, exemplos de código para Delphi & C++ Builder e referências de fontes primárias — somente este componente.
Manual do usuário (PDF) Manual abrangente cobrindo todos os componentes da biblioteca.

Pronto para enviar notificações APNs a partir do Delphi?

Baixe a versão de avaliação gratuita e integre o Apple Push Notifications às suas aplicações Delphi.