Firebase中的标记始终为null

fra*_*ool 8 android android-manifest firebase firebase-cloud-messaging

我试图通过以下简单代码获取令牌以在我的应用程序中使用云消息传递:

String token = FirebaseInstanceId.getInstance().getToken();
Run Code Online (Sandbox Code Playgroud)

我试图在StackOverflow上找到那些遇到同样问题并且找不到任何解决方案的人...当然,我已经按照官方的Google文档关于安装(多次),我的令牌从未生成过.

知道为什么我无法获得有效的令牌吗?

谢谢!

fra*_*ool 12

好吧,我自己设法找到了解决方案,我花了很多时间来弄清楚,所以我认为分享解决方案是个好主意,万一有人得到同样的问题.

所以问题来自我在我的AndroidManifest.xml(内部<application>标签)中使用这一行的事实:

tools:node="replace"
Run Code Online (Sandbox Code Playgroud)

这必须通过以下方式删除或更改:

tools:node="merge"
Run Code Online (Sandbox Code Playgroud)

否则,Firebase将无法在您的应用中使用.至少,这是我修复我的应用程序以最终获得有效令牌的方式!

希望这会帮助别人!


Dhr*_*hal 5

确保您的 Firebase“ MyFirebaseInstanceIDService.java ”文件直接位于包名称树“com.company”下,

不要将它们放在单独的子包中,例如“com.company.services”。这是因为您的 google-services.json 将直接在“com.company”目录下查找文件。

在元标记下方的清单应用程序标记中添加以下内容(如果有)

   <service
        android:name=".MyFirebaseInstanceIDService">
        <intent-filter>
            <action android:name="com.google.firebase.INSTANCE_ID_EVENT"/>
        </intent-filter>
    </service>
Run Code Online (Sandbox Code Playgroud)

您将通过public void onTokenRefresh()方法获得您的 TOKEN


PS:确保您的设备上的日期正确,并从项目控制台获取最新的 google-services.json 。