6월 초, v0.1 개발을 마무리하고 서비스 배포를 앞둔 상황에서 회의를 가졌는데, Lovebird 서비스는 로그인과 커플 연동이라는 기능이 MVP 모델에 포함돼야 한다는 결론을 내리게 되었다. 회의 결과에 따라 배포를 7월로 미루고 두 기능을 개발하게 되었다. (서버의 모든 도메인 및 테스트 코드도 모두 리워크(re-work)하게 되었다.) 현재는 리워크도 완료했고 소셜 로그인도 모두 구현했다 (소셜 로그인과 관련된 내용은 다음 주제로 다룰 예정이다.)
하지만 커플 연동 기능의 개발 스코프가 생각보다 두꺼웠다. 대학교 3학년 시절, Android와 협업하여 FCM(; Firebase Cloud Messaging)을 활용한 푸시알람을 구현한적이 있지만, 당시 Node를 활용한 개발이었으며 백엔드 개발도 익숙하지 않은 상황이었기에 머리 상태는 백지 수준이었기에 이번 구현에서 제대로 이해해보자고 다짐했고, 포스팅을 남기기로 했다.
이번 포스팅에서는 단순 설정만 진행할 예정이고, 이번 시리즈는 Spring Boot 관점에서 작성할 것이다.
APNs는 Apple Push Notification service
의 약자로, Third Party 개발자가 우리 앱에 푸시 알람을 보낼 수 있도록 Apple에서 만든 알림 서비스 플랫폼
이다. 동작원리는 아래 사진을 보면 쉽게 이해할 수 있을 것이다.
그럼 이제부터 APNs 설정을 시작해보자. (Apple Developer 계정이 있다는 가정 하에 진행하겠습니다.)
먼저 Identifiers 탭에 들어가 푸시 알림을 허용할 앱을 클릭한다.
선택 후에는 Push Notifications
을 선택하고 저장한다.
이제 인증서를 발급 받아보자. Certificates 탭에 들어가 + 버튼을 통해 추가한다.
많은 선택사항이 있는데, Services
에서 Apple Push Notification service SSL (Sandbox & Production
을 골라주었다. 이 옵션은 통합 옵션(개발용 + 배포용)이다. 상황에 따라 개발용과 배포용을 나누어도 된다.
다음으로 넘어가서 푸시 알림을 적용하길 원하는 App ID를 선택해주고, 키체인 등록을 위해 키체인 접근
을 열어준다.
상단 부분에서 인증서 지원
→ 인증 기관에서 인증서 요청
을 선택해준다.
다음과 같이 사용자 이메일 주소
를 입력하고, 디스크에 저장됨
을 체크한 후 키체인을 저장해준다.
잘 저장된 것을 확인할 수 있다.
다시 돌아와, 키체인 인증서를 업로드하고 Conitnue
버튼을 클릭하면 위와 같이 APNs 인증서가 생성된 것을 확인할 수 있다. 이 파일을 다운로드 해주자.
이제 APNs 키를 발급해보자.
Key의 이름을 적어주고, APNs를 체크해주면
키가 생성된다. 생성된 키를 다운로드하여 잘 보관해두자. (재다운이 불가능하지 진짜 잘 보관하기...)
여기까지가 APNs 설정이고, xcode를 열어 ios 프로젝트에 Push Notification
과 Background Modes
를 활성화 해주면 된다. (이 부분에 대한 설명은 생략한다.)
이제부터 Firebase 설정을 시작해보자. (Project 생성과 ios app 등록은 생략합니다.)
ios 앱 프로젝트 설정에 들어가 클라우드 메시징 탭을 열면 위와 같은 화면이 나온다. APN 인증 키 업로드 버튼을 클릭한다.
APN 인증 키
를 먼저 업로드 해준다. (확장자가 .p8
인 파일이다.) 키 ID는 Apple Developer
의 Keys에 들어가 해당 키를 눌러 확인할 수 있다. 팀 ID의 경우 ?에 커서를 갖다대고, 해당 링크로 들어가 확인할 수 있다.
https://melonplaymods.com/2023/06/11/pak-on-the-theme-of-wwii-mod-for-melon-playground/
https://melonplaymods.com/2023/06/11/pirate-ship-mod-for-melon-playground-3/
https://melonplaymods.com/2023/06/11/torture-tool-2-mod-for-melon-playground/
https://melonplaymods.com/2023/06/11/vegetation-mod-for-melon-playground/
https://melonplaymods.com/2023/06/11/rocket-for-melon-playground-mod-for-melon-playground/
https://melonplaymods.com/2023/06/10/zombie-mod-for-melon-playground/
https://melonplaymods.com/2023/06/11/five-storey-building-mod-for-melon-playground/
https://melonplaymods.com/2023/06/11/mechanical-dragon-mod-for-melon-playground/
https://melonplaymods.com/2023/06/11/tank-mod-for-melon-playground-3/
https://melonplaymods.com/2023/06/11/outcast-samuraibaldur_gg-mod-for-melon-playground/
https://melonplaymods.com/2023/06/11/homemade-aircraft-mod-for-melon-playground/
https://melonplaymods.com/2023/06/11/auto-assault-mod-for-melon-playground/
https://melonplaymods.com/2023/06/11/bomber-figure-160-mod-for-melon-playground/
https://melonplaymods.com/2023/06/10/zombie-devil-mod-for-melon-playground/
https://melonplaymods.com/2023/06/10/mickey-mouse-mod-for-melon-playground/
https://melonplaymods.com/2023/06/11/furniture-mod-for-melon-playground-2/
https://melonplaymods.com/2023/06/10/ignited-bonnie-mod-for-melon-playground/
https://melonplaymods.com/2023/06/11/torture-room-mod-for-melon-playground/
https://melonplaymods.com/2023/06/11/iron-bat-mod-for-melon-playground/
https://melonplaymods.com/2023/06/11/turbo-zhigul-saved-mod-for-melon-playground/