如果我不想实施 FirebaseMessagingService,是否有 onNewToken 的替代方案?
Is there an alternative to onNewToken if I don't want to implement a FirebaseMessagingService?
我的应用仅在应用处于后台时需要 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
回调是不可避免的?
如果您的应用没有 FirebaseMessagingService
并且令牌在用户未使用该应用时更改,您的服务器会将消息发送到旧令牌,并且设备不会收到他们。
创建 FirebaseMessagingService
实际上可以确保您的应用程序代码在应用未被主动使用时收到令牌更改通知。没有 FirebaseMessagingService
.
就无法获得这样的通知
我的应用仅在应用处于后台时需要 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
回调是不可避免的?
如果您的应用没有 FirebaseMessagingService
并且令牌在用户未使用该应用时更改,您的服务器会将消息发送到旧令牌,并且设备不会收到他们。
创建 FirebaseMessagingService
实际上可以确保您的应用程序代码在应用未被主动使用时收到令牌更改通知。没有 FirebaseMessagingService
.