Tôi đang cố gửi thông báo Đẩy tới thiết bị Android của mình bằng dịch vụ Firebase mới. Tôi đã đăng ký và thiết lập một ứng dụng, tôi cũng đặt tất cả mã cần thiết để nhận thông báo trong ứng dụng android. Qua Bảng điều khiển Firebase, tôi có thể gửi thông báo đến ứng dụng của tôi và nó được nhận và hiển thị. Bây giờ tôi muốn viết một máy chủ độc lập java, để gửi một thông báo tới TẤT CẢ các thiết bị. Đây là mã hiện tại của tôi:Máy chủ Java Firebase để gửi thông báo đẩy tới tất cả các thiết bị
final String apiKey = "I added my key here";
URL url = new URL("https://fcm.googleapis.com/fcm/send");
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setDoOutput(true);
conn.setRequestMethod("POST");
conn.setRequestProperty("Content-Type", "application/json");
conn.setRequestProperty("Authorization", "key=" + apiKey);
conn.setDoOutput(true);
String input = "{\"notification\" : {\"title\" : \"Test\"}, \"to\":\"test\"}";
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());
Và đây là kết quả mà tôi nhận lại từ các máy chủ của họ:
{"multicast_id":6602141464107786356,"success":0,"failure":1,"canonical_ids":0,"results":[{"error":"InvalidRegistration"}]}
Thật không may, chỉ cần loại bỏ các "thành" thẻ không hoạt động, tôi nhận được một mã 400 trở lại sau đó. Tôi đọc rằng tôi cần phải đăng ký thiết bị, gửi id thiết bị đến máy chủ và lưu nó vào đó rồi vòng qua tất cả các thiết bị đã đăng ký trên máy chủ để gửi tin nhắn. Không có cách nào dễ dàng hơn, chỉ cần gửi tin nhắn đến tất cả các thiết bị, giống như trong bảng điều khiển?
sự giúp đỡ của bạn là thực sự đánh giá cao, vì tôi đã cố gắng để có được điều này để làm việc tất cả các ngày dài = (
Kính trọng, Dustin
Vâng tôi cũng nghĩ về cách làm theo cách này, nhưng tôi không muốn làm bất kỳ mã đăng ký nào trong ứng dụng ... Bất kỳ ý tưởng nào nếu điều đó có thể bằng cách nào đó? – user3907491
Bạn có ý nghĩa gì với mã đăng ký trong ứng dụng? Khi người dùng của bạn khởi động ứng dụng, bạn có thể tự động đăng ký chúng với chủ đề. Trong Android, nó sẽ trông như thế này: 'FirebaseMessaging.getInstance(). SubscribeToTopic (" allDevices ");' Bạn sẽ đặt điều này trong phương thức onCreate và khi ứng dụng bắt đầu, chúng sẽ tự động được đăng ký. –
Tuyệt vời, cảm ơn sự giúp đỡ của bạn! Đó chính là điều tôi đang tìm kiếm =) Làm cách nào để gắn thẻ câu trả lời của bạn là câu trả lời hay nhất? Đã +1 nó – user3907491