Apns Provider API
1. HTTP/2 프로토콜을 통해 APNS와 연결 가능하며, 인증서와 JWT Token을 이용해 푸쉬 알림을 보낼 수 있다.
2. HTTP/2 프로토콜을 이용한 APNS는 다음과 같은 특징을 갖고 있다.
http/2 ping Frame을 통해 연결 유지 가능하다.
http/2 goaway Frame을 통해 연결 종료 가능하다.
Request Format
<HTTP/2 Header>
Method |
POST |
PATH |
/3/device/<장치토큰> |
위의 두가지는 필수적으로 추가해야한다.
추가적으로 포함시켜야 하는 키와 데이터는 다음과 같은 항목이 있다,.
- authorization : 인증서 방식이 아닌 토큰 방식을 사용할 때 사용되는 키값이다.
(토큰은 base64url에 인코딩된(Signature) jwt format 이어야 한다. 구체적으로 Bearer + <jwt token> 형태이다.)
- apns-topic : 인증서 방식이 아닌 토큰 방식을 사용되는 키값이다. 토큰 방식은 모든 앱에 전송할 수 있다.
그렇기 때문에 apns-topic 키 값의 앱의 bundle_id에 해당하는 데이터를 입력한다.
- apns-id : UUID 값, 형태는 32글자의 소문자를 포함한 16진수 Ex) 123e4567-e89b-12d3-a456-42665544000)
- apns-expiration : utc 시간, 0이면 저장하지 않고 바로 보낸다.
- apns-priority : 10이면 즉시보내고, 5이면 클라이언트의 전원장치를 고려하여 전송한다. 기본값은 10이다.
- apns-collapse-id : 64바이트를 초과하지 않아야 하고, 동일한 식별자 값의 알림을 단일 알림으로 표시한다.
<HTTP/2 Body>
- 보내고자 하는 Payload 데이터를 담아 보낸다.
Response Format
<HTTP/2 Header>
Apns-id | Request apns-id의 값. 요청에서 포함하지 않았다면 apns 서버 자체적으로 새uuid를 만들고 헤더에 반환한다. |
Status | 응답 코드 |
Status
<HTTP/2 body>
- 성공적으로 request 요청이 수행되면 body 데이터는 비어있다.
- 실패하면 다음과 같은 항목이 포함된다.
Reason | 실패에 대한 이유 |
timestamp | 410 에러 상태일 때만 나오는 키 값 , 디바이스 토큰이 마지막으로 활성화 되었을 때의 시간 |
Status 및 Reason
Netty를 통해 샘플코드를 작성해볼 수있다.
참고
https://developer.apple.com/library/content/documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/BinaryProviderAPI.html#//apple_ref/doc/uid/TP40008194-CH13-SW1
'Cloud & NoSQL & Middleware > Apns' 카테고리의 다른 글
APNS HTTP/2 토큰 방식 인증 (1) - JWT (Json Web Token) (0) | 2018.06.11 |
---|---|
Binary Provider API 구현 (0) | 2018.06.11 |
FeedbackService - Format, Packet (0) | 2018.05.29 |
Binary Provider API - Request, Response Format (0) | 2018.05.25 |
APNS Provider Protocol (0) | 2018.05.25 |