(Android)Firebase云消息传递 - ontokenrefresh从未在特定设备上调用过

时间:2018-04-12 14:31:53

标签: android firebase firebase-cloud-messaging

我在两台设备上测试fcm。

在一个具有API级别23的onTokenRefresh方法的设备上被调用。

在API级别为19的另一台设备上,从未调用onTokenRefresh方法。

// MyFirebaseInstanceIdService类

public class MyFirebaseInstanceIDService extends FirebaseInstanceIdService {

    private static final String TAG = "MyFirebaseIIDService";

    @Override
    public void onTokenRefresh() {
        // Get updated InstanceID token.
        String refreshedToken = FirebaseInstanceId.getInstance().getToken();
        Log.d(TAG, "Refreshed token: " + refreshedToken);

        sendRegistrationToServer(refreshedToken);
    }

//清单

<application>
...
     <service android:name=".Services.MyFirebaseInstanceIDService"
            android:enabled="true"
            android:exported="true">
            <intent-filter>
                <action android:name="com.google.firebase.INSTANCE_ID_EVENT" />
            </intent-filter>
        </service>
    </application>

//的build.gradle

implementation 'com.google.firebase:firebase-messaging:11.6.0'
implementation 'com.google.firebase:firebase-core:11.6.0'

// build.gradle

classpath 'com.google.gms:google-services:3.2.0'

重新安装应用无助于解决此问题。

1 个答案:

答案 0 :(得分:0)

我刚给answer一个类似的问题。

期望在第一次安装时调用onTokenRefresh()不是通常的情况。从我的链接答案:

  

每次启动应用程序或新安装时,都不一定会调用onTokenRefresh()方法。它仅在某些情况下触发(请参阅我的回答here)。

     

...

     

getToken()方法可以立即返回当前标记 null。如果为null,则表示FCM服务器尚未完成生成或将令牌发送回客户端,在这种情况下onTokenRefresh()将在完成时触发。