繁体   English   中英

Firebase令牌始终过期

[英]Firebase token always expired

在具有自定义ROM的一种型号的所有平板电脑上,我都获得了Firebase令牌,将其发送到服务器,但始终过期。 有什么问题吗? 通过以下方式在打开应用程序时获取它:

FirebaseInstanceId.getInstance().getToken();

和onTokenRefreshed:

 @Override
public void onTokenRefresh() {
   String refreshedToken = FirebaseInstanceId.getInstance().getToken();
    Log.d(TAG, "Refreshed token: " + refreshedToken);
    Globals.getInstance().Token = refreshedToken;
    SaveToken();
}

在其他设备上,一切正常。

运行该方法时,您的应用似乎更新了fcm令牌。 使用以下方法。 即使清除应用程序数据,它也不会导致fcm令牌过期。 仅卸载并重新安装该应用程序以强制生成新令牌。

  1. 首先为FirebaseInstanceIdService创建一个Java类。 仅在生成新令牌时调用。

FcmInstanceIdService.java

public class FcmInstanceIdService extends FirebaseInstanceIdService{    
    @Override
    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();    
    }
}
  1. 在AndroidManifest.xml文件中添加FcmInstanceIdService。

AndroidManifest.xml

<service android:name=".FcmInstanceIdService">
     <intent-filter>
         <action android:name="com.google.firebase.INSTANCE_ID_EVENT" />
     </intent-filter>
</service>
  1. 将字符串名称FCM_PREF和FCM_Token添加到strings.xml文件。

strings.xml

<string name="FCM_PREF">com.example.YourAccountName.AppName.fcm_pref</string>
<string name="FCM_Token">com.example.YourAccountName.AppName.fcm_token</string>
  1. 当您想获取fcm令牌时,请在活动中使用以下代码。

YourActivityName.java

sharedPreferences = getApplicationContext().getSharedPreferences(getString(R.string.FCM_PREF), Context.MODE_PRIVATE);
final String token = sharedPreferences.getString(getString(R.string.FCM_Token), "");

暂无
暂无

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

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