2017-03-03 130 views
1

我試圖從我的應用服務器向我的應用發送推送通知,但我沒有通過FirebaseInstanceIdService獲得FCM註冊令牌。在這裏,我使用Genymotion個人版emulator.is與我的模擬器API的問題?爲什麼不能獲取Android Firebase FCM註冊令牌?

這裏是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); 
     } 
    }); 
} 
} 

它只是發送默認值到服務器。

回答

0

你是正確的,它的發生,你的事業Genymotion仿真器API,然後Check this answer

0

這是因爲Genymotion在默認情況下沒有谷歌播放服務。