Flutter - Firebase Cloud Messaging 연동 - 1. iOS Push 사용을 위한 Keys 만들기

2020. 5. 13. 23:10난장 Dev/Flutter - Dart


Firebase에서 안드로이드 환경은 손쉽게 구성이 가능하다.

iOS도 예전과는 다르게 Keys라는 것으로 대체된 듯싶은데, 이게 참 편리한 것 같다.

 처음에 iOS시작할 때는 앱마다 따로 Push 권한을 주고 푸시 서비스를 위한 인증서를 구성했는데, Keys에서 인증서와 팀 ID, 키 ID로 팀 ID로 개발된 앱은 모두 한 개의 key로 푸시 서비스(APNs)를 이용할 수 있다(제대로 이해한 건지 싶지만... 해보니 그런 것 같더라..).

3rd에서 직접 푸시 서버를 구성해서 사용하는 것도 방법이지만, Google의 Firebase Cloud Messaging(이하 FCM)을 이용하면 안드로이드와 iOS를 따로 구현할 필요 없이 FCM에 메시지를 보내면 푸시 서비스를 사용할 수 있다.

간단하게

https://fcm.googleapis.com/fcm/send

로 header 에 Authorization 키와 body에 아래 형식에 맞게 보내면 "notification" 부분과 "data"가 디바이스로 넘어간다.

※ data는 사용자 임의로 입력해서 보낼 수 있음

{
  "priority":"HIGH",
  "notification":{
  	"title":"알림 타이틀",
  	"body":"내용"
  },
  "data":{
	"title":"데이터 타이틀",
	"message":"데이터 값 또는 메시지"
  },
  "to":"디바이스 토큰"
}

자세한 내용은 4번째 푸시 테스트에서 남겨보도록 하겠다.

 

어쨌든 위와 같이 사용하기 위해서 Apple Developer Account내에서 key를 발급받아야 하는데, 일단 발급하려면 Apple Developer Program이 가입되어야 한다.

안드로이드는 한번 결재 해놓으면 평생 사용할 수 있지만, 애플은 1년마다 129,000원을 납부해야 개발하고 앱스토어에 올릴 수 있는 권한(?)을 준다.

욕 나오지만, 어쩔 수 없다.

먼저 개발자 사이트로 로그인한다.

1. 개발자 사이트 로그인: https://developer.apple.com/account/

 

로그인 - Apple

 

idmsa.apple.com

 

2. 로그인되어 있다면 바로 아래의 화면처럼 보이게 된다.

 

3. 여기서 왼쪽 메뉴 중 4번째에 보이는 "Certificates, IDs & Profiles"를 클릭하고, 이동된 페이지에서 "Keys" 메뉴를 선택한다.

 

4. "Keys" 옆에 있는 + 버튼을 클릭하면 아래와 같이 보인다. 참고로 사전에 만들어 놓은 키가 있어서 MapKit JS, MusicKit, Sign in with Apple 등이 비활성화되어 있다. 적당한 이름을 입력하고 "Apple Push Notifications service(APNs)"를 체크하고 "Continue"를 누른다.

 

 5. 특별히 이상한 점이 없다면 이대로 "Register"를 클릭한다.

 


  

 

★ 중요: 다운로드 가능한 키는 여기서 딱 한 번만 가능하다. 이후엔 다운로드되지 않으니, 다운로드한 Key는 잘 보관하길 바란다. 

6. Key ID를 확인하고, "Download"를 눌러 Key(AuthKey_****. p8)를 다운로드한다.

 

7. 그리고 Keys에 제대로 추가되어 있는지 확인해 본다.

 

8. 키를 클릭해보면 Key ID와 활성화된 서비스에 대해서 나온다. 

여기서 키 파일을 잃어버린 경우에는 "Revoke"하여 삭제하고 다시 만들어야 한다.