Delphi 및 C++ Builder용 Apple Push (APNs) | eSeGeCe

Apple Push 알림

Delphi에서 HTTP/2를 통해 api.push.apple.com으로 APNs 푸시 알림을 전송하세요. 인증서 기반과 토큰 기반(JWT ES256) 인증을 모두 지원해요.

TsgcHTTP2Client + TsgcHTTP_JWT_Client

TsgcHTTP2Client(HTTP/2 전송)와 TsgcHTTP_JWT_Client(ES256 토큰 생성)를 결합하여 APNs를 사용해요 — 레거시 바이너리 프로토콜이 폐기된 이후 Apple이 권장하는 조합이에요.

컴포넌트 클래스

TsgcHTTP2Client + TsgcHTTP_JWT_Client

프로토콜

APNs HTTP/2

플랫폼

Windows, macOS, Linux, iOS, Android

에디션

Standard / Professional / Enterprise

JWT 서명, 알림 POST, HTTP/2 상태 확인

APNs ES256 개인 키와 키/팀 ID로 TsgcHTTP_JWT_Client를 설정하고 TsgcHTTP2Client.Authentication.Token.JWT에 연결한 다음, /3/device/<token>에 JSON 페이로드를 POST하세요.

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

내부 구성

두 개의 협력 컴포넌트가 APNs를 종단 간으로 처리해요 — HTTP/2 프레이밍과 JWT 생성.

토큰 기반 인증

Apple AuthKey_*.p8 개인 키로 서명된 ES256 JWT. JWT 클라이언트는 40분마다 자동으로 토큰을 갱신해요(Apple은 한 시간 내 갱신을 권장해요).

인증서 기반 인증

레거시 범용 인증서의 경우 TLSOptions.CertFile + Password를 설정하고 Authentication.Token.JWT를 비우세요. TLS 핸드셰이크가 연결을 인증해요.

프로덕션 / 샌드박스

프로덕션은 api.push.apple.com, 샌드박스는 api.development.push.apple.com으로 URL을 지정하세요 — 동일한 컴포넌트, 호스트만 달라요.

apns-topic + 헤더

Apple의 문서에 따라 apns-topic, apns-priority, apns-push-type, apns-collapse-id, apns-expiration에 대해 Request.CustomHeaders를 설정하세요.

HTTP/2 멀티플렉싱

단일 TLS 연결이 분당 수천 건의 푸시를 보내요 — HTTP/2 스트림이 요청을 멀티플렉싱해요. 호출별로 Response.Status를 확인하여 전달 결과를 확인해요.

SChannel 또는 OpenSSL

Windows에서 커널 모드 TLS를 사용하려면 iohSChannel(DLL 불필요)을, 크로스플랫폼 서버 배포에는 iohOpenSSL을 사용하세요.

사양 & 참고 자료

이 컴포넌트가 구현하는 API의 공식 출처.

문서 & 데모

컴포넌트 레퍼런스로 바로 이동하고, 바로 실행 가능한 데모 프로젝트를 가져오고, 체험판을 다운로드해요.

온라인 도움말 — TsgcHTTP2Client Full property, method and event reference for this component.
데모 프로젝트 — Demos\20.HTTP_Protocol\07.Apple_Push_Notifications 바로 실행 가능한 예제 프로젝트. sgcWebSockets 패키지에 포함되어 있어요 — 아래에서 체험판을 다운로드하세요.
기술 문서 (PDF) 이 컴포넌트만의 기능, 빠른 시작, Delphi & C++ Builder 코드 샘플과 1차 출처 참고 자료.
사용자 설명서 (PDF) 라이브러리의 모든 컴포넌트를 다루는 종합 설명서.

Apple Push 자주 묻는 질문

Delphi 및 C++ Builder에서 APNs 알림을 보내는 것에 대해 자주 묻는 질문이에요.

TsgcHTTP2Client(HTTP/2 전송)와 TsgcHTTP_JWT_Client(ES256 토큰 발행)를 함께 사용하세요. JWT 클라이언트를 APNs 키 ID, 팀 ID 및 .p8 개인 키로 구성하고, HTTP2.Authentication.Token.JWT에 연결하고, apns-topic 헤더를 설정한 다음, JSON 페이로드를 https://api.push.apple.com/3/device/<token>에 POST하세요.
둘 다요. 토큰 기반 인증의 경우 TsgcHTTP_JWT_Client가 Apple AuthKey_*.p8 키에서 ES256 JWT를 발행하고 자동으로 갱신해요(Apple은 한 시간 이내 교체를 기대해요). 레거시 인증서 인증의 경우 TLSOptions.CertFilePassword를 설정하고 Authentication.Token.JWT를 지우면, TLS 핸드셰이크가 연결을 인증해요.
네. TsgcHTTP2Client는 폐기된 바이너리 프로토콜을 대체한 APNs HTTP/2 API를 사용해요. 단일 TLS 연결이 HTTP/2 스트림을 통해 분당 수천 건의 푸시를 멀티플렉싱하며, 호출별로 Response.Status를 읽어 전달 결과를 확인해요. TLS는 Windows SChannel(iohSChannel) 또는 OpenSSL(iohOpenSSL)을 통해 실행돼요.
sgcWebSockets는 Delphi 7부터 최신 Delphi 릴리스까지, 그리고 해당하는 C++ Builder 버전을 Windows, macOS, Linux, iOS, Android에서 지원해요. 무료 체험판을 다운로드하여 직접 프로젝트에 Apple Push Notifications를 통합해 보세요.

Delphi에서 APNs 푸시를 보낼 준비가 되셨나요?

무료 체험판을 다운로드하고 Delphi 애플리케이션에 Apple Push 알림을 통합해 보세요.