How to send Device to device notification by using FCM without using XMPP or any other script.?

前端 未结 3 1822
情歌与酒
情歌与酒 2020-11-22 09:05

Is there any way to send Upstream notification message through FCM from one android device to another devices connected with Firebase database.

I kn

3条回答
  •  执念已碎
    2020-11-22 09:31

    After lots of try finally i got one solution and its work perfectly

    Step 1 :Include two library.

    compile 'com.squareup.okhttp3:okhttp:3.4.1'
    compile 'com.google.firebase:firebase-messaging:9.2.0'
    

    Step 2 : In your MainActivity or from where you want to send notifications.

    OkHttpClient mClient = new OkHttpClient();
    
    String refreshedToken = "";//add your user refresh tokens who are logged in with firebase.
    
    JSONArray jsonArray = new JSONArray();
    jsonArray.put(refreshedToken);
    

    Step 3: Create one async task which sends notifications to all devices.

    public void sendMessage(final JSONArray recipients, final String title, final String body, final String icon, final String message) {
    
            new AsyncTask() {
                @Override
                protected String doInBackground(String... params) {
                    try {
                        JSONObject root = new JSONObject();
                        JSONObject notification = new JSONObject();
                        notification.put("body", body);
                        notification.put("title", title);
                        notification.put("icon", icon);
    
                        JSONObject data = new JSONObject();
                        data.put("message", message);
                        root.put("notification", notification);
                        root.put("data", data);
                        root.put("registration_ids", recipients);
    
                        String result = postToFCM(root.toString());
                        Log.d("Main Activity", "Result: " + result);
                        return result;
                    } catch (Exception ex) {
                        ex.printStackTrace();
                    }
                    return null;
                }
    
                @Override
                protected void onPostExecute(String result) {
                    try {
                        JSONObject resultJson = new JSONObject(result);
                        int success, failure;
                        success = resultJson.getInt("success");
                        failure = resultJson.getInt("failure");
                        Toast.makeText(MainActivity.this, "Message Success: " + success + "Message Failed: " + failure, Toast.LENGTH_LONG).show();
                    } catch (JSONException e) {
                        e.printStackTrace();
                        Toast.makeText(MainActivity.this, "Message Failed, Unknown error occurred.", Toast.LENGTH_LONG).show();
                    }
                }
            }.execute();
        }
    
    String postToFCM(String bodyString) throws IOException {
    
    
    
       public static final String FCM_MESSAGE_URL = "https://fcm.googleapis.com/fcm/send";
          final MediaType JSON
                    = MediaType.parse("application/json; charset=utf-8");
    
            RequestBody body = RequestBody.create(JSON, bodyString);
            Request request = new Request.Builder()
                    .url(Url.FCM_MESSAGE_URL)
                    .post(body)
                    .addHeader("Authorization", "key=" + "your server key")
                    .build();
            Response response = mClient.newCall(request).execute();
            return response.body().string();
        }
    

    Step 4 : Call in onclick of your button

        btnSend.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                sendMessage(jsonArray,"Hello","How r u","Http:\\google.com","My Name is Vishal");
            }
        });
    

提交回复
热议问题