为什么不能获取Android Firebase FCM注册令牌? [英] Why not getting Android Firebase FCM registration token?

查看:614
本文介绍了为什么不能获取Android Firebase FCM注册令牌?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正尝试从我的应用服务器向我的应用发送推送通知,但是我没有通过 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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆