Swift

Apple Push Notification 설정(1)

Daesiker 2024. 8. 25. 00:00
반응형

개요

xCode 프로젝트의 환경설정 중에 Capability라는 항목이 존재한다.

Capability안에는 애플로 로그인, iCloud, Maps, IAP 등 Apple에서 제공하는 앱 서비스들을 추가하고 사용할 수 있다.

Capability안에 있는 서비스 중에는 Apple Developer Program의 멤버인지 여부에 따라 기능이 제한될 수 있는데, Push Notification은 멤버들한테만 제공하는 기능이다.

https://developer.apple.com/documentation/xcode/adding-capabilities-to-your-app/

 

Adding capabilities to your app | Apple Developer Documentation

Configure your target to include and customize capabilities that provide access to Apple’s app services.

developer.apple.com

반응형

동작구조

Front-end

1. 프로젝트 환경설정과 애플 개발자 페이지에서 APNs 서비스를 등록한다.

2. Device에서 APNs에 토큰을 요청하고, APNs는 푸시토큰을 Device에 발급을 한다. 이 때 토큰은 기기별로 제공이 돼서, 푸시알림을 설정한 기기마다 apns토큰을 제공한다.

3. Back-end에 해당 토큰을 전달한다.

Back-end

1. 알림을 보낼 때 HTTP/2 및 TLS를 사용해서

  • Token 기반(.p8)
  • Certification 기반(.p12)
    둘 중 하나로 신뢰를 설정하여 APNs에 요청한다.

토큰 기반은 APNs에서 주는 p8파일을 통해 베리어 토큰을 만들어서 토큰 검증을 통해 푸시알림을 보내는 방식이고, 인증서 기반은 내 애플 계정이 로그인된 맥북으로 인증서를 만들어 APNs에 등록을 하여 검증을 하는 방식이다. 여기에서는 p8을 통해 push notification을 구현할 예정이다.

2. APNs가 해당 디바이스에 Push Notification을 전송한다.

Apple Developer 설정

https://developer.apple.com/account/resources/identifiers/list

 

로그인 - Apple

 

idmsa.apple.com

1. Identifier 등록

보통 xCode IDE에 애플 계정이 로그인 되어있다면 Bundle Identifer와 동일한 Identifier가 개발자 콘솔에도 등록되어 있다. 없다면 상단에 + 버튼을 통해 추가가 가능하다.

여기서 나중에 써먹는 값들이 있는데, 우측 상단에 있는 Team ID와 Identifier은 미리 메모장에 적어두면 벡엔드 처리하기 유용하다.

  • Team ID : 우측 상단에 10자리 코드
  • Identifier : 프로젝트의 Bundle Identifier 혹은 개발자 콘솔에 있는 Identifier(동일한 값임)

2. Capability 등록

해당 Identifer에 들어가서 Capability에 Push Notification을 활성화 한 뒤 Save

3. 토큰 기반 키 (.p8) 생성

Keys 탭에 들어가서 Key 추가

Apple Push Notifications service(APNs) 활성화

APNs를 활성화 할 수 있는 key는 계정 당 단 2개 밖에 못만든다. 하지만 이 키는 해당 계정의 모든 앱에서 다 사용이 가능하다.

.p8 파일은 한번만 다운로드 가능하고 그 이후에는 다운로드 버튼이 비활성화되니, 관리를 잘해야한다.

.p8 파일을 에디터를 통해 열면 문자열이 존재하는데 이 데이터도 중요하니 기억해야한다.

필요한 값

  • Key ID : 이미지안에 있는 Key ID(.p8 파일의 파일명)
  • Key Private Key : .p8 파일을 에디터로 열면 보이는 값 

 

여기까지가 환경설정이고, 이후 포스팅에서는 Front-end와 Back-end에서 구현해야할 코드들에 관한 내용을 다룰 예정이다. 
반응형

'Swift' 카테고리의 다른 글

Apple Push Notification 설정(2)  (1) 2024.09.01
[Swift] Privacy Info  (0) 2024.08.18
<Value Type> Set  (1) 2024.03.03
14. UI Test  (0) 2022.12.31
13. Unit Test(3)  (0) 2022.12.23