Vishal Patoliya Vishal Patoliya - 1 year ago 178
Android Question

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

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

I know that XMPP server can then receive the upstream messages and send the notifications to the other devices.To receive messages sent with the upstream API i need to implement an XMPP server but there is any other way???

Answer Source

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 ''

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();

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<String, String, String>() {
            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) {
                return null;

            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) {
                    Toast.makeText(MainActivity.this, "Message Failed, Unknown error occurred.", Toast.LENGTH_LONG).show();

String postToFCM(String bodyString) throws IOException {

      final MediaType JSON
                = MediaType.parse("application/json; charset=utf-8");

        RequestBody body = RequestBody.create(JSON, bodyString);
        Request request = new Request.Builder()
                .addHeader("Authorization", "key=" + "your server key")
        Response response = mClient.newCall(request).execute();
        return response.body().string();

Step 4 : Call in onclick of your button

    btnSend.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
            sendMessage(jsonArray,"Hello","How r u","Http:\\","My Name is Vishal");
Recommended from our users: Dynamic Network Monitoring from WhatsUp Gold from IPSwitch. Free Download