Android(Kotlin)

Firebase를 이용한 클라우드 메시징

E.I.T.U 2021. 6. 18. 14:49

어떡하면 사용자들이 내 앱을 잊지 않고 사용해줄까?

매일 반복적으로 사용하길 바란다면 역시 푸시 알림이 가장 효과적일 것이다

정해진 시간에 사용을 유도하는 메시지를 푸시 알림으로 받는다면 잊지 않고 사용해줄 것이다

 

그리고 안드로이드 스튜디오는 푸시 알림을 위한 강력한 툴을 제공한다

 

바로 Firebase Console을 통한 클라우드 메시징이다

 

먼저 manifest 파일에 인터넷 권한을 설정한다 <uses-permission android:name="android.permission.INTERNET" />

앱 내부적으로 처리하는 것이 아닌 Firebase에서 알림을 뿌리는 것이기 때문이다

 

다음은 안드로이드 스튜디오 상단의 Tools에서 Firebase를 클릭한 후 열린 창에서 Cloud Messaging을 찾아 연다

1, 2단계는 툴에서 지시하는 대로 따른다

 

3단계부터가 좀 다른데

툴에서는 FirebaseInstanceIdService를 상속받는 클래스를 작성하라고 나와있지만 이것은 이미 지원이 종료됐으며

우리는 FirebaseMessagingService를 상속받는 클래스를 작성해야 한다

(이름은 원하는 대로 지을 수 있지만 FirebaseMessagingService로 작성하자)

 

그 후 작성한 클래스를 manifest파일에 서비스로서 등록한다 (<application> 태그 안쪽에 작성하면 된다 )

 

<service
     android:name="MyFirebaseMessagingService"           //자신이 지은 클래스 명을 넣으면 된다
     android:exported="false">
     <intent-filter>
          <action android:name="com.google.firebase.MESSAGING_EVENT" />
     </intent-filter>
</service>

 

다시 FirebaseMessagingService로 돌아와서 마저 작성하자

우리는 onNewToken 함수와 onMessageReceived 함수를 상속받아 작성해야 한다

quickstart-android/MyFirebaseMessagingService.kt at 20 d5 a 63 bd03 e097 ed8 ad87 d0 dfd8 dfba6 ab23758 · firebase/quickstart-android (github.com)

 

firebase/quickstart-android

Firebase Quickstart Samples for Android. Contribute to firebase/quickstart-android development by creating an account on GitHub.

github.com

나는 이 깃 문서를 참조했다

 

먼저 onNewToken은 새 토큰이 발급될 때 실행되는 메서드이다

 

override fun onNewToken(token: String) {
     val sp = getSharedPreferences("token", MODE_PRIVATE)
     val editor = sp.edit()
     editor.putString("token", token)
     editor.apply()
}

생성된 토큰을 SharedPreferences에 저장하도록 했다

 

다음, onMessageReceived는 말 그대로 메시지를 받았을 때 실행되는 메서드이다

 

override fun onMessageReceived(message: RemoteMessage) {
     if (message.data.isNotEmpty()){
          showNotification(message)
     }
}

메시지가 비어있지 않다면 알림을 생성하는 함수를 실행하도록 했다

 

showNotification 함수 같은 경우 위 깃 문서의 sendNotification을 가져와서 그대로 사용하였다

 

이제 Firebase Console로 가서 알림을 테스트해보자!

 

https://console.firebase.google.com/ 

 

로그인 - Google 계정

하나의 계정으로 모든 Google 서비스를 Google 계정으로 로그인

accounts.google.com