Firebase 클라우드 메시징에서
Android 기기로 메시지를 보낼 수 있을 뿐만 아니라
애플의 푸시 알림 서비스인 APNS를 통하여
iOS 기기에 알림을 라우터 할 수 있다는 걸
아시는 분이 계실 겁니다
그렇지만 어떻게 작동되는지 보여드리는 게 좋다고 생각했습니다
꽤 흥미로운 기능이기도 하지만
문제가 발생할 때 무엇을 찾아야 할지
알 수 있는 계기가 되기 때문이죠
이번 파이어캐스트 영상을 통해서 알아보도록 하죠
APNS와 소통하기 위해서는
두 가지가 필요합니다
먼저, 인증서가 필요합니다
APNS 서버와 소통을 시작할 수 있도록 하는 것이죠
고유의 코드를 쓰는 경우에 작업하는데
조금 더 유용한 APNS 어스 키라는 걸
사용하실 수 있다는 걸 알지만
지금은 인증서에 중점을 두도록 하겠습니다
Firebase 클라우드 메시징에서 현재 사용하는 것이기 때문이죠
두 번째, APNS에서 어느 기기로
알림을 보내야 할지 정해야 합니다
이를 위해서는 기기 토큰이 필요합니다
앱애서만 작동되는 식별자를 사용하여
사용자의 기기를 특유의 형태로
확인하는데 필수적인 것이죠
일반적으로 기기 토큰은
기기에 있는 APNS로부터 요청된 다음에
서버로 보내지는 것입니다
Firebase 클라우드 메시징이
서버의 역할을 하기 때문에
이렇게 두 가지가 필요한 것입니다
인증서와 기기 토큰이죠
Firebase 클라우드 메시징을 설치할 때 해야 하는
첫 번째 일은 APNS 인증서를 업로드하는 것입니다
p12 파일의 형태로 Firebase 콘솔에 올리는 거죠
이를 통하여 FCM 서버에서 APNS와 소통할 수 있습니다
그러면 앱이 작동될 때 사용자의 기기에서
APNS로부터 기기 토큰을 요청할 것입니다
그러면 토큰을 Firebase 클라우드 메시징으로
보내게 되겠죠
Firebase 클라우드 메시징은
교환하기 위해서 고유의 기기 토큰을
복사하여 보내줄 것입니다
이 정도가 되면, FCM에서는 APNS를 사용하는 기기에서
소통하는데 필요한 모든 걸 가지고 있는 겁니다
그리고 Firebase 클라우드 메시징을 통한
요청을 보낼 준비가 된 거죠
APNS와 마찬가지로, FCM을 통하여
알림 요청을 보낼 때에는 두 가지가 필요합니다
서비스와 소통하고
목표 기기를 확인하는 것이죠
먼저, 인증서 대신에
API 키를 사용할 것입니다
앱을 대신하여 FCM 서버에 소통하는데 필요한
기밀과도 같은 비밀번호라고 생각하시면 됩니다
Firebase 콘솔에서 얻을 수 있는 비밀번호죠
그다음으로, 개별적인 기기에 소통하기를 원하는 경우에도
FCM 토큰이 필요합니다
이를 통하여 클라이언트에 도달할 수 있습니다
그러면 이러한 정보는
Firebase 클라우드 메시징으로 전송되는
알림으로 모이게 됩니다
이제 Firebase에서는 FCM 기기 토큰과 일치하는
기기에 있는 무엇이든지 볼 수 있습니다
그리고 보시다시피 APNS 토큰과 연결되어 있습니다
기기와 소통하기 위해서는 APNS을 통하여
메시지를 라우터 해야 합니다
Firebase는 저장했던 인증서와 토큰을 이용하여
알림의 새로운 APNS 버전을 생성합니다
생성된 새로운 알림은 APNS로 보내고
iOS 기기에 알리게 되어
알림이 뜨게 되는 겁니다
좋습니다
한 번에 이해하기 쉽지 않다는 걸 알고 있습니다
제가 설명드린 내용 중에서
꼭 아셔야 할 부분은 두 가지입니다
첫 번째, 이러한 작업의 대다수는
보이지 않는 곳에서 이뤄집니다
대부분 알 필요가 없거나
신경을 쓰지 않는 부분입니다
두 번째, 이 정도의 단계에 왔을 때
기존의 일반적인 APNS 알림인데요
앱에서 보면, 이러한 알림은
애플에서 받는 다른 알림과
다른 부분이 없습니다
이러한 과정을 거치려면
어떤 걸 해야 하는지 보도록 하겠습니다
먼저, APNS에서 기기 토큰을 가져와야 하고
두 번째, APNS 토큰을 FCM에 보내죠
세 번째, FCM 기기 토큰을 다시 받는 것입니다
APNS 기기 토큰을 받기 위해서는
registerForRemoteNotifications을 호출하면 되는데요
일반적으로 하는 방식이죠
다른 단계에서는
특별히 해야 하는 작업은 없습니다
앱에서 Firebase 가 활성화되어있으면 말입니다
훌륭한 메소드 스위즐링 덕분에
대다수의 일을 대신해주기 때문이죠
메소드 스위즐링에 대해서 설명드리자면
일반적으로 기존의 메소드를 호출하도록
준비된 메소드의 맞춤 버전을 호출하여
iOS에서 기존의 메소드에 개발자들이
기능을 추가할 수 있는 방법입니다
종종 개발자들이 표준 iOS 라이브러리에 속한
이러한 맞춤 메소드를 이제 사용합니다
그렇지만 이번 경우에는
이전에 작성했던 대표 메소드 위에 사용할 것입니다
스위즐링에 didRegisterForRe
moteNotifications 호출에서 APNS 토큰을 받고
FCM 기기 토큰을 대신하여
Firebase 클라우드 메시지를 보내는 것입니다
그나저나 제가 말씀드린 부분 중에 다른 부분이 있습니다
토큰은 InstanceID 토큰으로 알려져 있는데요
이론적으로 보자면 Firebase 클라우드 메시징 외에
기기의 서비스를 확인하는데 사용할 수 있습니다
그래서 코드에 있는 InstanceID 라이브러리에서
생성되었다는 걸 볼 수 있고
가끔씩 문서에서 등록 토큰으로 호출되는 겁니다
그렇지만 FCM의 목적에 맞추려면
FCM 기기 토큰이라고 부르는 게 맞는 것 같습니다
그게 본래의 목적이기 때문이죠
알림을 받기 위해서 스위즐링 메소드를
사용한다는 사실도 알 수 있고요
여기서 중점을 두고 있는 작업은
이러한 알림에 대한 analytics 정보를
기록하도록 하는 것입니다
이러한 방법을 통하여
알림의 30%가 기록되었으며
알림 패널에서 볼 수 있습니다
다른 사람이 메소드를 작업하는 것에 대해
불편하게 느껴지신다면
사용하지 않으셔도 됩니다
코드에서 직접 말씀드린 작업을
추가하시면 되니까요
그에 관한 문서도 있습니다
마지막으로, 스위즐링 메소드에 관하여 말씀드리자면
사용자가 볼 수 있는 알림을 보여주는 경우
사용자에게 요청하여 표준 iOS 대화상자를 띄우도록
자동적으로 호출하지 않습니다
사용자들이 동의를 할 거라고
확신하지 않는 한
호출하고 싶지 않으실 겁니다
그러니 앱에서 적절한 상황을 파악하여
호출 여부를 결정하시면 될 것 같습니다
제가 말씀드렸다시피 기존에 있던
일반적인 APNS 알림과 크게 다르지 않기 때문에
Firebase 클라우드 메시징을 사용하기 위해 해야 할 일은 없습니다
문서를 보시면
Firebase 클라우드 메시징을 연결하는 법에 대해
명쾌하게 나와있습니다
어떤 부분을 알아야 할까요?
APNS를 통하여
기기에 소통을 할 수 있는 것과 더불어
Firebase 클라우드 메시징으로 연결하여
알림을 직접 받을 수 있습니다
그렇지만 제한이 없는 것은 아니죠
첫 번째, 전면에 앱이 있는 경우에만 작동합니다
두 번째, 데이터에 관련된 메시지에서만 작동됩니다
알림 메시지, 배지 그리고 소리와 같은 건 안되죠
이용 가능한 콘텐츠 알림에서도 작동되지 않습니다
오로지 APNS만을 통하기 때문이죠
사실, APNS에서 이용 가능한 콘텐츠를 포함하지 않은
무음 알림을 보낼 수 있는 것 같지는 않습니다
그러니 이러한 유형의 메시지만
Firebase 클라우드 메시징에서 유효하다고 말씀드릴 수 있습니다
이러한 종류의 알림을 보내는 경우
앱이 전면에 있지 않고
FCM에 연결되지 않았다면
연결할 때까지 메시지를 받지 못할 것입니다
이런 질문을 가지고 계실 수도 있습니다
'그러면 제가 왜 이걸 사용해야 하죠?'라고요
Firebase 클라우드 메시지로 직접 소통하는 것은
몇 가지 이점을 가지고 있습니다
FCM은 목표 기기에게 데이터 메시지를 보내는데
좀 더 적극적입니다
다른 장점은 메시지를 보내는 절차가 간단하다는 거예요
간단한 건 항상 좋죠
FCM을 통하여 기기에서
업스트림 메시지를 다시 보낼 수도 있습니다
예를 들자면, 메시지를 받은 것을 알려주기 위해서죠
그렇지만 전면에 있을 경우에만 작동되기 때문에
백그라운드에 있을 때
알림을 받지 않아도 괜찮은 앱에 국한되어
유용하게 쓰일 수 있을 겁니다
예를 들자면, YouTube가 그렇죠
YouTube 라이브 이벤트에 실시간 채팅을 위하여
YouTube의 iOS 앱은 FCM 연결을 사용합니다
YouTube는 전면에 있을 때 쏟아져 나오는
채팅 메시지를 받는데 중점을 두기 때문에
Firebase 클라우드 메시징을 쓰기 좋은 경우죠
그렇지만 앱에서 이러한 유형의 메시지가
필요하지 않다고 생각되는 경우에는
FCM 서비스에 직접 연결하지 않으셔도 됩니다
Firebase 클라우드 메시징의 기능을
충분히 파악하시고 하셔도 됩니다
APNS 실행을 할 때 문제를 파악할 수 있는
하나의 방법이기 때문이죠
여기까지입니다
iOS 기기에서 FCM 가 작동되는 방법을 간단히 살펴보았습니다
영상을 보시고 화면에 보이지 않는 과정에 대해
잘 알 수 있는 기회였기를 바랍니다
영상이 유용하다고 생각되시면 구독을 해주시고요
다음 파이어캐스트 영상에서 뵙겠습니다
시청해주셔서 감사합니다
Firebase 콘텐츠에 대해 더 알아보고 싶으신가요?
여기에 있는 영상을 보시길 바랍니다
짜잔