Sendbird Chat 및 Firebase를 사용하여 Android 푸시 알림 구현 방법
소개: 푸시 알림이란 무엇이며, 왜 중요한가요?
푸시 알림은 기기가 유휴 상태이거나 백그라운드에서 클라이언트 앱을 실행 중일 때 사용자 기기에 즉시 전달되는 메시지입니다. 푸시 알림은 중요한 정보와 업데이트를 전달하고 앱에 대한 사용자 참여도를 높이는 점에서 중요합니다. 또한 푸시 알림은 올바른 사용자를 타겟팅하고, 의미 있는 콘텐츠를 제공하고, 전환율을 높이고, 고객 관리 전략을 강화할 수 있는 강력한 마케팅 채널입니다. 실제로 RubyGarage에 따르면 푸시 알림을 구현하는 조직은 그렇지 않은 기업보다 고객 유지율이 3배 더 높고 참여도가 88% 더 높습니다! 모바일 푸시 알림 가이드에는 푸시 알림, 장점, 사용 방법에 대해 알아야 할 모든 내용이 포함되어 있습니다.
이 튜토리얼에서는 Android 푸시 알림 구현을 위한 단계별 지침을 제공합니다.
필요 조건
- 만들기Sendbird 계정
- Sendbird Chat이 Android 앱에서 제대로 작동하는지 확인하세요. Kotlin 구현 가이드 또는 이 튜토리얼을 확인해 보세요. UIKit으로 Android 채팅 앱을 구축합니다. 문서에는 Android 앱에서 실시간 채팅을 구현하기 위한 추가 지침이 포함되어 있습니다.
Android 클라이언트 앱의 푸시 알림은 FCM(Firebase Cloud Messaging) 또는 HMS(Huawei Mobile Service)를 사용하여 전송되며, 여기에는 앱이 알림에 응답하는 데 필요한 맞춤 데이터가 포함되어 있다는 점을 이해하는 것이 중요합니다. 앱에서 Sendbird 서버로 메시지가 전송되면(Android용 Chat SDK를 통해) 서버는 FCM 또는 HMS와 통신한 후 FCM 또는 HMS가 Android 기기에 푸시 알림을 전달합니다. 이 문서에서는 FCM을 사용한 푸시 알림 설정에 중점을 둡니다.
Sendbird는 푸시 알림에 대해 일반 푸시 알림과 다중 장치 지원 푸시 알림의 두 가지 옵션을 제공합니다.
일반 푸시 알림은 단일 장치 사용자와 다중 장치 사용자를 모두 지원하며 사용자가 모든 장치에서 완전히 오프라인 상태인 경우(서버 연결이 끊어진 경우)에만 전달됩니다. 즉, 사용자가 하나 이상의 장치에서 온라인 상태인 경우 알림이 전달되지 않으므로 어떤 장치에도 표시되지 않습니다. 반면 다중 장치를 지원하는 푸시 알림은 사용자가 하나 이상의 장치에서 온라인 상태인 경우에도 모든 오프라인 장치에 전달됩니다.
Android를 위한 푸시 알림: FCM
두 가지 유형의 FCM 메시지가 있습니다: 알림 메시지와 데이터 메시지. Firebase 문서에 따르면 "알림 메시지에는 사전 정의된 사용자 표시 키 세트와 맞춤 키-값 쌍의 선택적인 데이터 페이로드가 있습니다." 이와 대조적으로 데이터 메시지에는 사용자 정의 키-값 쌍만 포함됩니다. Sendbird는 데이터 메시지를 사용하여 클라이언트 앱이 이러한 맞춤 키-값 쌍으로 구성된 맞춤 메시지 페이로드를 생성할 수 있도록 합니다.
FCM에 대한 푸시 알림을 설정하려면 아래 단계를 따르세요. 시작하기 전에 Firebase 콘솔에 액세스할 수 있는지 확인하세요.
뛰어 들어보세요! 💻
1단계: FCM 서버 키 가져오기
Sendbird 서버는 사용자를 대신하여 FCM에 알림 요청을 보내려면 FCM 서버 키가 필요합니다. 다음과 같이 FCM 서버 키를 볼 수 있습니다.
1. Firebase 콘솔에 로그인합니다. 새 Firebase 프로젝트를 생성하거나 이미 있는 경우 기존 프로젝트를 사용하세요.
2. 프로젝트를 열고 스크린샷에 표시된 대로 '프로젝트 설정'으로 이동합니다.
3. '클라우드 메시징 > 프로젝트 자격 증명'을 선택하고 나중에 사용할 서버 키를 복사하세요.
2단계: FCM 서버 키를 Sendbird 대시보드에 등록하기
다음과 같이 대시보드를 통해 Sendbird 서버에 서버 키를 등록하세요. Chat Platform API의 FCM 푸시 구성 추가 작업을 사용하여 서버 키를 등록할 수도 있습니다.
1. Sendbird 대시보드에 로그인하고 '설정 > 채팅 > 알림'.
2. '알림'을 켜고 '모두 오프라인일 때 기기로 보내기' 옵션을 선택하세요.
3. FCM 자격 증명 옆에 있는 '자격 증명 추가' 버튼을 클릭하세요. 1단계에서 복사한 FCM 서버 키를 입력하세요.
3단계: Android 프로젝트에 FCM 클라이언트 앱 설정하기
이제 Android 프로젝트에 FCM 구성 및 종속성을 추가하겠습니다.
1. FCM 콘솔에서 프로젝트로 돌아갑니다. '앱 추가'를 클릭하고 Android 플랫폼을 선택하세요.
2. 앱 추가 마법사에서 패키지 이름을 입력합니다. 힌트: 패키지 이름은 일반적으로 앱 수준 'build.gradle' 파일의 'applicationId'입니다.
3. 'google-services.json' 파일을 다운로드하여 Android 앱 모듈 루트 디렉터리에 배치합니다.
4. 아래와 같이 클라우드 메시징 Android 라이브러리에 대한 종속성을 build.gradle 파일에 추가합니다.
참고: firebase-messaging 버전은 19.0.1 이상이어야 합니다.
dependencies { ... implementation 'com.google.firebase:firebase-messaging:20.1.0' }
4단계: Sendbird 서버에 푸시 토큰 등록하기
Android 기기의 특정 클라이언트 앱에 알림 메시지를 보내려면 FCM에는 클라이언트 앱이 발급한 앱 인스턴스의 등록 토큰이 필요합니다. 따라서 Sendbird 서버는 사용자를 대신하여 FCM에 알림 요청을 보내려면 모든 클라이언트 앱 인스턴스의 등록 토큰도 필요합니다.
앱이 초기화되면 FCM SDK는 사용자 기기의 클라이언트 앱 인스턴스에 대한 고유한 앱별 등록 토큰을 생성합니다. FCM은 이 등록 토큰을 사용하여 알림 메시지를 보내야 하는 장치를 결정합니다. 'com.sendbird.android.SendBirdPushHandler'를 확장하고 'onNewToken'을 재정의하여 이 토큰에 액세스할 수 있습니다. SendBirdPushHandler'는 내부적으로 이 토큰을 Sendbird 서버에 등록합니다.
샘플 구현은 다음과 같습니다.
등록된 푸시 토큰은 대시보드의 '사용자 > user_id > 채팅':
5단계: 푸시 이벤트 핸들러 추가하기
현재 사용자의 푸시 알림 이벤트에 대한 정보를 Sendbird 서버로부터 수신하려면 'MyFireBaseMessagingService' 인스턴스를 'SendBirdPushHelper'에 이벤트 핸들러로 등록하세요. 다음과 같이 'Application' 인스턴스의 'onCreate()' 메서드에서 이 작업을 수행합니다.
또한, 사용자가 Sendbird 서버에 접속할 때 다음과 같이 'MyFireBaseMessagingService' 인스턴스를 등록합니다.
또한 Sendbird 서버에서 사용자의 연결을 끊기 전에 푸시 토큰을 모두 등록 해제하여 알림을 받지 않도록 하세요.
6단계: FCM 메시지 페이로드 처리하기
앞서 설명했듯이 Sendbird 서버는 푸시 알림 페이로드를 FCM 데이터 메시지로 보냅니다. 페이로드는 message와 sendbird라는 두 가지 속성으로 구성됩니다. message 속성은 Sendbird 대시보드에서 정의한 알림 템플릿에 따라 생성된 문자열입니다. sendbird 속성은 사용자가 보낸 메시지에 대한 모든 정보를 포함하는 JSON 개체입니다.
샘플 구현에 표시된 대로 4단계에서는 사용자 정의 'sendNotification()' 메서드를 사용하여 구문 분석된 메시지를 사용자에게 알림으로 표시할 수 있습니다.
푸시 알림 문제 해결을 위한 팁
푸시 알림 문제 해결은 복잡할 수 있습니다. 여기에 이에 대한 몇 가지 팁이 있습니다.
- 개발자가 푸시 알림을 더 쉽게 디버그하고 문제를 해결할 수 있도록 우리는 유용할 수 있는 테스터 도구를 구축했습니다. Sendbird 대시보드을 참조하세요. >. 튜토리얼
- Android 채팅 푸시 알림 문제 해결에 대한 종합적인 가이드가이드를 확인하세요.
- 실패 조건을 디버깅하려면 FCM 오류 코드를 참조하세요.