使用Java而不是FCM控制台发送Firebase通知

时间:2017-04-20 14:27:38

标签: java firebase push-notification firebase-cloud-messaging

我正在向我的Android应用程序添加通知,但我似乎无法通过我的java代码发送通知。我从响应中找回了200个http代码,但没有显示任何内容。

这适用于Firebase控制台本身,但是一旦我尝试使用我的Java代码,事情就会发生。

这是我的代码

  use, intrinsic :: iso_c_binding

package actions.authentication; import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.net.HttpURLConnection; import java.net.URL; import com.opensymphony.xwork2.Action; import edocs.actions.PublicAction; import net.sf.json.JSONObject; public class SendPushNotification extends PublicAction { /** * */ private static final long serialVersionUID = -8022560668279505764L; // Method to send Notifications from server to client end. public final static String AUTH_KEY_FCM = "SERVER_KEY_HERE"; public final static String API_URL_FCM = "https://fcm.googleapis.com/fcm/send"; public final static String DEVICE_ID = "DEVICE_TOKEN_HERE"; public String execute() { String DeviceIdKey = DEVICE_ID; String authKey = AUTH_KEY_FCM; String FMCurl = API_URL_FCM; try { 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"); System.out.println(DeviceIdKey); JSONObject data = new JSONObject(); data.put("to", DeviceIdKey.trim()); JSONObject info = new JSONObject(); info.put("title", "FCM Notificatoin Title"); // Notification title info.put("body", "Hello First Test notification"); // Notification body data.put("data", info); System.out.println(data.toString()); OutputStreamWriter wr = new OutputStreamWriter(conn.getOutputStream()); wr.write(data.toString()); wr.flush(); wr.close(); int responseCode = conn.getResponseCode(); 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(); return Action.SUCCESS; } catch(Exception e) { System.out.println(e); } return Action.SUCCESS; } } 行打印出以下内容

  

回复代码:200

还有其他人有这个问题吗?任何帮助将不胜感激

1 个答案:

答案 0 :(得分:4)

您的代码适合我。添加下面提到的行以查看完整响应状态。发布输出。

        while ((inputLine = in.readLine()) != null) {
            response.append(inputLine);
        }
        in.close();

        System.out.println("Resonse: " + response); // <= ADD THIS

此外,如果您希望Firebase为您生成通知,则bodytitle必须是notification的属性,而不是data。详细信息位于the documentation

        info.put("title", "FCM Notification Title"); // Notification title
        info.put("body", "Hello First Test notification"); // Notification body
        data.put("notification", info); // <= changed from "data"