[iOS] Notification Push 사용 - 1 : Push?

Sean·2023년 5월 17일
0

iOS 앱 기능

목록 보기
1/4

누군가에게 알려주기 보다는 나 스스로 정리 하며 언젠가 다시 사용할 때를 대비하는 글을 작성할것이다.

시작

시작글

  • 앱을 개발을 하게되면 push를 띄우게 하는 작업은 거의 모든 앱에 탑재가 되어있다.

  • 그게 어떠한 방식을 사용하든지 말이다.
    당연히 나도 사용을 했지만 100% 완벽하게 이해하고 숙지한 상태에서 했다기 보다는 구글링과 블로그를 봐가면서 Copy & Paste 로 구현을 했었다.

  • 그럴바에는 남들의 자료보다 내 블로그에서 Copy & Paste 를 하는게 빠르고 편할것 같아서 이렇게 정리를 해보고자 한다.

분석

Push ?

Push 기능은 거진 모든 앱에 다 기본적으로 탑재가 되어있는것을 경험을 통해서 알 수 있다.

그렇다면 왜? 이 기능이 많이 사용이 되는지 그 이유에 대해서 알아볼 필요가 있다.

Push 가 언제, 왜 나타나는지를 생각해보면 그 이유를 쉽게 유추 할 수 있다.

  1. When?: App State is ForeGround or BackGround
  2. Why?: The app wanna tell YOU with IMPORTANT information!

즉, 항상 앱에서 사용자에게 중요한 무언가를 알리고 싶을때 사용한다고 보면 된다.

푸시작업을 하게 되면 1. 메세지 표시, 2. 사운드 재생, 3. 뱃지 설정 의 작업을 할 수 있다.

그렇다면 Push가 동작되는 방식을 알아봐야 하는데 2개를 생각하면 된다.

  1. Local Push
  2. APNs

Local Push의 경우에는 앱이 직접 보내는 푸시라고 생각하면 된다.

APNs 는 서버에서 보내는 푸시라고 생각하면 된다.
(파이어 베이스의 FCM 도 결국에는 구글이 보내는 APNs이다)

APNs 의 경우에는 서버에서 보내기에 앱을 사용하지 않아도 알림을 받을 수 있다.
그러다보니 간단한 앱이 아니고서는 APNs로 대부분 구성한다.


APNs ?

  • APNs == Apple Push Notification service

서드 파티 개발자가 앱에 푸시를 보낼 수 있게 애플에서 만든 서비스이다.
여기서 서드 파티라 하면 앞서 말했던 서버를 칭한다.

|My App| <--- |APNs| <---- |Server|

서버에서 바로 앱으로 보내는 방식이 아니라 APNs가 둘 사이에 껴서 구름다리 역할을 해주는것이라고 생각하면 된다.

Push 동작 방식 ?

Push를 받기 위한 필수 동작 방식

  1. App이 APNs에 Device Token을 요청
  2. APNs가 App에게 Device Token 전송
  3. App이 Server에게 Device Token 전송
  • 설명

    1. App이 APNs에 Device Token을 요청

      • Device Token 은 Push 를 제대로 App에 보내기 위한 고유 주소 역할을 한다.
      • 기기와 앱 모두 고유한 주소를 가지며 두 앱이 같은 기기에 있더라도 A앱의 토큰을 B에서 사용할 수 없다.
      • Device Token은 APNs에서 얻을 수 있기에 이를 요청하는것이다.
    2. APNs가 App에게 Device Token 전송

      • APNs만 얻을 수 있기에 이 값을 알려준다.
    3. App이 Server에게 Device Token 전송

      • 그럼 이제 받은 값을 Server에 보내 App에 제대로 push를 보낼 수 있게 만들어준다.

Push 발생 동작 방식

  1. Server는 APNs에게 [Device Token + Data]를 전송
  2. APNs에서 Device Token으로 Data전송
  3. App에서 Push 동작
  • 설명
    1. Server는 APNs에게 [Device Token + Data]를 전송
      • 이때 APNs 와 Server 간에는 통신을 위한 인증서가 있어야 한다.
      • Data에도 특별한 형식이 존재하는데 이는 밑에서 따로 설명하겠다.
    2. APNs에서 Device Token으로 Data전송
    3. App에서 Push 동작
      • Background 와 Foreground 상태에 따라서 맞춰준대로 동작한다.

Push의 데이터 형식

  1. JSON 형태
  2. 256byte 미만

참고자료

기타

당연 틀린 부분 지적은 감사하나 비난은 정중하게 사양하겠다.

  • APNs 말고 FCM을 사용하면 갱신 필요없이 가능하다니 FCM 에 대해서 알아보는것도 좋을 듯 하다.
profile
"잘 할 수 있을까?"를 고민하기보단 재밌어 보이는건 일단 하고, 잘하기 위해 그냥 계속합니다.

0개의 댓글