Firebase cloud messaging rest API spring(Firebase 云消息传递 REST API Spring)
问题描述
我必须在 Spring Java 中为多层架构创建一个 Rest API,其中需要为 Firebase 云消息传递 (FCM) 构建 DAO、控制器、服务管理器以将推送通知消息发送到 android 应用程序,但我可以无法在 Java 中配置服务器以向设备发送通知.我怎么可能?
I have to make a Rest API in Spring Java for a multi tier arch in which DAO, Controller, Service manager needs to be build for a Firebase Cloud Messaging (FCM) to send push notifications messages to android application, but I can not able configure a server in Java to send notifications to devices. How could I?
推荐答案
以下是实现此目的的方法:
Here is the way that you can achieve this:
第 1 步:在 firebase 上创建项目并生成服务器密钥.
Step 1: Create project on firebase and generate server key.
第 2 步:为 fcm 服务器生成一个 json 对象.这里的消息可能包含数据对象和通知对象.它还必须具有接收器 fcm id.示例 json 是这样的:
Step 2: Generate a json object for fcm server. Here message may contains data object and notification object. It must also have receiver fcm id. Sample json is like:
{
"notification":
{
"notificationType":"Test",
"title":"Title ",
"body":"Here is body"
},
"data":
{"notificationType":"Test",
"title":"Title ",
"body":"Here is body"
},
"to":"dlDQC5OPTbo:APA91bH8A6VuJ1Wl4TCOD1mKT0kcBr2bDZ-X8qdhpBfQNcXZWlFJuBMrQiKL3MGjdY6RbMNCw0NV1UmbU8eooe975vvRmqrvqJvliU54bsiT3pdvGIHypssf7r-4INt17db4KIqW0pbAkhSaIgl1eYjmzIOQxv2NwwwwXg"
}
第 3 步:编写一个 Rest 调用者服务,它将通过以下 url 与 fcm 服务器进行通信:
Step 3 : Write a Rest caller service that will communicate with fcm server by following url:
https://fcm.googleapis.com/fcm/send
这是示例工作代码:
public class PushNotificationServiceImpl {
private final String FIREBASE_API_URL = "https://fcm.googleapis.com/fcm/send";
private final String FIREBASE_SERVER_KEY = "YOUR_SERVER_KEY";
public void sendPushNotification(List<String> keys, String messageTitle, String message) {
JSONObject msg = new JSONObject();
msg.put("title", messageTitle);
msg.put("body", message);
msg.put("notificationType", "Test");
keys.forEach(key -> {
System.out.println("
Calling fcm Server >>>>>>>");
String response = callToFcmServer(msg, key);
System.out.println("Got response from fcm Server : " + response + "
");
});
}
private String callToFcmServer(JSONObject message, String receiverFcmKey) {
RestTemplate restTemplate = new RestTemplate();
HttpHeaders httpHeaders = new HttpHeaders();
httpHeaders.set("Authorization", "key=" + FIREBASE_SERVER_KEY);
httpHeaders.set("Content-Type", "application/json");
JSONObject json = new JSONObject();
json.put("data", message);
json.put("notification", message);
json.put("to", receiverFcmKey);
System.out.println("Sending :" + json.toString());
HttpEntity<String> httpEntity = new HttpEntity<>(json.toString(), httpHeaders);
return restTemplate.postForObject(FIREBASE_API_URL, httpEntity, String.class);
}
}
你只需要调用 sendPushNotification(List 然后接收者就会收到推送消息
You have to just call sendPushNotification(List<String> receiverKeys, String messageTitle, String message) then receiver will get push message
谢谢:)
这篇关于Firebase 云消息传递 REST API Spring的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:Firebase 云消息传递 REST API Spring
基础教程推荐
- RabbitMQ:消息保持“未确认"; 2022-01-01
- Struts2 URL 无法访问 2022-01-01
- Spring AOP错误无法懒惰地为此建议构建thisJoinPoin 2022-09-13
- 如何对 Java Hashmap 中的值求和 2022-01-01
- 使用堆栈算法进行括号/括号匹配 2022-01-01
- 问题http://apache.org/xml/features/xinclude测试日志4j 2 2022-01-01
- 无法复制:“比较方法违反了它的一般约定!" 2022-01-01
- 修改 void 函数的输入参数,然后读取 2022-01-01
- 存储 20 位数字的数据类型 2022-01-01
- REST Web 服务返回 415 - 不支持的媒体类型 2022-01-01
