1

我正在向我的android应用程序添加通知,但似乎无法通过我的java代码发送通知。我从回应中获得200个http代码,但没有显示出来。使用Java发送Firebase通知,而不是FCM控制台

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

这是我的代码如下

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

线System.out.println("Response Code : " + responseCode);打印出以下

响应代码:200

任何人都有这个问题?任何帮助将不胜感激

回答

2

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

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

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

另外,如果你想火力地堡为您生成的通知,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" 
+0

是的!有效!这是有道理的,你必须将信息推入通知。非常感谢! – Pooshonk

相关问题