본문 바로가기
Swfit

APNs에 대해서 알아보기!

by GGShin 2023. 1. 5.

iOS app에서 push notification을 사용하기 위해서는 APNs를 사용해야 합니다.
APNs는 Apple Push Notification service의 약자로 애플에서 푸쉬 알림을 위해 사용하는 API입니다. APNs는 Push Server와 Application 사이에서 token 검증을 하는 중간다리 역할을 합니다.

 



Push Server는 필요에 따라 직접 구축하기도 하지만 편리함을 위해서 Firebase, Braze등의 서비스를 사용하기도 합니다. 어떤 종류던지 Push Server들은 곧바로 app에 push notification을 보낼 수 있는 것이 아닙니다. APNs에 보낸 다음 APNs에서 인증을 한 이후에 app에 push를 보냅니다.

 

전체적인 흐름은 아래 그림과 같습니다. 

출처: https://www.google.com/url?sa=i&url=https%3A%2F%2Fstackoverflow.com%2Fquestions%2F17262511%2Fhow-do-ios-push-notifications-work&psig=AOvVaw1Jxkghl41qa-muvTO-jvH5&ust=1672749017200000&source=images&cd=vfe&ved=0CBAQjRxqFwoTCKiHz-nxqPwCFQAAAAAdAAAAABAb

(+ 4번 과정에서 sever는 payload와 token을 같이 APNs에 보냅니다.)

 

App, APNs 그리고 Push Server 이 세가지가 유기적으로 작동하기 위해서는 서로가 서로에 대해 알고 있어야될 것입니다. 그렇게 서로의 정보를 알려주기 위해서 몇 가지 셋업이 필요합니다.

 

1) APNs Key 발급받기

 🏷 APNs key를 발급받으려면 Apple developer 계정(유료)이 필요합니다. 

APNs 기능을 선택하여 key를 발급 받습니다.

이 Key는 한 번만 다운로드가 가능하기 때문에 잘 보관해두어야 합니다. 그리고 key는 한 계정 당 총 3개까지만 만들 수 있습니다. 

🏷 여기서 발급 받은 key(.p8파일)는 이후 Firebase project에 등록해 줄 것입니다. Firebase project에 key와 TeamID, AppID를 등록해주어 App과 APNs의 정보를 알려주게 됩니다.

 

2) Firebase project 생성 및 App, APNs 정보 등록

 

Firebase에 프로젝트를 생성한 후에 iOS 앱을 등록해 줍니다. 앱 등록 시에 Bundle ID를 입력하게 되는데, 입력한 Bundle ID 및 여러 구성 정보가 들어있는 GoogleService-Info.plist 파일이 생성됩니다. 생성된 plist 파일을 프로젝트에 추가해주어야 합니다. 이 plist를 통해서 App이 Firebase 즉, Push server의 정보를 알 수 있는 것입니다. 

또, 개발자 계정에서 APNs가 가능한 key(.p8)를 발급받고 업로드해줍니다. Key ID와 Team ID도 계정에서 확인해서 입력 필요합니다. 

 

3) App에서 token 받아오기

먼저 XCode에서 프로젝트 설정을 몇가지 해주어야 합니다.

TARGETS > Signing & Capabilities 에서 General 바로 아래에 있는 '+ Capability' 를 눌러서 Background Modes와 Push Notification을 추가해줍니다. 

혹시 Developer 계정임에도 Background Modes와 Push Notification가 없다면 Team을 제대로 선택했는지 확인해보시길 바랍니다!

이렇게 하면 FCM을 사용하기 위한 기본적인 셋업은 완료됩니다.

 

 


 

참고자료

https://babbab2.tistory.com/58

 

iOS) APNs :: Push Notification 동작 방식

안녕하세요 :) 소들입니다!!!! 이번 포스팅에선 iOS에서 Notification이 어떤 방식으로 동작하는지에 대해 다뤄볼 거예요!!!! 이전 포스팅에서 APNs 발급받는 방법에 대해 알아봤다면 이번엔 푸시 알람

babbab2.tistory.com

 

반응형

'Swfit' 카테고리의 다른 글

Missing package product <package name> 에러 해결 방법  (0) 2023.01.14
accessibility identifiers 추가하는 방법  (0) 2023.01.13
iOS Device resolution  (0) 2023.01.04
Apple 인증서 종류  (0) 2023.01.04
Status bar 색상 변경하기!  (0) 2023.01.01