티스토리 뷰
728x90
오늘은 Remote Notification을 구현하면서 알게된 APNs에 대해 정리해 보려고 합니다.
APNs ?
Apple Push Notification service의 약자로, APN이라고도 부릅니다.
원격알림을 사용할 때 반드시 APNs를 거쳐야하며, 푸시 서버와 기기 사이의 중개자 역할을 합니다.
아래와 같이 말이죠.
아니 그냥 서버에서 알림 보내면 되지않나
왜 한단계 거쳐서 가는거지?
라고 생각을 했었는데 이유는 아래와 같습니다.
APNs 의 역할
1. 알림 전달
- (기기 전원 Off) 서버(Provider)에서 보낸 알림을 APNs에서 보관 → (기기 전원 On) APNs에서 보관하고 있던 알림을 기기로 전달.
- (기기 전원 Off) APNs에 알림이 많이 쌓여있는 상태 → (기기 전원 On) APNs에서 가장 최근의 알림을 기기로 전달.
예외) 너무 오랫동안 기기가 off일 경우 APNs에서는 자동으로 쌓여있는 알림을 삭제합니다.
2. 보안
- 푸시 서버에서 APNs에 암호화하여 알림을 보내게 되는데, 암호화 하는 이유는 APNs만 암호화된 내용을 해독할 수 있고
외부에서의 알림 가로챔과 수정을 방지하기 위함 입니다.
APNs 의 동작순서
위는 1, 2, 3을 이해하기 쉽게 표현한 사진 입니다.
1. App이 APNs에 디바이스 토큰 값을 요청 합니다.
2. APNs에서 수 많은 기기 중에 내 기기를 식별하기 위해 디바이스 토큰 값을 보내 줍니다.
3. 기기에서 APNs에서 받은 디바이스 토큰값을 서버로 보내줍니다.
4. 서버에서 알림 데이터, 디바이스토큰을 APNs에 보냅니다.
5. APNs가 디바이스 토큰을 확인한 후, 전달받은 알림을 기기로 보내줍니다.
오늘 APNs 에 대해서 간단한 역할과 동작방식에 대해서 알아보았는데요.
무작정 찾아서 기능 구현을 하는것보다 흐름을 이해하면서 적용하니
이해가 잘되었던것 같습니다.
참고
728x90
'iOS' 카테고리의 다른 글
[Swift] ARC (Automatic Reference Counting) (0) | 2022.06.19 |
---|---|
[Swift] NSCache, 이미지캐시 개념 (0) | 2022.06.17 |
[Swift] 타입 캐스팅 (Type Casting) (0) | 2022.06.08 |
[Swift] 동시성 - Concurrency (0) | 2022.06.05 |
[iOS] Swift Memory - Copy On Write (COW) (0) | 2022.06.03 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
TAG
- Swift
- removeLast()
- RIBs tutorial
- Swift Leetcode
- swift property
- swift protocol
- Swift 내림차순
- Swift joined()
- 원티드 프리온보딩
- Class
- iOS error
- swift reduce
- Swift init
- RTCCameraVideoCapturer
- Swift ModernRIBs
- swift programmers
- CS 네트워크
- ios
- Swift 프로퍼티
- swift (programmers)
- Swift final
- Swift Error Handling
- Combine: Asynchronous Programming with Swift
- swift 고차함수
- Swift inout
- Swift RIBs
- Swift joined
- Swift 프로그래머스
- Swift 알고리즘
- 2023년 회고
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
글 보관함