【问题标题】:How to send notification to Android app from Java server using GCM?如何使用 GCM 从 Java 服务器向 Android 应用发送通知?
【发布时间】:2013-04-02 07:22:44
【问题描述】:

我有一个使用 REST Web 服务的简单 Android 应用程序。现在我想使用 GCM 从我的 REST Web 服务向 Android 应用程序发送通知。

这是怎么做到的?这个要求有什么简单的教程吗?我搜索并找到了 Google API,但我不明白。

【问题讨论】:

    标签: java android web-services google-cloud-messaging


    【解决方案1】:

    我为 GCMUtils 项目创建了一个基于 Java 的测试服务器,作为 maven 插件实现: https://code.google.com/p/gcmutils/wiki/MavenPlugin#Test_server

    这里是源代码:https://github.com/jarlehansen/gcmutils/tree/master/gcm-test-server

    maven 插件来源:https://github.com/jarlehansen/gcmutils/tree/master/gcmutils-maven-plugin

    也许这可以帮助您入门?

    【讨论】:

      【解决方案2】:

      这是一个用于将通知从 java 发送到应用程序 android 的功能。此代码使用 JSONObject,您必须将此 jar 添加到项目构建路径中。

      注意:我使用 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();
      }
      }
      

      祝你好运

      【讨论】:

        【解决方案3】:

        关注此网址 https://firebase.google.com/docs/cloud-messaging/send-message

        FCM 网址

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

        通知键

        private String ANDROID_NOTIFICATION_KEY = "Your key";
        

        Java 代码

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

        就是这样!!!

        【讨论】:

          【解决方案4】:
          1. 包 com.test;

            导入 java.io.BufferedReader;导入 java.io.IOException;进口 java.io.InputStreamReader;导入 java.io.OutputStream;进口 java.net.HttpURLConnection;导入 java.net.URL;

            公共类 Firebase {

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

            字符串 apiKey = “AAAAqf1B9uQ:**********_1MoeQBVPbVROXuyD4ERyV-i6nva0LAic9uRotN80C9utoaGL9Sp1GjrPr5-mtJBlxVNbuqG1zeg9LBnslZw-vyud3jW-11SWDfLBB26bcHuAi8bdnQCPcj3DWKX2h”; URL url = 新 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("授权", "key=" + apiKey);

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

            \"fdaxKOmRcAI:APA91bEXILacYEjypsbusKXHV_TuEzt_vsqhI5OxH-******************-l2qGIORSiE0W5B2d74yjXAz60l\", \r\n\"通知\": {\r\n\"title\" : \" title \",\r\n\"body\" : \" 单个 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()));字符串输入线; StringBuffer 响应 = new StringBuffer();

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

            }

            1. 列表项

          【讨论】:

          • 请在您的回答中添加一些解释。
          猜你喜欢
          • 2023-03-30
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多