gpt4 book ai didi

java - 使用 Java 而非 FCM 控制台发送 Firebase 通知

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:03:45 25 4
gpt4 key购买 nike

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

这适用于 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); 打印出以下内容

Response Code : 200

有没有人遇到过这个问题?任何帮助将不胜感激

最佳答案

您的代码对我有用。添加下面提到的行以查看完整的响应状态是什么。发布输出。

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

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

此外,如果您希望 Firebase 为您生成通知,bodytitle 需要是 notification 的属性,而不是 数据。详情在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"

关于java - 使用 Java 而非 FCM 控制台发送 Firebase 通知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43522353/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com