我在我们的应用中使用Firebase Cloud Messaging来显示推送通知。根据FirebaseInstanceId doc。
当新用户安装我的应用时,会自动调用onTokenRefresh()。
现在我想将令牌发送到我的服务器以将其存储在数据库中。 token存储在数据库中,带有null。所以我无法从共享偏好中获取令牌。
InstanceIdService代码:
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();
}
}
在按钮上单击我将令牌发送到服务器,代码:
String app_server_url = "http://192.168.1.1/fcm/fcm_insert.php";
btnSendFcm.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
SharedPreferences sharedPreferences = getApplicationContext().getSharedPreferences(getString(R.string.FCM_PREF), Context.MODE_PRIVATE);
final String token = sharedPreferences.getString(getString(R.string.FCM_TOKEN),"");
Toast.makeText(getApplicationContext(),token+"-1-",Toast.LENGTH_SHORT).show();
StringRequest stringRequest = new StringRequest(Request.Method.POST, app_server_url, new Response.Listener<String>() {
@Override
public void onResponse(String response) {
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
}
})
{
@Override
protected Map<String, String> getParams() throws AuthFailureError {
Map<String,String> params = new HashMap<String, String>();
params.put("fcm_token",token);
return params;
}
};
MySingleton.getmInstance(MainActivity.this).addToRequestque(stringRequest);
}
});
当我检查设备上的共享偏好数据时,创建了两个文件: - 1)com.google.android.gms.appid.xml 2)com.google.android.gms.measurement.prefs.xml
com.google.android.gms.appid.xml中的数据
<?xml version='1.0' encoding='utf-8' standalone='yes' ?>
<map>
<string name="|T|119518470744|*">{"token":"here are some data","appVersion":"1","timestamp":1481693481269}</string>
<string name="|S||P|">here are some data</string>
<string name="|S|cre">here are some data</string>
<string name="|S||K|">here are some data</string>
</map>
我检查过很多文章,但无法解决。任何人都可以建议我为此做些什么。