我正在使用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);
}
}
获取MyActivity
时,我无法获得addOnSuccessListener
中的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
如果您有其他关于我的旧代码参考的解决方案,请分享。
无需在getInstanceId().addOnSuccessListener
中调用onNewToken
,因为您已经获得了带有参数s
的newToken。因此,请尝试如下所示:
@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();
}