MyFirebaseInstanceIdService没有调用为什么?

时间:2017-07-16 09:01:37

标签: android firebase firebase-cloud-messaging firebase-notifications

我已发起**linked_list以获得MyFirebaseInstanseIdService,我将直接向您展示代码:

token

我的manifest.xml:

    @Override
    public void onTokenRefresh() {
        super.onTokenRefresh();
        String refreshedToken = FirebaseInstanceId.getInstance().getToken();


        storeRegIdInPref(refreshedToken);


        sendRegistrationToServer(refreshedToken);


        Intent registrationComplete = new Intent(Config.REGISTRATION_COMPLETE);
        registrationComplete.putExtra("token", refreshedToken);
        LocalBroadcastManager.getInstance(this).sendBroadcast(registrationComplete);
    }

    private void sendRegistrationToServer(final String token) {
        // sending gcm token to server
        Log.e(TAG, "sendRegistrationToServer: " + token);
    }

    private void storeRegIdInPref(String token) {
        SharedPreferences pref = getApplicationContext().getSharedPreferences(Config.SHARED_PREF, 0);
        SharedPreferences.Editor editor = pref.edit();
        editor.putString("regId", token);
        editor.commit();
    }

我试图通过broadCast在我的活动中使用共享prefrence获取令牌,但似乎这个类没有被调用。

在我的<service android:name=".services.MyFirebaseMessagingService"> <intent-filter> <action android:name="com.google.firebase.MESSAGING_EVENT" /> </intent-filter> </service> <service android:name=".services.MyFirebaseInstanceIdService"> <intent-filter> <action android:name="com.google.firebase.INSTANCE_ID_EVENT" /> </intent-filter> </service> 中,我看到了这些内容:

log

和这个

D/FirebaseApp: com.google.firebase.auth.FirebaseAuth is not linked. Skipping initialization.
D/FirebaseApp: com.google.firebase.crash.FirebaseCrash is not linked. Skipping initialization.

1 个答案:

答案 0 :(得分:2)

仅在当前令牌过期时调用onTokenRefresh()方法。当前令牌可能会因以下原因而过期:

  
      
  • 应用删除实例ID

  •   
  • 在新设备上恢复应用

  •   
  • 用户卸载/重新安装应用

  •   
  • 用户清除应用数据

  •   

还有第一次调用getToken()的情况,它可能会返回null值,您应该从中onTokenRefresh()触发该值。

这样,您应该在初始活动上调用getToken()来生成令牌。