FCM - onTokenRefresh() 永远不会被调用

Posted

技术标签:

【中文标题】FCM - onTokenRefresh() 永远不会被调用【英文标题】:FCM - onTokenRefresh() is never called 【发布时间】:2016-08-15 12:39:40 【问题描述】:

我已关注 Firebase 云消息传递中提到的 setup process。但不知何故,永远不会调用 onTokenRefresh。

以下是这方面的变化:

应用的build.gradle:

dependencies 
    ...
    compile 'com.google.firebase:firebase-messaging:9.4.0'


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

项目的build.gradle:

dependencies 
    classpath 'com.android.tools.build:gradle:2.1.2'
    classpath 'com.google.gms:google-services:3.0.0'

AndroidManifest.xml

<application
    ...
    <service
        android:name="com.blynq.app.services.MyFirebaseMessagingService">
        <intent-filter>
            <action android:name="com.google.firebase.MESSAGING_EVENT"/>
        </intent-filter>
    </service>

    <service
        android:name="com.blynq.app.services.MyFirebaseInstanceIDService">
        <intent-filter>
            <action android:name="com.google.firebase.INSTANCE_ID_EVENT"/>
        </intent-filter>
    </service>

</application>


public class MyFirebaseInstanceIDService extends FirebaseInstanceIdService 

    @Override
    public void onTokenRefresh() 
        String token = FirebaseInstanceId.getInstance().getToken();
        Log.i("FCM", "Token refreshed - " + token);
        registerTokenWithServer(token);
    

记录状态I/FirebaseInitProvider: FirebaseApp initialization successful,但未执行 onTokenRefresh()。

我确实错过了一些东西,但无法理解在哪里。

编辑:仅在模拟器中发生,android 设备在上述设置下运行良好。

【问题讨论】:

在重新安装之前尝试卸载应用程序。 ps:只有第一个动作“INSTANCE_ID_EVENT”是正确的。您可以删除第二个。 试过重装,没用 看看吧:***.com/a/37831267/1739882 @ChintanSoni - 我没有在我的应用程序标签中的任何地方使用 tools:node="replace"。 刚刚发现只有模拟器才会出现这种情况,Android 设备在上述设置下运行良好。 【参考方案1】:

FCM 客户端需要运行 Android 2.3 或更高版本的设备 已安装 Google Play Store 应用程序或运行模拟器 带有 Google API 的 Android 2.3。

【讨论】:

以上是关于FCM - onTokenRefresh() 永远不会被调用的主要内容,如果未能解决你的问题,请参考以下文章

Firebase (FCM) 注册令牌

FCM 保持令牌同步

处理 FCM 设备组的刷新令牌

如何将 fcm 集成到 react js 应用程序中?

FCM onMessageReceived() 永远不会被调用

如何获取 FCM 即时交货状态