Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/194.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如果我不';我不想实现FirebaseMessagingService?_Android_Firebase_Firebase Cloud Messaging - Fatal编程技术网

Android 如果我不';我不想实现FirebaseMessagingService?

Android 如果我不';我不想实现FirebaseMessagingService?,android,firebase,firebase-cloud-messaging,Android,Firebase,Firebase Cloud Messaging,我的应用在后台时只需要FCM通知。因此,我实际上不需要FirebaseMessagingService。我只将其添加到我的应用程序中,以处理onNewToken回调,以防在应用程序运行时令牌发生更改: @AndroidEntryPoint class ChatFirebaseMessagingService : FirebaseMessagingService() { @Inject lateinit var userRepository: UserRepository

我的应用在后台时只需要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

就无法获得此类通知,谢谢您的澄清。只有
onNewToken
而没有其他功能的
FirebaseMessagingService
是否很常见?对于在应用程序处于后台时只需要通知的应用程序。使用
FirebaseMessagingService
的主要原因是检测令牌更改,因此,
onNewToken
是其中实现的唯一方法,这是很常见的。