【发布时间】:2021-04-04 10:59:50
【问题描述】:
我的应用在后台运行时只需要 FCM 通知。出于这个原因,我实际上不需要FirebaseMessagingService。我只是将它添加到我的应用程序中以处理onNewToken 回调,以防应用程序运行时令牌发生变化:
@AndroidEntryPoint
class ChatFirebaseMessagingService : FirebaseMessagingService() {
@Inject
lateinit var userRepository: UserRepository
@Inject
lateinit var sessionManager: SessionManager
override fun onNewToken(token: String) {
sessionManager.currentChatUser?.let {
userRepository.persistCurrentFcmToken(it)
}
}
}
persistCurrentFcmToken 存在于存储库中:
当用户登录时我也会调用这个方法
fun persistCurrentFcmToken(user: ChatUser) {
applicationScope.launch {
val token = messaging.awaitToken() ?: return@launch
val tokenList = user.fcmTokens?.toMutableList() ?: mutableListOf()
if (!tokenList.contains(token)) {
tokenList.add(token)
val userUpdate = user.copy(fcmTokens = tokenList)
userCollection.document(user.uid!!).set(userUpdate)
}
}
}
FirebaseMessagingService 感觉有点无意义,因为我不需要前台通知。有没有办法摆脱它或者onNewToken 回调是不可避免的?
【问题讨论】:
标签: android firebase firebase-cloud-messaging