gpt4 book ai didi

android - 为什么不获取 Android Firebase FCM 注册 token ?

转载 作者:行者123 更新时间:2023-11-30 00:41:03 26 4
gpt4 key购买 nike

我正在尝试从我的应用服务器向我的应用发送推送通知,但我没有通过 FirebaseInstanceIdService 获取 FCM 注册 token 。我在这里使用 Genymotion 个人版模拟器。我的模拟器 API 有问题吗?

这里是 FirebaseInstanceIdService

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();
}

} 这是 MainActivity

public class MainActivity extends AppCompatActivity {

String url = "http://myurl.fcm_insert.php";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

Button bt = (Button) findViewById(R.id.button2);

bt.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
SharedPreferences sharedPreferences = getApplicationContext().getSharedPreferences(getString(R.string.FCM_PREF), Context.MODE_PRIVATE);
final String token = sharedPreferences.getString(getString(R.string.FCM_TOKEN),"");

StringRequest stringRequest = new StringRequest(Request.Method.POST, url, new Response.Listener<String>() {
@Override
public void onResponse(String response) {

Toast.makeText(MainActivity.this,"Success",Toast.LENGTH_SHORT).show();
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Log.d("Response",error.toString());
Toast.makeText(MainActivity.this,error.toString(),Toast.LENGTH_SHORT).show();
}
})
{
@Override
protected Map<String, String> getParams() throws AuthFailureError {
Map<String,String> params = new HashMap<String, String>();
params.put("token",token);
return params;
}
} ;
Singletone.getSingletone(MainActivity.this).addToRequest(stringRequest);
}
});
}
}

它只是将默认值发送到服务器。

最佳答案

主要问题是首先从您的手机卸载您的 apk 应用程序,然后从 android studio 运行并重新构建。这对我有帮助

如果安装了 google play 服务,但您仍然没有获得 token ,那么您可能在生成 token 后在 onTokenRefresh() 中实现了您的 SharedPreferences。如果重新安装应用程序,问题会自动解决。请记住,只要生成新 token ,就会触发 onTokenRefresh() 回调。因此,如果 token 已经生成,则不会调用 onTokenRefresh()。只有当 token 发生变化时,onTokenRefresh() 方法才会被调用。您始终可以通过几乎在应用程序的任何位置调用 FirebaseInstanceId.getInstance().getToken(); 来获取生成的 token 值。仅针对您的情况,您可以从 SharedPreferences 中检索 token ,如下所示:-

SharedPreferences sharedPreferences = getApplicationContext().getSharedPreferences(getString(R.string.FCM_PREF), Context.MODE_PRIVATE);            final String token = sharedPreferences.getString(getString(R.string.FCM_TOKEN),FirebaseInstanceId.getInstance().getToken());

这将确保您始终获得 token ,如果 token 发生变化,onTokenRefresh() 将被调用并且您的 SharedPreferences 将得到更新。

关于android - 为什么不获取 Android Firebase FCM 注册 token ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42581532/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com