2

我正在使用FirebaseInstanceId.getInstance().getToken();方法在我的内部获取令牌,FcmInstanceIdService但由于这些已被弃用,我试图重写此代码 -

public class FcmInstanceIdService extends FirebaseInstanceIdService
{
    public void onTokenRefresh()
    {
        String recent_token = FirebaseInstanceId.getInstance().getToken();

        SharedPreferences sharedPreferences = getApplicationContext().getSharedPreferences(getString(R.string.FCM_PREF), Context.MODE_PRIVATE);
        SharedPreferences.Editor editor = sharedPreferences.edit();
        editor.putString(getString(R.string.FCM_TOKEN), recent_token);
        editor.commit();

    }
}

到 -

public class MyFirebaseMessagingService extends FirebaseMessagingService {

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

         }
      });
        SharedPreferences sharedPreferences = getApplicationContext().getSharedPreferences(getString(R.string.FCM_PREF), Context.MODE_PRIVATE);
       SharedPreferences.Editor editor = sharedPreferences.edit();
       editor.putString(getString(R.string.FCM_TOKEN), recent_token);
       editor.commit();
    }

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

我无法MyActivityaddOnSuccessListener获取recent_token.

旧代码参考 - https://www.zeolearn.com/magazine/sending-push-notification-to-android-application-from-your-own-django-app-server 但这不能正常工作,因为不推荐使用 FirebaseInstanceIdService,现在试图让它发挥作用。

我找到了解决方案 - https://medium.com/android-school/firebaseinstanceidservice-is-deprecated-50651f17a148

如果您对我的旧代码参考有任何其他解决方案,请分享。

4

1 回答 1

2

无需在getInstanceId().addOnSuccessListener内部调用,onNewToken因为您已经获得了带有参数的 newToken s。所以尝试如下:

@Override
public void onNewToken(String s) {
    SharedPreferences sharedPreferences = getApplicationContext().getSharedPreferences(getString(R.string.FCM_PREF), Context.MODE_PRIVATE);
    SharedPreferences.Editor editor = sharedPreferences.edit();
    editor.putString(getString(R.string.FCM_TOKEN), s);
    editor.commit();
}
于 2019-11-17T13:13:07.920 回答