为什么不能获取Android Firebase FCM注册令牌? [英] Why not getting Android Firebase FCM registration token?
问题描述
我正尝试从我的应用服务器向我的应用发送推送通知,但是我没有通过 FirebaseInstanceIdService
获取FCM注册令牌。这里我使用Genymotion个人版emulator.is与我的模拟器API的问题?
这里是FirebaseInstanceIdService
<$ (){
>
public class FcmInstanceIdService extends FirebaseInstanceIdService {
$ b @Override $ b $ public void onTokenRefresh(){
String long_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();
$ b这里是MainActivity
public class MainActivity extends AppCompatActivity {
String url =http://myurl.fcm_insert.php;
@Override
protected void onCreate(Bundled savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button bt =(Button)findViewById(R.id.button2);
bt.setOnClickListener(new View.OnClickListener(){
@Override $ b $ 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错误){
Log.d(Response,error.toString());
Toast.makeText(Ma inActivity.this,error.toString(),Toast.LENGTH_SHORT).show();
}
})
{
@Override
保护地图< String,String> getParams()抛出AuthFailureError {
Map< String,String> params = new HashMap< String,String>();
params.put(token,token);
返回参数;
}
};
Singletone.getSingletone(MainActivity.this).addToRequest(stringRequest);
}
});
$ p
$ b $ p 它只将默认值发送给服务器。如果你已经在你的清单文件中添加了这个服务,那么你是正确的这是发生在你Genymotion模拟器API的原因,然后 href =https://stackoverflow.com/questions/20121883/how-to-install-google-play-services-in-a-genymotion-vm-with-no-drag-and-drop-su>检查这个回答
I'm trying to send a push notification to my app from my app server but i'm not getting the FCM registration token through FirebaseInstanceIdService
. Here i'm using Genymotion personal edition emulator.is that problem with my emulators API?
here is 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();
}
}
here is 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);
}
});
}
}
it's only sending the default value to the server.
解决方案 If you already added the service in your manifest file then you are right it's happening cause of you Genymotion emulators API, then Check this answer
这篇关于为什么不能获取Android Firebase FCM注册令牌?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!