调用FirebaseMessagingService的onNewToken(),但不调用onMessageReceived()

时间:2019-12-27 19:30:09

标签: android firebase firebase-cloud-messaging

我知道这个问题已经被问过很多次了,我的问题与Firebase Console有关,告诉我即使我的应用程序成功接收到注册令牌,我的应用程序也从未与服务器进行通信。

当我卸载并重新安装我的应用程序时,它会调用FirebaseMessagingService类(或从其扩展的类)的onNewToken()方法。

即使FirebaseInstanceId.getInstance()。getInstanceId()都能正常工作并获取令牌。

但是,由于Firebase控制台说该应用程序从未与服务器通信,因此当我从控制台发送通知时,它无法到达我的手机。至少,永远不会调用onMessageReceived()。

我不知道是否有一种方法可以过滤logcat来确定电话是否确实收到了通知,并且我的设置中还有其他错误。如果您知道这种方法,那也会有所帮助。

无论如何,如果您有任何建议,我将不胜感激。我试图从控制台发送带有/不带有数据的通知。我什至尝试发送主题,并使应用程序订阅该主题。但是,没有调用onMessageReceived(),也没有显示通知。很沮丧。请帮忙。

app / build.gradle具有:

dependecies {
implementation 'com.google.firebase:firebase-analytics:17.2.0'
implementation 'com.google.firebase:firebase-messaging:20.0.0'
}

apply plugin: 'com.google.gms.google-services'

project / build.gradle具有:

buildscript {
    repositories {
        google()
        jcenter()
        maven { url 'https://jitpack.io' }
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.5.2'
        classpath 'com.google.gms:google-services:4.3.2'
    }
}

allprojects {
    repositories {
        google()
        jcenter()
        maven { url 'https://jitpack.io' }
    }
}

1 个答案:

答案 0 :(得分:0)

您是否还在清单中包含了意图过滤器?像这样:

<service
    android:name=".FirebaseServiceClassName"
    android:exported="false">
    <intent-filter>
        <action android:name="com.google.firebase.MESSAGING_EVENT"/>
    </intent-filter>
</service>