简体   繁体   中英

How to send notification to Android app from Java server using GCM?

I have my simple Android application which uses REST web service. Now I want to sent notification from my REST web service to Android application using GCM.

How do this? Is there any simple tutorial for this requirement? I searched and found Google API, but I don't understand that.

I have created a Java-based test server, implemented as a maven plugin, for the GCMUtils project: https://code.google.com/p/gcmutils/wiki/MavenPlugin#Test_server

Here is the source code: https://github.com/jarlehansen/gcmutils/tree/master/gcm-test-server

Source for the maven plugin: https://github.com/jarlehansen/gcmutils/tree/master/gcmutils-maven-plugin

Maybe this can help you get started?

This is a function using to send notification from java to the app android. this code use JSONObject you must add this jar into project buildpath.

note:I use fcm

 import java.io.OutputStreamWriter;
 import java.net.HttpURLConnection;
 import java.net.URL;

import org.json.JSONObject;

public class FcmNotif {
  public final static String AUTH_KEY_FCM ="AIzB***********RFA";
  public final static String API_URL_FCM = "https://fcm.googleapis.com/fcm/send";

// userDeviceIdKey is the device id you will query from your database

public void pushFCMNotification(String userDeviceIdKey, String title, String message) throws Exception{

String authKey = AUTH_KEY_FCM;   // You FCM AUTH key
String FMCurl = API_URL_FCM;     

URL url = new URL(FMCurl);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();

conn.setUseCaches(false);
conn.setDoInput(true);
conn.setDoOutput(true);

conn.setRequestMethod("POST");
conn.setRequestProperty("Authorization","key="+authKey);
conn.setRequestProperty("Content-Type","application/json");

JSONObject json = new JSONObject();
json.put("to",userDeviceIdKey.trim());
JSONObject info = new JSONObject();
info.put("title", title); // Notification title
info.put("body", message); // Notification body
info.put("image", "https://lh6.googleusercontent.com/-sYITU_cFMVg/AAAAAAAAAAI/AAAAAAAAABM/JmQNdKRPSBg/photo.jpg");
info.put("type", "message");
json.put("data", info);
System.out.println(json.toString());

OutputStreamWriter wr = new OutputStreamWriter(conn.getOutputStream());
wr.write(json.toString());
wr.flush();
conn.getInputStream();
}
}

good luck

Follow this URL https://firebase.google.com/docs/cloud-messaging/send-message

FCM URL

private String ANDROID_NOTIFICATION_URL = "https://fcm.googleapis.com/fcm/send"

Notification Key

private String ANDROID_NOTIFICATION_KEY = "Your key";

Java Code

private void sendAndroidNotification(String deviceToken,String message,String title) throws IOException {
        OkHttpClient client = new OkHttpClient();
        MediaType mediaType = MediaType.parse("application/json");
        JSONObject obj = new JSONObject();
        JSONObject msgObject = new JSONObject();
        msgObject.put("body", message);
        msgObject.put("title", title);
        msgObject.put("icon", ANDROID_NOTIFICATION_ICON);
        msgObject.put("color", ANDROID_NOTIFICATION_COLOR);

        obj.put("to", deviceToken);
        obj.put("notification",msgObject);

        RequestBody body = RequestBody.create(mediaType, obj.toString());
        Request request = new Request.Builder().url(ANDROID_NOTIFICATION_URL).post(body)
                .addHeader("content-type", CONTENT_TYPE)
                .addHeader("authorization", "key="+ANDROID_NOTIFICATION_KEY).build();

        Response response = client.newCall(request).execute();
        logger.debug("Notification response >>>" +response.body().string());
    }

That's it !!!

  1. package com.test;

    import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStream; import java.net.HttpURLConnection; import java.net.URL;

    public class Firebase {

     public static void main(String[] args) throws IOException { final 

    String apiKey = "AAAAqf1B9uQ:**********_1MoeQBVPbVROXuyD4ERyV-i6nva0LAic9uRotN80C9utoaGL9Sp1GjrPr5-mtJBlxVNbuqG1zeg9LBnslZw-vyud3jW-11SWDfLBB26bcHuAi8bdnQCPcj3DWKX2h"; URL url = new URL(" https://fcm.googleapis.com/fcm/send "); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); System.setProperty("javax.net.debug","all"); conn.setDoOutput(true); conn.setRequestMethod("POST"); conn.setRequestProperty("Content-Type", "application/json"); conn.setRequestProperty("Authorization", "key=" + apiKey);

      conn.setDoOutput(true); String input = "{\\r\\n\\"to\\": 

    \\"fdaxKOmRcAI:APA91bEXILacYEjypsbusKXHV_TuEzt_vsqhI5OxH-******************-l2qGIORSiE0W5B2d74yjXAz60l\\", \\r\\n\\"notification\\": {\\r\\n\\"title\\" : \\" title \\",\\r\\n\\"body\\" : \\" Body of a single vijay \\"\\r\\n}\\r\\n}";

      OutputStream os = conn.getOutputStream(); os.write(input.getBytes()); os.flush(); os.close(); int responseCode = conn.getResponseCode(); System.out.println("\\nSending 'POST' request to URL : " + url); System.out.println("Post parameters : " + input); System.out.println("Response Code : " + responseCode); BufferedReader in = new BufferedReader(new 

    InputStreamReader(conn.getInputStream())); String inputLine; StringBuffer response = new StringBuffer();

      while ((inputLine = in.readLine()) != null) { response.append(inputLine); } in.close(); // print result System.out.println(response.toString()); } 

    }

    1. List item

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM