어떡하면 사용자들이 내 앱을 잊지 않고 사용해줄까?
매일 반복적으로 사용하길 바란다면 역시 푸시 알림이 가장 효과적일 것이다
정해진 시간에 사용을 유도하는 메시지를 푸시 알림으로 받는다면 잊지 않고 사용해줄 것이다
그리고 안드로이드 스튜디오는 푸시 알림을 위한 강력한 툴을 제공한다
바로 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 함수를 상속받아 작성해야 한다
나는 이 깃 문서를 참조했다
먼저 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/
'Android(Kotlin)' 카테고리의 다른 글
HttpURLConnection (0) | 2021.07.29 |
---|---|
안드로이드 액티비티와 프래그먼트 생명주기 (0) | 2021.07.23 |
ViewPager2의 프래그먼트에 접근하는 방법 (2) | 2021.06.16 |
[절대 잊지말자] Activity에서 transaction된 Fragment에 접근할때 (0) | 2021.06.16 |
ViewPager2 에 elevation이 적용 안될때 (0) | 2021.06.15 |