当前位置: 首页 > 知识库问答 >
问题:

Firebase云消息传递RESTAPI spring

井斌斌
2023-03-14

我必须在SpringJava中为多层架构制作一个RESTAPI,其中需要为Firebase云消息传递(FCM)构建DAO、控制器和服务管理器,以向android应用程序发送推送通知消息,但我无法在Java中配置服务器以向设备发送通知。我怎么能?

共有1个答案

太叔乐家
2023-03-14

以下是实现这一目标的方法:

步骤1:在firebase上创建项目并生成服务器密钥。

步骤2:为fcm服务器生成一个json对象。这里消息可以包含数据对象和通知对象。它还必须有接收器fcm ID。示例json是这样的:

{
    "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服务器通信:

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("\nCalling fcm Server >>>>>>>");
            String response = callToFcmServer(msg, key);
            System.out.println("Got response from fcm Server : " + response + "\n\n");
        });

    }

    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(列表

谢谢:)

 类似资料:
  • FCM服务未向我的iOS应用程序发送消息。 > App CAN成功接收APNs令牌和实例ID令牌 App CAN使用推送通知实用程序利用. p8令牌在后台成功接收来自APN的推送 #2中使用的相同APNs密钥上传到Firebase控制台 应用程序无法接收Firebase控制台中Notification Composer发送的消息,也无法使用CURL请求接收消息。 应用程序在通过FCM发送时不显示任

  • 我正试图将FCM与SNS整合。我在这个答案中读到设置应该与GCM相同。我设法创建了一个FCM应用程序,可以向android设备发送消息。当应用程序在后台时,设备在托盘中接收通知,或当应用程序在前台时打印接收的消息。我正试图整合它现在到SNS,但我似乎不能使它工作,没有任何错误信息。

  • 我试图从C#中的服务器发送推送通知,我使用了正确的注册令牌和API密钥,但仍然得到以下响应。 我按照这个网址来实现这个解决方案通过C#使用FCM(Firebase云消息传递)发送推送到Android 目前,我正在尝试向单个设备发送通知,但也希望同时向多个设备发送通知,我使用了url中给出的,但它不起作用。如果我必须同时向多个设备发送通知,我该怎么办? 这是我的密码

  • 我正在尝试使用FireBase云消息传递。我正在接收令牌,但它没有从控制台收到任何通知。这是我的舱单: 我的代码与示例中的代码几乎相同: 我在这里检查了一个问题,Firebase云消息通知未被设备接收,但仍然无法工作。

  • 我的应用程序结构有点乱,但我必须先添加这个补丁,然后我会重新构建整个逻辑。问题是我首先检查是否有Firebase用户,然后如果有,我使用StreamBuilder从FiRecovery获取当前用户配置文件,然后我有_firebaseMessaging.configure方法,因为onLaunch和onResume我使用这个回调: 因为我需要将用户发送到这个屏幕,在那里他从Firebase获取消息。

  • 我想使用谷歌的Firebase为网络构建一个消息应用程序。在这个应用程序中,用户应该向/从其他用户发送和接收消息。我检查了谷歌的Firebase网站,但我迷路了。你能告诉我从哪里开始吗?你能给我看任何与Firebase网络消息相关的教程或类似的东西吗?我欢迎任何建议。谢谢。