在具有自定义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();
}
在其他设备上一切正常。
答案 0 :(得分:0)
运行该方法时,您的应用似乎会续订fcm令牌。使用以下方法。它永远不会导致fcm令牌过期,即使您清除应用程序数据。仅卸载并重新安装应用程序以强制生成新令牌。
<强> 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();
}
}
<强>的AndroidManifest.xml 强>
<service android:name=".FcmInstanceIdService">
<intent-filter>
<action android:name="com.google.firebase.INSTANCE_ID_EVENT" />
</intent-filter>
</service>
<强>的strings.xml 强>
<string name="FCM_PREF">com.example.YourAccountName.AppName.fcm_pref</string>
<string name="FCM_Token">com.example.YourAccountName.AppName.fcm_token</string>
<强> YourActivityName.java 强>
sharedPreferences = getApplicationContext().getSharedPreferences(getString(R.string.FCM_PREF), Context.MODE_PRIVATE);
final String token = sharedPreferences.getString(getString(R.string.FCM_Token), "");