Firebase 发送服务器通知 java

Posted

技术标签:

【中文标题】Firebase 发送服务器通知 java【英文标题】:Firebase send server notification java 【发布时间】:2016-12-28 13:43:37 【问题描述】:

所以,我使用Jersey 看到了这个问题。但仍然没有弄清楚如何从我的服务器向订阅主题的用户发送简单的推送通知。 我不明白我的请求有什么问题,因为我正在尝试基于 their examples 构建。

public class OverSLANotifier 

    public static void main(String[] args) throws Exception, FirebaseException 
        String rawData = "\"to\": \"/topics/sla\",\"data\": \"message\": \"This is test push notification!\",";
        String encodedData = URLEncoder.encode(rawData, "UTF-8");

        URL u = new URL("https://fcm.googleapis.com/fcm/send");
        HttpURLConnection conn = (HttpURLConnection) u.openConnection();
        conn.setDoOutput(true);
        conn.setRequestMethod("POST");
        conn.setRequestProperty("Authorization", "key=AI<redacted>VGB6YwPWrinoz1YFBgdKv4Pgm8s");
        conn.setRequestProperty("Content-Type", "application/json");
        OutputStream os = conn.getOutputStream();
        os.write(encodedData.getBytes());
        System.out.println(""+ conn.getResponseCode() + "-->>"+conn.getResponseMessage());
    

我的客户是properly set,如果我从控制台发送,就可以接收。

响应总是:

401-->>未经授权

【问题讨论】:

【参考方案1】:

你的 json 似乎无效:

\"to\": \"/topics/sla\",\"data\": \"message\": \"This is test push notification!\",

\"to\": \"/topics/sla\",\"data\": \"message\": \"This is test push notification!\"

同时查看文档:

无法验证用于发送消息的发件人帐户。 可能的原因有:

HTTP 请求中缺少授权标头或语法无效。 作为密钥发送的项目编号无效。 密钥有效,但 FCM 服务已禁用。 请求来自未列入白名单的服务器 在服务器密钥 IP 中。

Source

PS:它在你会发现here的文档中也是无效的;)

【讨论】:

以上是关于Firebase 发送服务器通知 java的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Firebase 从我的服务器发送 iOS 推送通知?

如何显示随服务器发送的FCM Firebase通知

如何显示与服务器一起发送的 FCM Firebase 通知

Firebase 推送通知如何发送到设备

通过 Firebase 从 Laravel 服务器向 Android 应用发送推送通知

在指定时间段内发送 Firebase 通知