안녕하세요 :) 소들입니다!!!!
이번 포스팅에선 iOS에서 Notification이 어떤 방식으로
동작하는지에 대해 다뤄볼 거예요!!!!
이전 포스팅에서 APNs 발급받는 방법에 대해 알아봤다면
이번엔 푸시 알람의 전체적인 흐름에 대해 공부해볼 것이랍니다 :)))
이번 공부를 통해 APNs가 그럼 어떤 역할을 하는지도 알게될 거예요! 💩
모든 포스팅은 편의 말투로 합니다~!!
1. Push Notification 이란?
먼저, Push Notification이 뭔지에 대해 알고 갈 것임 :)
물론 알 거라 생각하지만 우리가 아이폰을 사용할 때
이런 식으로 어플에 대한 알람 메세지가 뜨잖음!?!?
이 알람 메세지가 바로 Push Notification임!!!!
1-1. Push Notification은 왜 필요할까?
우리가 만드는 iOS 앱은 Background 상태가 되면 모든 처리 기능이 제한되어 있음!
Background 상태에선 배터리 수명을 절약하기 위해서, 우리 앱은 아주 제한된 기능만 수행할 수 있기 때문임
근데 Background 상태일 때, 혹은 사용자가 어플을 사용하고 있는 상태일 때라도
앱이 사용자에게 어떤 중요한 사실을 알려야 할 수도 있잖음??
이것을 위해 나온 것이 바로 Push Notification임
사용자에게 Push Notification을 보내주는 Push Server가 존재하고,
이 Push Server는 우리 App에 알람을 보내서 사용자에게 메세지를 보여줄 수 있는 거임
따라서 Push Server는 뭔가 사용자에게 알람을 보내고 싶을 때
Push Notification을 통해 보낼 수 있고, 이 푸시 알람이 울릴 때 다음 세 가지 작업을 할 수 있음
① 짧은 텍스트 메세지 표시
② 짧게 소리 울리기
③ 앱 아이콘 배지 숫자 설정
메세지, 소리는 익숙하겠지만, 앱 아이콘 배지 숫자란 건
이걸 말하는 것임 ㅎㅎㅎㅎ (편집 귀엽;)
쨌든 Push Notification이란 이런 것임 ㅎ_ㅎ
앞으로 부르기 편하게 푸시 알람이라고 부르겠음
2. APNs란?
자, 그럼 APNs가 도대체 뭔지 알아보자
Apple Push Notification service
의 약자인데, 보통 APN이라고 부르기도 함!!!
APNs의 정의는 다음과 같은데
third party 개발자가 우리 앱에 푸시 알람을 보낼 수 있도록
Apple에서 만든 알림 서비스 플랫폼
오호.. 여기서 third party 개발자란 위에서 살펴본 Push Server를 말함!!!
우리가 보통 Push Server가 우리 앱에 푸시 알람을 보낸다 생각하면
이렇게 바로 보내면 될 것 같잖음???
근데 Apple은 이렇게 Provider(Push Server)가 앱에 직접 알람을 보내는 것을 용납 못하고
APNs라는 플랫폼을 통해서만 보낼 수 있게 함
따라서 다음과 같이 APNs를 통해서 알람을 주고 받는 것임
뭐 그래 APNs가 가운데서 중간다리 해주는 역할이란 건 알았음
자 그럼 이 셋이 어떻게 푸시 알람을 주고받는지 이제 동작 방식을 보겠음
3. 푸시 알람 동작 방식
자, 먼저 한 가지 궁금증만 들면 동작 방식을 좀 더 쉽게 이해할 수 있음
Push Server는 어떻게 많고 많은 사용자 중에 내 App을 찾아서 푸시 알람을 보낼까?
👀
이 질문에 대한 답이 곧 푸시 알람의 동작 방식임
3-1. 푸시 알람을 위한 필수 동작
① App이 APNs에게 Device Token을 요청한다
여기서 Device Token은 바로 뒤에서 다룰건데, 푸시가 전송되는 App의 주소 라고 생각하면 편함!!!!
위에서 내 App을 어떻게 찾아서 푸시 알람을 보낼까 했다면,
바로 이 Device Token이 내 App을 찾아주는 목적지 주소임
근데 Device Token은 APNs에서 얻을 수 있기 때문에
우리 App이 APNs에 요청하는 것임
② APNs가 App에게 Device Token을 알려준다
3-3. App이 Push Server에게 Device Token을 보낸다
자, 여기까지가 푸시 알람을 받기 위한 필수 동작 방식임
위 과정을 거쳐야 Push Server로부터 푸시 알람을 받을 수 있음
이 이후 과정부턴
Push Server가 실제로 푸시 알람을 울리고 싶을 때의 작동 방법임!!!!
3-2. 푸시 발생 동작 방식
① Push Server는 푸시를 보내고 싶을 때, APNs에게 Device Token과 데이터를 보낸다
이제 Push Server는 뭔가 내 App에 푸시 알람을 울리고 싶다!!할 때
App으로부터 받은
Device Token
데이터 (어떤 메세지를 보낼 것인지)
이 두가지를 APNs에게 보내는 것임
이때 APNs와 Provider는 TLS 통신을 하기 때문에,
Push Server에 인증서가 준비되어 있어야 함
② APNs는 해당 Device Token으로 데이터를 보낸다
③ 내 Device에 푸시 알람이 뜬다
Background 상태면 OS에서 처리해서 띄울거구
Foreground 상태면 AppDelegate에 정의해놓은 방식 대로 APP 위에 띄워질 것임 :)
4. Device Token이란 무엇인가
위에서 Device Token에 대해 잠깐 다뤘지만
푸시가 전송되는 App의 주소
라고 보면 됨 :) 근데 이 Device Token은
애플에서 정한 고유한 식별자를 포함시킨 NSData 형태로, 해독을 APNs만 할 수 있음
각 앱 Instance는 APNs를 등록할 때마다 고유한 Device Token을 수신함
뭐 그럼 :)
근데 이 Device Token은 App을 실행할 때 미리 정의된 콜백 함수를 구현하여 받을 수 있음
(지금은 이론이니 이건 나중에 Test Push 날리는 포스팅 할 때 쓰겠음)
5. 푸시 알람의 데이터 형식
앞서 Push Server가 푸시 알람을 보내려면 APNs에게
Device Token과 데이터를 보내야 한다고 했는데,
이 데이터에도 형식이 있음
JSON 형태여야 하고, payload가 256byte를 초과하지 않는 작은 크기
여야 함 ㅎㅎ 위에서 말했듯이 푸시 알람은 "짧은 데이터"를 보여줘야 하기 때문
JSON 형태는 다음고 ㅏ같음
{
"aps":
{
"alert": "안녕하세요 들소입니다.",
"사운드": "기본 값"
}
}
|
Push Server에서 이를 맞춰서 APNs에게 보내줘야 함
.
.
.
오늘은 iOS의 Push Notification이 어떤 방식으로 동작하는지에 대해 알아봤어요 :)))
근데 APNs 방식 말고 FCM 방식을 사용하면 인증서를 갱신할 필요도 없고
훨씬 간편하다고 하는데 다음에 포스팅 해봐야겠어요!!!
이번 포스팅은 평소 궁금했던 거 정리할겸!!!!
틀린 내용, 피드백, 궁금증은 언제든 환영입니다🌚
'iOS > iOS' 카테고리의 다른 글
iOS) 프로세스(Process) vs 쓰레드(Thread) (8) | 2020.12.01 |
---|---|
iOS) 메모리 저장 방식 - Big Endian / Little Endian (1) | 2020.11.28 |
iOS) APNs :: 인증서 발급받는 방법 (p.12, pem) (11) | 2020.11.23 |
iOS) CAGradientLayer / CABasicAnimation - 색상이 변하는 그라데이션 (2) | 2020.11.20 |
iOS) CAGradientLayer - UIView에 그라데이션 넣기 (2) | 2020.11.19 |