본문 바로가기

iOS/iOS

iOS) APNs :: Push Notification 동작 방식

 

 

안녕하세요 :) 소들입니다!!!!

이번 포스팅에선 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 방식을 사용하면 인증서를 갱신할 필요도 없고

훨씬 간편하다고 하는데 다음에 포스팅 해봐야겠어요!!!

이번 포스팅은 평소 궁금했던 거 정리할겸!!!! 

 

틀린 내용, 피드백, 궁금증은 언제든 환영입니다🌚



Calendar
«   2024/04   »
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
최근 댓글
Visits
Today
Yesterday