Delphi ve C++ Builder için Apple Push (APNs) | eSeGeCe

Apple Push Notifications

APNs anlık bildirimlerini Delphi'den HTTP/2 üzerinden api.push.apple.com adresine gönderin. Hem sertifika tabanlı hem de token tabanlı (JWT ES256) kimlik doğrulamayı destekler.

TsgcHTTP2Client + TsgcHTTP_JWT_Client

APNs'yi yönetmek için TsgcHTTP2Client'ı (HTTP/2 taşıma) TsgcHTTP_JWT_Client (ES256 token oluşturma) ile eşleştirin — eski ikili protokol kullanımdan kaldırıldığından beri Apple'ın önerdiği kombinasyon.

Bileşen sınıfı

TsgcHTTP2Client + TsgcHTTP_JWT_Client

Protokol

APNs HTTP/2

Platformlar

Windows, macOS, Linux, iOS, Android

Sürüm

Standard / Professional / Enterprise

Bir JWT imzalayın, uyarıyı POST edin, HTTP/2 durumunu izleyin

TsgcHTTP_JWT_Client'ı APNs ES256 özel anahtarınız ve key/team kimliklerinizle yapılandırın, TsgcHTTP2Client.Authentication.Token.JWT'ye bağlayın, ardından JSON yükünü /3/device/<token> adresine POST edin.

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

İçeriğinde neler var

İşbirliği yapan iki bileşen APNs'yi uçtan uca işler — HTTP/2 çerçeveleme ve JWT oluşturma.

Token tabanlı kimlik doğrulama

Apple AuthKey_*.p8 özel anahtarınızla imzalanmış ES256 JWT'leri. JWT istemcisi token'ı her 40 dakikada bir otomatik olarak yeniler (Apple bir saat içinde döndürme bekler).

Sertifika tabanlı kimlik doğrulama

Eski evrensel sertifikalar için TLSOptions.CertFile + Password ayarlayın ve Authentication.Token.JWT değerini temizleyin. TLS el sıkışması bağlantının kimliğini doğrular.

Üretim / Sandbox

URL'yi üretim için api.push.apple.com veya sandbox için api.development.push.apple.com adresine yönlendirin — aynı bileşen, yalnızca farklı bir ana bilgisayar.

apns-topic + başlıklar

Apple'ın belgelerine göre apns-topic, apns-priority, apns-push-type, apns-collapse-id, apns-expiration için Request.CustomHeaders ayarlayın.

HTTP/2 çoklama

Tek bir TLS bağlantısı dakikada binlerce push gönderir — HTTP/2 akışları istekleri çoklar. Teslimat sonuçları için her çağrıda Response.Status değerini inceleyin.

SChannel veya OpenSSL

Çekirdek modu TLS (DLL gerekmez) için Windows'ta iohSChannel veya çok platformlu sunucu dağıtımları için iohOpenSSL kullanın.

Spesifikasyonlar ve referanslar

Bu bileşenin uyguladığı API'ler için yetkili kaynaklar.

Belgeler ve Demolar

Bileşen referansına doğrudan bağlanın, kullanıma hazır demo projesini alın ve denemeyi indirin.

Çevrimiçi Yardım — TsgcHTTP2Client Bu bileşen için tam özellik, metot ve olay referansı.
Demo Projesi — Demos\20.HTTP_Protocol\07.Apple_Push_Notifications Kullanıma hazır örnek proje. sgcWebSockets paketi içinde gelir — aşağıdan denemeyi indirin.
Teknik Belge (PDF) Delphi ve C++ Builder için özellikler, hızlı başlangıç, kod örnekleri ve birincil kaynak referansları — yalnızca bu bileşen.
Kullanıcı Kılavuzu (PDF) Kütüphanedeki her bileşeni kapsayan kapsamlı kılavuz.

Apple Push Sıkça Sorulan Sorular

Delphi ve C++ Builder'dan APNs bildirimleri gönderme hakkında sık sorulan sorular.

Bir TsgcHTTP2Client (HTTP/2 taşıması) ile bir TsgcHTTP_JWT_Client (ES256 belirteç üretimi) eşleştirin. JWT istemcisini APNs anahtar kimliğiniz, ekip kimliğiniz ve .p8 özel anahtarınızla yapılandırın, bunu HTTP2.Authentication.Token.JWT ile bağlayın, apns-topic başlığını ayarlayın, ardından JSON yükünü https://api.push.apple.com/3/device/<token> adresine POST edin.
Her ikisi de. Belirteç tabanlı kimlik doğrulama için TsgcHTTP_JWT_Client, Apple AuthKey_*.p8 anahtarınızdan ES256 JWT'leri üretir ve bunları otomatik olarak yeniler (Apple bir saat içinde döndürme bekler). Eski sertifika kimlik doğrulaması için TLSOptions.CertFile ve Password ayarlayın ve Authentication.Token.JWT değerini temizleyin, böylece TLS el sıkışması bağlantının kimliğini doğrular.
Evet. TsgcHTTP2Client, kullanımdan kaldırılan ikili protokolün yerini alan APNs HTTP/2 API'sini konuşur. Tek bir TLS bağlantısı, HTTP/2 akışları üzerinden dakikada binlerce push'u çoğullar ve teslimat sonuçları için her çağrıda Response.Status okursunuz. TLS, Windows SChannel (iohSChannel) veya OpenSSL (iohOpenSSL) aracılığıyla çalışır.
sgcWebSockets, Delphi 7'den en yeni Delphi sürümüne ve eşleşen C++ Builder sürümlerine kadar Windows, macOS, Linux, iOS ve Android üzerinde destek sağlar. Apple Push Notifications'ı kendi projenize entegre etmek için ücretsiz denemeyi indirin.

Delphi'den APNs Push'ları Göndermeye Hazır mısınız?

Ücretsiz denemeyi indirin ve Apple Push Notifications'ı Delphi uygulamalarınıza entegre edin.