Java 当我的android应用程序收到firebase消息通知,然后关闭
我练习FCM发送和接收通知。 它适用于测试包,但不适用于我自己的包 这是我的日志 2020-07-23 15:11:29.43319947-19947/?E/FirebaseInstanceId:在后台启动服务失败:java.lang.IllegalStateException:不允许启动服务意图{act=com.google.firebase.INSTANCE_ID_EVENT pkg=lg.uplusbox cmp=lg.uplusbox/.controller.fcm.FcmInstanceIdService(有附加项)}:应用程序在后台uid uid记录中{91a4603 u0a198 TRNB空闲更改:未缓存的进程:1进程列表:19947,seq(0,0,0)} 2020-07-23 15:11:29.437 19947-19947/?I/FA:应用程序测量正在启动,版本:11400 2020-07-23 15:11:29.437 19947-19947/?I/FA:启用调试日志运行:adb shell setprop log.tag.FA VERBOSE 2020-07-23 15:11:29.444 19947-19947/?V/FA:已启用采集 2020-07-23 15:11:29.445 19947-19947/?V/FA:App package,谷歌App id:lg.uplusbox,1:814604498086:android:0700c6cb9bf60793 2020-07-23 15:11:29.445 19947-19947/?I/FA:要启用更快的调试模式事件日志记录运行: adb shell setprop debug.firebase.analytics.app lg.uplusbox 2020-07-23 15:11:29.445 19947-19947/?D/FA:调试级消息日志记录已启用 2020-07-23 15:11:29.446 19947-19947/?V/FA:取消作业。作业ID:-1683691085 2020-07-23 15:11:29.450 19947-19947/?V/FA:注册的活动生命周期回调 2020-07-23 15:11:29.467 19947-19970/?V/FA:使用测量服务 2020-07-23 15:11:29.467 19947-19970/?V/FA:连接到远程服务 2020-07-23 15:11:29.48619947-19970/?V/FA:使用测量服务 2020-07-23 15:11:29.486 19947-19970/?V/FA:连接尝试已在进行中 2020-07-23 15:11:29.588 19947-19970/?D/FA:连接到远程服务 2020-07-23 15:11:29.588 19947-19970/?V/FA:处理排队服务任务:2 2020-07-23 15:11:34.642 19947-19970/?V/FA:不活动,断开与服务的连接Java 当我的android应用程序收到firebase消息通知,然后关闭,java,android,firebase,push-notification,firebase-cloud-messaging,Java,Android,Firebase,Push Notification,Firebase Cloud Messaging,我练习FCM发送和接收通知。 它适用于测试包,但不适用于我自己的包 这是我的日志 2020-07-23 15:11:29.43319947-19947/?E/FirebaseInstanceId:在后台启动服务失败:java.lang.IllegalStateException:不允许启动服务意图{act=com.google.firebase.INSTANCE_ID_EVENT pkg=lg.uplusbox cmp=lg.uplusbox/.controller.fcm.FcmInstanc
TextView textView;
TextView textView2;
String newToken;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_test);
Log.d("FMS_MAIN", "onCreate() called");
textView = findViewById(R.id.textView);
textView2 = findViewById(R.id.textView2);
FirebaseInstanceId.getInstance().getInstanceId().addOnSuccessListener(this, new OnSuccessListener<InstanceIdResult>() {
@Override
public void onSuccess(InstanceIdResult instanceIdResult) {
newToken = instanceIdResult.getToken();
println("token: " + newToken);// it work..
Log.d("Mytoken", "token : " + newToken); // not work..
}
});
Log.d("Mytoken", "token : " + newToken);
Button button = findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String instancedId = FirebaseInstanceId.getInstance().getId(); println("instanced id: " + instancedId); // it work..!
Log.d("Mytoken", "instance id: " + instancedId);// but it not work..
Toast.makeText(TestActivity.this,instancedId,Toast.LENGTH_SHORT).show(); // it not work too..
}
});
}
@Override
protected void onNewIntent(Intent intent) {
println("onNewIntent() called");
Log.d("FMS_MAIN", "onNewIntent() called");
if (intent != null) {
println("Intent is Not null");
processIntent(intent);
} else {
println("Intent is null");
}
super.onNewIntent(intent);
}
private void processIntent(Intent intent) {
Log.d("FMS_MAIN", "processIntent called");
int ekey = intent.getIntExtra("ekey", 2);
String ename = intent.getStringExtra("ename");
println("ekey: " + ekey);
textView.setText("");
textView.setText("[" + ename + "]'s eKey : " + ekey);
}
public void println(String data) {
textView2.setText(data + "\n");
}
TextView TextView;
文本视图文本视图2;
弦纽扣;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_测试);
d(“FMS_MAIN”,“onCreate()被调用”);
textView=findViewById(R.id.textView);
textView2=findViewById(R.id.textView2);
FirebaseInstanceId.getInstance().getInstanceId().addOnSuccessListener(这是新的OnSuccessListener()){
@凌驾
成功时公共无效(InstancedResult InstancedResult){
newToken=instanceIdResult.getToken();
println(“标记:+newToken);//它可以工作。。
Log.d(“Mytoken”,“token:+newToken);//不工作。。
}
});
Log.d(“Mytoken”,“token:+newToken”);
按钮按钮=findViewById(R.id.Button);
setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
字符串instanceId=FirebaseInstanceId.getInstance().getId();println(“实例id:+instanceId”);//它可以工作。。!
Log.d(“Mytoken”,“实例id:+InstanceId);//但它不起作用。。
Toast.makeText(TestActivity.this,instanceId,Toast.LENGTH_SHORT).show();//它也不起作用。。
}
});
}
@凌驾
受保护的void onNewIntent(意图){
println(“onNewIntent()调用”);
Log.d(“FMS_MAIN”,“onNewIntent()调用”);
if(intent!=null){
println(“意图不为空”);
过程意图(intent);
}否则{
println(“意图为空”);
}
super.onNewIntent(意向);
}
私有void processIntent(Intent-Intent){
Log.d(“FMS_MAIN”,“调用processIntent”);
int ekey=intent.getIntExtra(“ekey”,2);
字符串ename=intent.getStringExtra(“ename”);
println(“ekey:+ekey”);
textView.setText(“”);
textView.setText(“[”+ename+“])的eKey:“+eKey”;
}
公共void println(字符串数据){
textView2.setText(数据+“\n”);
}
这是我们的项目
public void sendEmergancyData() {
Log.d("PUSH","Start");
try {
RequestQueue queue = Volley.newRequestQueue(this);
String url = "https://fcm.googleapis.com/fcm/send";
JSONObject pushData = new JSONObject();
pushData.put("ekey", elderlyData.getEkey());
pushData.put("ename", name);
pushData.put("homeIot", homeIot);
pushData.put("title", name);
pushData.put("body", "emergancy");
JSONObject push = new JSONObject();
push.put("to", regid);
push.put("data", pushData);
JsonObjectRequest request = new JsonObjectRequest(url, push, new com.android.volley.Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
Log.d("Emergancy_Push","success:"+response.toString());
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Log.d("Emergancy_Push","error:"+error.getMessage());
}
}) {
@Override
public Map<String, String> getHeaders() {
Map<String, String> headers = new HashMap<>();
headers.put("Content-Type", "application/json");
headers.put("Authorization", Constants.FCM_API_KEY);
return headers;
}
};
queue.add(request);
} catch (Exception e) {
e.printStackTrace();
}
Log.d("PUSH","End");
}
public void sendEmergancyData(){
日志d(“推”、“启动”);
试一试{
RequestQueue=Volley.newRequestQueue(this);
字符串url=”https://fcm.googleapis.com/fcm/send";
JSONObject pushData=新的JSONObject();
pushData.put(“ekey”,elderlyData.getEkey());
pushData.put(“ename”,名称);
pushData.put(“家庭物联网”,家庭物联网);
pushData.put(“标题”,名称);
pushData.put(“body”、“emergency”);
JSONObject push=新的JSONObject();
推、放(“to”,regid);
push.put(“数据”,pushData);
JsonObjectRequest=newJSONObjectRequest(url,push,new com.android.volley.Response.Listener()){
@凌驾
公共void onResponse(JSONObject响应){
Log.d(“紧急推送”,“成功:+response.toString());
}
},new Response.ErrorListener(){
@凌驾
公共无效onErrorResponse(截击错误){
Log.d(“紧急推送”,“错误:+error.getMessage());
}
}) {
@凌驾
公共映射getHeaders(){
Map headers=newhashmap();
headers.put(“内容类型”、“应用程序/json”);
headers.put(“授权”,常量.FCM_API_键);
返回标题;
}
};
添加(请求);
}捕获(例外e){
e、 printStackTrace();
}
日志d(“推”、“结束”);
}
我之前已经知道接收应用的令牌,所以它在发送应用中使用了regid。我自己的应用在收到推送消息时关闭。..Hi@cm94欢迎使用so。我发现您错误地将代码添加为答案。您应该通过单击上面的“e”将其添加到您的问题中
public void sendEmergancyData() {
Log.d("PUSH","Start");
try {
RequestQueue queue = Volley.newRequestQueue(this);
String url = "https://fcm.googleapis.com/fcm/send";
JSONObject pushData = new JSONObject();
pushData.put("ekey", elderlyData.getEkey());
pushData.put("ename", name);
pushData.put("homeIot", homeIot);
pushData.put("title", name);
pushData.put("body", "emergancy");
JSONObject push = new JSONObject();
push.put("to", regid);
push.put("data", pushData);
JsonObjectRequest request = new JsonObjectRequest(url, push, new com.android.volley.Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
Log.d("Emergancy_Push","success:"+response.toString());
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Log.d("Emergancy_Push","error:"+error.getMessage());
}
}) {
@Override
public Map<String, String> getHeaders() {
Map<String, String> headers = new HashMap<>();
headers.put("Content-Type", "application/json");
headers.put("Authorization", Constants.FCM_API_KEY);
return headers;
}
};
queue.add(request);
} catch (Exception e) {
e.printStackTrace();
}
Log.d("PUSH","End");
}