Firebase FCM 推送,出现错误缺少注册 |安卓

Posted

技术标签:

【中文标题】Firebase FCM 推送,出现错误缺少注册 |安卓【英文标题】:Firebase FCM push, getting Error Missing Registration | Android 【发布时间】:2016-12-13 08:13:12 【问题描述】:

我之前看到过这个话题,但我认为这不是同一个场景。

我正在尝试通过 FCM(Firebase 云消息传递)从一台设备(将成为管理设备)向所有其他设备发送推送通知,我完全按照他们的文档进行操作。

我尝试订阅主题或保持简单,但仍然得到相同的错误

缺少注册

 String jsonData = "\"to\":\"/topics/news\",\"notification\":\"title\":\"title\",\"body\":\"text\" ";
                byte[] postData = jsonData.getBytes(Charset.forName("UTF-8"));
                int postDataLength = postData.length;

                URL url = new URL("https://fcm.googleapis.com/fcm/send");
                HttpURLConnection con = (HttpURLConnection) url.openConnection();
                con.setDoInput(true);
                con.setDoOutput(true);
                con.setInstanceFollowRedirects(true);
                con.setRequestMethod("POST");

                con.setRequestProperty("Content-Type","application/json");
                con.setRequestProperty("Authorization","key=AIzaSyB70J***-z34q2_h*******qjZsM5zBIf8Y"); //I've added stars :-) 
                con.setRequestProperty("Content-Type","application/x-www-form-urlencoded");
                con.setRequestProperty("Content-Type","charset=UTF-8");
                con.setRequestProperty("Content-Length",Integer.toString(postDataLength));

                con.setUseCaches(false);

                DataOutputStream wr = new DataOutputStream(con.getOutputStream());
                wr.write(postData);

                InputStream inputStream= con.getInputStream();
                BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));
                String line = null;
                String outPut = "";
                while (((line = reader.readLine()) != null))
                    outPut += line;
                

【问题讨论】:

【参考方案1】:

我正在使用/尝试使用 Postman Web API 客户端应用程序将 FCM 推送通知发送到 FCM URL:https://fcm.googleapis.com/fcm/send

而且我用错了Content-Type: application/x-www-form-urlencoded,所以我改成了

Content-Type:  application/json

这基本上是必需的,因为我们将推送通知作为 JSON 有效负载发送。

干杯!

【讨论】:

这里也一样,我使用的是 'Accept' 而不是 'Content-type'【参考方案2】:

我也遇到了同样的错误,但我的是在服务器端(从 rails 推送到 android),但我的问题是我忘记在标题中指定内容类型(我正在使用 RestClient 发布到 firebase )。希望它可以帮助某人

RestClient.post( "https://fcm.googleapis.com/fcm/send",
             :to => reg_id,:notification => options .to_json,:content_type => :json, :accept => :json,:Authorization => "key=*****"

【讨论】:

【参考方案3】:

感谢您发布您的答案, 无论如何,我的代码现在可以工作了, 我所要做的就是更改内容类型(我刚刚从firebase docs复制了内容类型)并将其发送到订阅主题.... 现在我所有的用户都可以从我的设备收到通知:-)。

【讨论】:

以上是关于Firebase FCM 推送,出现错误缺少注册 |安卓的主要内容,如果未能解决你的问题,请参考以下文章

如何检测真正的 iOS/APNS 推送令牌何时向 Firebase Cloud Messaging (FCM) 注册?

将 Firebase FCM 添加到 reactjs 应用程序

fcm 注册令牌自动存储到 firebase 数据库中

使用 PhoneGap 和 Firebase 云消息传递 (FCM) 的简单推送通知 Android 应用程序

由于应用程序/无效凭据错误,无法发送设备推送通知

为啥不获取 Android Firebase FCM 注册令牌?