iOS 푸시 알림을 구현하려면 애플의 허가증이 필요하다. 과거의 구식 인증서(.p12) 방식은 잊어라. 우리는 토큰 기반 인증(.p8 Key)을 사용하여 설정 한 번으로 영구적인 시스템을 구축할 것이다.
전체 구조도
우리가 구축할 흐름은 다음과 같다.
- Apple Developer Portal: 앱 권한을 설정하고 인증 키(.p8)를 발급받는 곳이다.
- APNs Auth Key (.p8): 애플 푸시 서버(APNs)를 열 수 있는 '만능 마스터키'다. 백엔드(혹은 FCM)가 이 키를 가지고 있어야 한다.
- Xcode: 앱 프로젝트에서 푸시 기능을 켜주는 스위치 역할을 한다.
Step 1. App ID에서 Push Notification 활성화
가장 먼저 앱의 "신분증(App ID)"에 푸시 알림 권한을 부여해야 한다.
- Apple Developer Portal > [Certificates, Identifiers & Profiles]로 이동한다.
- 좌측 메뉴 [Identifiers] 클릭 > 해당 앱의 App ID를 선택한다.
- Capabilities 탭 목록에서 Push Notifications 항목을 찾아 체크박스를 켠다.
- [Save]를 눌러 저장한다. (이미 켜져 있다면 패스)
Step 2. APNs 인증 키 (.p8) 생성 (핵심)
이 과정이 제일 중요하다. 백엔드(혹은 FCM)가 애플 서버에 접속할 때 사용할 "영구적인 비밀키"를 만드는 과정이다.
- 좌측 메뉴 [Keys]로 이동한다.
- [+] 버튼을 눌러 새 키를 생성한다.
- Key Name: 식별하기 쉬운 이름 입력 (예:
APNs Key for FCM). - Apple Push Notifications service (APNs) 체크박스를 선택한다.
- [Continue] > [Register] 클릭.
- [Download] 버튼을 눌러
.p8확장자 파일을 다운로드한다.- ★경고: 이 파일은 단 한 번만 다운로드 가능하다. 페이지를 벗어나면 다시 받을 수 없으니 즉시 안전한 곳에 백업하고 백엔드 개발자에게 전달해야 한다.
- 같은 화면에 표시된 Key ID (10자리 문자열)도 복사해 둔다.
Step 3. 필수 정보 수집 (Team ID, Bundle ID)
백엔드나 FCM 설정 시 필요한 정보들을 미리 모아둔다. 메모장에 적어두자.
- APNs Key 파일 (.p8): 방금 다운로드한 파일.
- Key ID: 방금 복사한 10자리 문자열.
- Team ID: Apple Developer 페이지 우측 상단(본인 이름 옆) 혹은 [Membership] 메뉴에서 확인 가능한 10자리 문자열 (예:
A1B2C3D4E5). - Bundle ID: 앱의 고유 ID (예:
com.myapp.ios).
Step 4. FCM 콘솔에 APNs 키 업로드
대부분의 현대적인 앱은 안드로이드/iOS 푸시를 한 번에 보내기 위해 FCM을 중계소로 쓴다. (백엔드 → FCM → APNs → 아이폰). 따라서 획득한 키를 FCM에 등록해야 한다.
- Firebase Console 접속 > 해당 프로젝트 선택.
- [프로젝트 설정(톱니바퀴)] > [클라우드 메시징(Cloud Messaging)] 탭 이동.
- Apple 앱 구성(Apple app configuration) 섹션을 찾는다. (iOS 앱이 등록 안 되어 있다면 [앱 추가]부터 진행)
- APNs 인증 키(APNs Authentication Key) 항목의 [업로드] 버튼 클릭.
- 정보 입력:
- APNs 인증 키: Step 2에서 받은
.p8파일 업로드. - 키 ID: Step 2에서 확보한 Key ID 입력.
- 팀 ID: Step 3에서 확보한 Team ID 입력.
- APNs 인증 키: Step 2에서 받은
- [업로드] 클릭.
- Note: 이렇게 하면 개발(Sandbox) 환경과 배포(Production) 환경 모두 이 키 하나로 작동한다.
Step 5. Xcode 설정 (프론트엔드 필수 체크)
아무리 서버 설정을 잘해도, 앱 자체에서 푸시 기능을 끄고 빌드하면 소용없다. iOS 개발자에게 꼭 확인시키자.
- Xcode 실행 > 프로젝트 선택 > TARGETS에서 해당 앱 선택.
- [Signing & Capabilities] 탭 이동.
- 좌측 상단 [+ Capability] 클릭.
- Push Notifications 검색 후 더블 클릭하여 추가.
- Background Modes도 추가한 뒤, Remote notifications 체크박스를 켠다.
- Note: 이걸 체크해야 앱이 꺼져 있거나 백그라운드일 때도 알림을 수신할 수 있다.
셋팅 체크리스트
- Dev Portal: App ID의 'Push Notifications' 기능이 켜져 있는가?
- Asset:
.p8키 파일을 다운로드하여 안전하게 보관했는가? - Asset: Key ID, Team ID, Bundle ID를 확보했는가?
- Firebase: FCM 콘솔의 'Apple 앱 구성'에 위 4가지 정보(.p8, Key ID, Team ID, Bundle ID)를 업로드했는가?
- Xcode: 프로젝트 설정(Capabilities)에 'Push Notifications'와 'Remote notifications'가 추가되었는가?
마치며
요약하자면:
- 애플 개발자 사이트에서 .p8 키(마스터키)를 만든다.
- 이 키를 FCM 콘솔에 업로드하여 FCM이 애플 서버에 문을 따고 들어갈 수 있게 해 준다.
- Xcode에서 푸시 수신 스위치를 켠다.
