채널톡 안드로이드 SDK는 Firebase Cloud Messaging(FCM)을 통해서 고객이 오프라인일 때 상담 답변 알림을 받을 수 있도록 설정할 수 있습니다. SDK 설치하기를 완료한 이후 아래 단계를 따릅니다.
Android API level 33(Tiramisu) 이상에서 시스템 푸시 알림을 표시하고자 하는 경우 POST_NOTIFICATIONS 권한이 필요합니다.
채널톡 안드로이드 SDK는 직접 POST_NOTIFICATIONS 권한을 요청하지 않으므로 앱에 해당 권한이 있는지 확인해야 합니다. 자세한 사항은 알림에 관한 안드로이드 공식 문서를 확인합니다.
Firebase 연동 설정
Firebase 프로젝트 생성하기
- Firebase 설치 가이드에 따라 안드로이드 앱 프로젝트를 설정합니다.
google-service.json
파일을 다운로드 받아서 앱 모듈 단위의 최상위 디렉토리에 복사합니다.
Firebase와 SDK 연동하기
프로젝트에서 Firebase를 처음 사용하는지 여부에 따라 아래 두 개 섹션 중 하나에 따릅니다.
Firebase를 처음 사용하는 경우
아래 모듈을 설치해서 간편하게 연동할 수 있습니다. 라이브러리를 설치하면 자동으로 Firebase 메시지가 처리됩니다.
먼저 루트 build.gradle에 아래 내용을 추가합니다:
dependencyResolutionManagement {
repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
repositories {
mavenCentral()
maven { url 'https://maven.channel.io/maven2' }
}
}
다음으로 프로젝트 단위 build.gradle에서 디펜던시를 추가합니다. 최신 버전에 대해서는 릴리즈 노트를 참고합니다.
dependencies {
// 코어 모듈
implementation 'io.channel:plugin-android:$[version]'
// FCM을 쉽게 사용하기 위해서 사용
implementation 'io.channel:plugin-android-fcm:$[version]'
}
Firebase를 기존 프로젝트에서 사용하고 있는 경우
SDK로 Firebase 메시지가 온 것을 전달함으로써 사용할 수 있습니다. FirebaseMessagingService
에서 ChannelIO.receivePushNotification()
을 통해 SDK가 Firebase 푸시가 왔음을 알 수 있도록 합니다.
class SampleFirebaseMessagingService : FirebaseMessagingService() {
override fun onNewToken(refreshedToken: String) {
ChannelIO.initPushToken(refreshedToken)
// ...
}
override fun onMessageReceived(remoteMessage: RemoteMessage) {
val pushMessage = remoteMessage.data
if (ChannelIO.isChannelPushNotification(pushMessage)) {
ChannelIO.receivePushNotification(application, pushMessage)
} else {
// ...
}
}
}
만약 프로젝트에 FCM가 이미 설치되어 있었다면
onNewToken
이 호출되지 않을 수 있습니다. 이 경우 토큰이 SDK에 설정되지 않아 푸시 알림이 오지 않을 수 있습니다. 앱을 재설치하면 문제가 해결됩니다.
앱의 런쳐 액티비티에서, openStoredPushNotification(Activity)
을 통해서 SDK에 저장된 푸시 정보를 이용해 채팅 화면을 열 수 있도록 합니다.
class SampleActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
if (ChannelIO.hasStoredPushNotification(this)) {
ChannelIO.openStoredPushNotification(this)
}
}
}
부트 과정이 완료되면 푸시 알림 관련된 정보가 삭제되기 때문에, 부트가 완료되기 이전에
openStoredPushNotification
을 호출해야 합니다.
Firebase와 채널톡 데스크 연동하기
- Firebase 콘솔에서 왼쪽 사이드바의 프로젝트 오버뷰 > 프로젝트 설정을 클릭합니다.
- Cloud Messaging 탭으로 이동해서 Firebase Cloud Messaging API(V1) 섹션에 있는 서비스 계정 관리(Manager Service Accounts)를 클릭합니다.
- 서비스 계정을 만들기 이전에 먼저 역할을 만들어야 합니다. 역할 관리(Roles) 페이지로 이동합니다.
- 역할 만들기(CREATE ROLE)를 클릭합니다.
- 커스텀 역할 제목을 넣고, 권한 추가(ADD PERMISSIONS)를 클릭합니다.
- cloudmessaging.messages.create 권한을 선택하여 추가한 후, 역할을 만듭니다. ‘역할을 기준으로 권한 필터링’(Filter permissions by role) 하는 곳에서 검색하지 않도록 주의합니다.
- 다시 맨 처음 화면으로 돌아와서, 서비스 계정 만들기(CREATE SERVICE ACCOUNT)를 클릭합니다.
- 서비스 계정 세부정보를 채워넣고 만들고 계속하기(CREATE AND CONTINUE)를 클릭합니다.
- 역할 선택(Select a role)을 클릭합니다.
- 만든 커스텀 역할을 부여해서 서비스 계정을 완성합니다.
- 만든 서비스 계정의 키 관리(Manage keys)에 들어갑니다.
- 키 추가(ADD KEY)- 새 키 만들기(Create new key) - key 타입을 json으로 선택하여 키를 만듭니다.
- 채널톡 데스크에서 설정 > 보안 및 개발 > 모바일 SDK 푸시 > 안드로이드를 클릭합니다.
- Select File을 눌러 key 파일을 업로드합니다.
푸시 알림 커스터마이징
푸시 타이틀 변경
푸시 알림의 타이틀을 변경하고자 하는 경우에는 strings.xml
에서 notification_title
키의 값을 추가할 수 있습니다. 기본값은 앱의 이름입니다.
<resources>
<string name="notification_title">Your notification title</string>
</resources>
푸시 아이콘 변경
푸시 알림의 아이콘을 변경하고 싶다면 원하는 이미지를 다음 경로에 복사해주세요.
/res/drawable/ch_push_icon.png