首页 > 解决方案 > 不推荐使用 FirebaseInstanceIdService 在重写我的代码时丢失

问题描述

我在 android studio 中重写我的代码是 android 开发的新手 我最初的 MyFirebaseInstanceIDService CODE

    @Override
    public void onCreate() {
        super.onCreate();
        mAuth= FirebaseAuth.getInstance();
        mDatabase= FirebaseDatabase.getInstance().getReference().child("userprofiles");
    }

    @Override
    public void onTokenRefresh() {

        String refreshedToken = FirebaseInstanceId.getInstance().getToken();

        if(mAuth.getCurrentUser()!=null) {
            String uiid= Settings.Secure.getString(this.getContentResolver(), Settings.Secure.ANDROID_ID);
            mDatabase.child(mAuth.getCurrentUser().getUid()).child(uiid).child("utok").setValue(refreshedToken);
        }
    }
}

**我可以使用此示例代码以新格式重写我的代码吗? 两周来一直没有解决方案,我将不胜感激**

public class MyFirebaseMessagingService extends FirebaseMessagingService {

    @Override
    public void onNewToken(String s) {
        super.onNewToken(s);
        Log.e("NEW_TOKEN",s);
    }

    @Override
    public void onMessageReceived(RemoteMessage remoteMessage) {
        super.onMessageReceived(remoteMessage);
    }
} 

这也

FirebaseInstanceId.getInstance().getInstanceId().addOnSuccessListener( MyActivity.this,  new OnSuccessListener<InstanceIdResult>() {
     @Override
     public void onSuccess(InstanceIdResult instanceIdResult) {
           String newToken = instanceIdResult.getToken();
           Log.e("newToken",newToken);

     }
 });

标签: javaandroidfirebasefirebase-cloud-messaging

解决方案


    No need to use FirebaseInstanceIdService service to get FCM token. You can safely remove FirebaseInstanceIdService.

Now we need to **@Override onNewToken()** to get Token in "**FirebaseMessagingService**".

**For Example:**

    public class MyFirebaseMessagingService extends FirebaseMessagingService {

        @Override
        public void onNewToken(String s) {
            super.onNewToken(s);
            Log.e("NEW_TOKEN",s);
        }

        @Override
        public void onMessageReceived(RemoteMessage remoteMessage) {
            super.onMessageReceived(remoteMessage);
        }
    } 

**Add below lines in your manifest file:**

<service
        android:name=".MyFirebaseMessagingService"
        android:stopWithTask="false">
        <intent-filter>
            <action android:name="com.google.firebase.MESSAGING_EVENT" />
        </intent-filter>
</service>

**Get Token in your Activity :** .getToken(); is also deprecated if you need to get token in your activity then use as following:

    FirebaseInstanceId.getInstance().getInstanceId().addOnSuccessListener( MyActivity.this,  new OnSuccessListener<InstanceIdResult>() {
         @Override
         public void onSuccess(InstanceIdResult instanceIdResult) {
               String newToken = instanceIdResult.getToken();
               Log.e("newToken",newToken);

         }
     });

Hope it will help you...
Happy Coding :)

推荐阅读