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를 통합해 보세요.
최고의 가성비: All-Access모든 eSeGeCe 제품과 프리미엄 지원이 포함되어 연 €1,059부터 이용할 수 있어요.
All-Access 가격 보기

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

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