简体   繁体   English

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

[英](Android) Firebase cloud messaging - ontokenrefresh never called on specific device

I was testing fcm on two devices. 我正在两个设备上测试fcm。

On one device with API level 23 onTokenRefresh method was called. 在具有API级别23的一台设备上,调用了onTokenRefresh方法。

On another device with API level 19 the onTokenRefresh method was never called. 在API级别为19的另一台设备上,从未调用过onTokenRefresh方法。

//MyFirebaseInstanceIdService class // 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);
    }

//manifest //表现

<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 //build.gradle

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

//build.gradle //build.gradle

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

Reinstalling app did not help solve this problem. 重新安装应用程序无助于解决此问题。

I just gave an answer to a similar question. 我只是回答了一个类似的问题。

Expecting onTokenRefresh() to be called on the first install is not the usual case. 通常不希望在首次安装时调用onTokenRefresh() From my linked answer: 从我的链接答案:

The onTokenRefresh() method doesn't necessarily get called every time the app starts or if it is newly installed. onTokenRefresh()方法不一定在每次启动应用程序或新安装时都被调用。 It only triggers on some scenarios (see my answer here ). 它仅在某些情况下触发(请参阅此处的答案)。

... ...

The getToken() method can immediately return the current token or null. getToken()方法可以立即返回当前令牌 null。 If its null, it means that the FCM server is not yet finished generating or sending the token back to the client, in which case onTokenRefresh() would trigger upon completion. 如果为null,则表示FCM服务器尚未完成生成令牌或将令牌发送回客户端的情况,在这种情况下onTokenRefresh()会触发。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM