Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 当我的android应用程序收到firebase消息通知,然后关闭_Java_Android_Firebase_Push Notification_Firebase Cloud Messaging - Fatal编程技术网

Java 当我的android应用程序收到firebase消息通知,然后关闭

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

我练习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:不活动,断开与服务的连接

  • 测试活性
  • 公共类测试活动扩展了AppCompatActivity{

    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”);
    }
    
  • MyFirebaseMessagingService

  • 这是我们的项目

    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");
        }