개요
푸시 발송 API¶
푸시 알림 시스템은 API 요청을 수신하여 각 OS 및 플랫폼에서 제공하는 메시징 중계 서비스(APNs, FCM, ADM)로 데이터를 전달하고 푸시 알림을 발송합니다. 전체적인 처리 흐름은 아래와 같습니다.
플랫폼별 메시징 중계 서비스 안내
- APNs (Apple Push Notification service): Apple 전용 푸시 서비스
Apple 공식 가이드 - FCM (Firebase Cloud Messaging): Google/Android 전용 푸시 서비스
Firebase 공식 가이드 - ADM (Amazon Device Messaging): Amazon 전용 푸시 서비스
Amazon 공식 가이드
푸시 알림 시스템은 요청 조건에 맞는 토큰 데이터를 찾아 페이로드를 구성하고, 각 메시징 중계 서비스에 전달하는 역할을 담당합니다. 이후 푸시 메시지를 단말에 전송하는 과정은 메시징 중계 서비스에서 수행합니다. 다시 말해, 푸시 알림 시스템이 서비스 호출 과정의 성공 여부를 추적할 뿐 실제 단말에서 미수신했을 때 원인을 파악하는 기능은 지원하지 않습니다.
Tip
APNs에서는 앱 빌드 및 배포 환경(Production 및 Sandbox)별로 전용 엔드포인트를 제공합니다.
- Production: api.push.apple.com
- Sandbox: api.sandbox.push.apple.com
APNs의 프로덕션 및 Sandbox 환경에서 발급된 디바이스 토큰은 토큰을 발급받은 환경에 해당하는 엔드포인트에서만 유효하며, 그 외 환경에서는 사용할 수 없습니다. 자세한 내용은 Apple 공식 문서를 참고하세요.
엔드포인트 결정 정책¶
Hive SDK v4 26.1.0 이상에서는 APNs 토큰 등록 시 앱의 빌드 환경 정보(buildType)을 함께 전달하며, 푸시 알림 시스템은 이 값을 기준으로 엔드포인트를 결정합니다.
| buildType | 사용 엔드포인트 |
|---|---|
development | Sandbox |
development이 아닌 모든 값(production, unknown 등) | Production |
| 전달되지 않음(Hive SDK v4 26.1.0 미만) | 앱센터에 등록한 App ID의 서비스 타입 기준 서비스 타입이 'TEST'이면 Sandbox, 그 외에는 Production |
앱센터 서비스 타입 참조 관련 유의사항
Sandbox 토큰은 Xcode 개발 빌드 환경에서만 발급되며, 해당 환경에서는 buildType이 항상 development로 정확히 전달됩니다. 따라서 development를 제외한 모든 값은 예외 없이 Production 토큰으로 처리됩니다.
buildType이 수신된 토큰은 앱센터의 서비스 타입 설정을 참조하지 않으므로, 앱센터 서비스 타입이 'TEST'로 지정된 앱이더라도 development가 아닌 토큰은 모두 Production 엔드포인트로 발송됩니다.
빌드 방식별 buildType 판별 정책¶
Hive SDK는 앱 패키지 내 embedded.mobileprovision 파일의 aps-environment 값을 읽어 빌드 환경을 판별합니다. 단, TestFlight 및 App Store 배포용 앱은 Apple의 서명 재구성 프로세스에 의해 해당 프로파일 파일이 제거되므로 Hive SDK가 파일에 접근할 수 없어 unknown을 전달합니다.
| 빌드 방식 | 실제 aps-environment | buildType | 사용 엔드포인트 |
|---|---|---|---|
| Xcode 개발 빌드 | development | development | Sandbox |
| Ad Hoc | production | production | Production |
| TestFlight | production | unknown | Production |
| App Store | production | unknown | Production |
unknown은 빌드 환경을 확인할 수 없었다는 의미이며, 해당 상황이 발생하는 TestFlight 및 App Store 빌드는 모두 Production 환경으로 서명됩니다. 따라서 unknown 토큰을 Production 엔드포인트로 발송하는 것이 정상 동작입니다.
환경별 접근 URL¶
| 서버 | URL |
|---|---|
| Production | https://notification.withhive.com https://notification.qpyou.cn |
| Sandbox | https://sandbox-notification.withhive.com https://sandbox-notification.qpyou.cn |
