Firebase의 장치 토큰을 강제로 재설정하는 방법

6777 단어 AndroidFirebasetech
어떻게든 디바이스 토큰을 리셋하고 싶은 장면이 있어서 노트다.
같은 일을 하고 싶다는 정보가 인터넷에 떠돌지만 정보가 낡은 deprecated 방법이어서 혼란스럽다.집필 시점(2021/06/16)에서 이 방법으로 리셋할 수 있습니다.

영패를 생성할 때 호출하는 방법


디바이스 토큰을 이용해 누르는 알림을 보내려면 일반적으로 Firebase Messaging Service()를 계승하는 클래스의 onNew Token()에서 한 서버에 토큰을 설정하여 처리한다.
MyFirebaseService.kt
class MyFirebaseMessagingService : FirebaseMessagingService() {
    override fun onNewToken(token: String) {
    // ここでトークンの設定処理を実行する。
    }
}
공식 문서에 따르면 onNewToken()의 호출 시간은
This is invoked after app install when a token is first generated, and again if the token changes.
네.
온뉴스토큰(onNewToken) 리셋을 강제로 호출하는 방법이 있으면 좋겠지만, 없는 것 같아 장비 영패 삭제와 수령 처리를 실시한다.

장치 토큰의 삭제 및 재수령

FirebaseMessaging.getInstance().deleteToken()에서 영패를 삭제한 후 다시 FirebaseMessaging.getInstance().getToken()를 호출하면 새 장치 영패를 호출할 수 있습니다.(사용org.jetbrains.kotlinx:kotlinx-coroutines-play-services
MainActivity.kt
val firebaseMessaging = FirebaseMessaging.getInstance()
GlobalScope.launch {
    val exToken = firebaseMessaging.token.await()
    Timber.e("Token_ex:$exToken") //Token_ex:dP5qQdyNSyylMRKeUxbKzl:APA91bHWiNwGmP2q3WI7i...
    firebaseMessaging.deleteToken().await()
    val cuToken = firebaseMessaging.token.await()
    Timber.e("Token_cu:$cuToken") //Token_cu:dP5qQdyNSyylMRKeUxbKzl:APA91bH7ZhECdyhiwodga...
}
deprecatedFirebaseInstanceId 클래스를 사용했다면 FirebaseInstanceId#deleteToken()이 아니라 deleteInstanceId() 방법메시지을 사용해야 한다.또한 deleteinstanceId () 방법의 주석에서
This method is deprecated. Use FirebaseInstallations.delete() and FirebaseMessaging.deleteToken() instead.
따라서 처음에는 FirebaseMessaging.getInstance().deleteToken() 외에도 FirebaseInstallations.delete()를 호출해 영패를 다시 받았다.(이곳에서도 리셋을 잘 할 수 있다) 하지만 시도해 봤는데 위에서 말한 바와 같이 순서대로 삭제와 취득을 부르는 것만으로도 기대하는 행위가 되어 여기에 기재되어 있다.솔직히 뭐가 좋을지 모르겠어요. 아는 사람이 오면 댓글을 남겨주면 좋겠어요.(

받다


Firebase 콘솔의 Notification Compose 를 사용합니다.
테스트 메시지를 보내는 것을 선택하면 지정한 영패에 메시지를 보낼 수 있습니다.

추송 통지는 삭제된 영패처에 보내지 않았고, 이미 재취득한 영패처에 보낸 것으로 확인되었습니다.

문서


https://firebase.google.com/docs/cloud-messaging/android/client?hl=ja
https://firebase.google.com/docs/reference/android/com/google/firebase/messaging/FirebaseMessaging
https://firebase.google.com/docs/reference/android/com/google/firebase/messaging/FirebaseMessagingService
https://firebase.google.com/docs/reference/android/com/google/firebase/installations/FirebaseInstallations
https://firebase.google.com/docs/reference/android/com/google/firebase/iid/FirebaseInstanceId

좋은 웹페이지 즐겨찾기