티스토리 뷰
Firebase APN(Apple Push Notification) 세팅하기
FCM 세팅은 두 가지 방법으로 할 수 있다.
- p8(인증키)
- p12(인증서)
p8(인증키) 방식이 최신으로 나온 방식이다. 현 프로젝트는 p8(인증키)를 이용해서 세팅 되어있다. p8 방식은 한개의 키로 여러 앱에 등록할 수 있고, 1년마다 갱신해줘야하는 p12와 다르게 유효기간이 따로 없으므로 훨씬 편리한 방식이다.
애플 개발자 페이지 에서 Certificates, Identifiers & Profiles 탭에서 좌측 Keys를 눌러서 접근하면 된다. Keys가 뜨지 않는다면, 계정 owner에게 ‘관리’ 권한을 달라고 해야한다. ‘제품 개발’이나 ‘마케팅’, ‘재정 관리’ 같은 role에는 인증서에 접근할 권한이 없다.

p8 방식 세팅법
- Firebase SDK는 pod을 이용해서 이미 프로젝트에 세팅 되어있다고 가정한다.
- Firebase/Core 와 Firebase/Messaging 도 pod을 이용해서 설치가 되었다고 가정한다.
- Xcode 프로젝트 설정의 Capabilities 탭에서, Push Notifications를 추가해준다.


- 애플 개발자 페이지에서 APN 인증키를 다운로드 받는다. Keys에서 +를 누르고, APNs에 체크 해서 p8파일을 만들어준다.


- 파일을 download 받아서 firebase settings에 업로드 해준다. 주의할 점이, 이 파일은 단 한번밖에 다운로드 받지 못한다. 키 파일은 여러 앱에서 같이 쓸 수 있다.( p8타입은 딱 2개밖에 못만든다. 그러므로 파일을 잘 갖고 있어야 한다. ) 현재 프로젝트에 적용된 p8 파일은 프로젝트 폴더에 같이 들어있다.
- p8파일을 업로드 할때, Key ID와 Team ID를 같이 입력해줘야 한다.
p12 방식 세팅법
p12(인증서)방식은 유효기간이 1년이므로 1년에 한번씩 갱신 해줘야 한다. 또 여러 앱에 공통으로 쓸 수 있는 p8과 다르게, 앱마다 고유한 CSR을 발급 해야 한다. 현재 jsceno 프로젝트에 연결된 앱은 총 4개이므로, 각각 다른 CSR을 적용해 줘야 한다.
3번까지는 p8방식과 동일하다.
- 맥에서
키체인 접근 > 인증서 지원 > 인증 기관에서 인증서 요청
으로 인증서를 발급 받는다.


디스크에 저장됨
옵션을 써야 한다.
일반 이름
은 바꿔도 상관 없다. 여러 인증서를 발급받으면 헷깔릴 염려가 있으므로 고유한 이름으로 잘 관리해주는게 편하다.


certSigningRequest 파일 형식을 다운 받아서 잘 저장해 둔다.


키 쌍 조건은 주어진 조건을 써도 된다. (2048비트, RSA)


참고로, 이 프로젝트는 앱이 4개가 있다.
A, A-staff, A-dev, A-staff-dev.
각 앱은 2개의 인증키가 필요하다.(개발 / 프로덕션)
그러므로 개발자는 총 8개의 인증서를 생성해야 한다. 8개의 인증서를 생성하면 개인키 한개, 공개키 한개씩 총합 2개이므로 16개의 키가 생기게 될 것이다.
- 애플 개발자 페이지에서 App ID를 추가 해준다. signing이 되었다면 Xcode에서 자동으로 생성 해줬을 것이다.
잘 되어있는지 확인만 해주면 된다.


- 애플 개발자 페이지에서 Push Notifications 인증서를 등록해준다.

configure 눌러서 Development SSL 인증서와 Production SSL 인증서를 등록해줘야 한다.
6번에서 다운받은 CSR파일을 올려서, 인증서(.cer)를 발급 받는다.



- 다운받은 cer 파일을 더블클릭해서 열고 키체인에 추가해준다.


추가가 잘 된다면 개인키에 인증서가 생기게 된다.


- 개인키에 생긴 인증서를 내보내기 해서, 파이어베이스에 올려준다.


- 암호를 입력하지 않고 엔터 치면 암호화 안하고 바로 넘어갈 수 있다.
파이어베이스 설정 > 클라우드 메시징 의 APN 인증서를 등록하는 곳에 p12 파일을 올려준다.


'macOS, iOS' 카테고리의 다른 글
[iOS] UNUserNotificationCenterDelegate의 두가지 didReceiveRemoteNotification 함수 (0) | 2020.03.18 |
---|---|
[iOS] 앱 foreground 상태에서 푸시 수신할 때 핸들링하기 (0) | 2020.03.17 |
[SwiftUI] Timer 이용해서 현재시간 표시하기 (0) | 2020.03.12 |
Swift에서 상대 시간으로 표시하기 (0) | 2020.03.12 |
[iOS] MapKit에서 Annotation text 바꾸기 (0) | 2020.03.11 |