使用API时未收到Firebase消息

4

我正在使用Firebase API,使用php并使用JSON格式发送post数据。响应会给出message_id,但消息无法传送。

当我使用Firebase控制台而不是API使用相同的字段时,它成功地被传送。

我的php代码:

<?php

$json_data = '{ "data": { 
                  "title": "Hey you got a message",
                  "text": "Hi from firebase api"
                },
                "to": "/topics/all",
                "priority": "high"
              }';

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://fcm.googleapis.com/fcm/send');
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
                                            'Content-Type: application/json',
                                            'Authorization:key="Used my server key here"'
                                          ));
curl_setopt($ch, CURLOPT_POSTFIELDS, $json_data);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

$output = curl_exec($ch);
curl_close($ch);
echo $output;
?>

响应:

{"message_id":64666973642901*****}

PS:使用星号隐藏了信息。

更新: 当我将to字段设置为特定令牌时,消息正在传递。 但是,当它设置为topics/all时不起作用。 除了控制台之外,我们还有其他方法可以将其发送到与应用程序相关联的所有人吗?

1个回答

3
我终于找到了答案。我们的应用程序最初不包含任何主题,必须明确创建它们。
在您的应用程序中使用以下方法订阅主题:
FirebaseMessaging.getInstance().subscribeToTopic("TOPIC名称");
因此,要向所有应用程序用户发送,请使用上述方法使每个用户订阅特定主题。我创建了一个名为“all”的主题。
现在将您的JSON HTTP POST请求中的“to”字段设置为“topics/TOPIC名称”,或者对于我的情况为“topics/all”。
注意:当订阅主题时,如果不存在该名称的主题,将自动创建新主题。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接