我想从fcm向所有用户发送后台通知。这是我的代码,我面临的唯一问题是必须输入令牌ID。我需要在不定义令牌值的情况下向所有用户发送通知
这是我的代码:
<?php
define('API_ACCESS_KEY','Api');
$fcmUrl = 'https://fcm.googleapis.com/fcm/send';
$token='token';
$notification = [
'title' =>'title',
'body' => 'body of message.',
'icon' =>'myIcon',
'sound' => 'mySound'
];
$extraNotificationData = ["message" => $notification,"moredata" =>'dd'];
$fcmNotification = [
//'registration_ids' => $tokenList, //multple token array
'to' => $token, //single token
'notification' => $notification,
'data' => $extraNotificationData
];
$headers = [
'Authorization: key=' . API_ACCESS_KEY,
'Content-Type: application/json'
];
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$fcmUrl);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($fcmNotification));
$result = curl_exec($ch);
curl_close($ch);
echo $result;
?>
它可以正常工作并成功发送通知,但是如何向所有人发送通知?
答案 0 :(得分:1)
似乎没有将通知发送到所有设备的功能。
但是,使用主题可以解决您的问题。为此,您需要在应用启动过程中为所有用户订阅特定主题。
FirebaseMessaging.getInstance().subscribeToTopic("your_topic");
然后,您可以将通知发送到该主题,以便将通知发送给所有用户。
'to' => '/topics/your_topic', // using topic instead of token
答案 1 :(得分:0)
如果我收到您的问题。
您需要订阅Topic
,然后才需要使用该主题。
订阅它的用户将收到通知。
文档:-
基于发布/订阅模型,FCM主题消息传递使您可以将消息发送到已选择加入特定主题的多个设备。您可以根据需要编写主题消息,然后FCM处理路由并将消息可靠地传递到正确的设备。
https://firebase.google.com/docs/cloud-messaging/android/topic-messaging
答案 2 :(得分:0)
有两种向多个用户发送通知的方法。
创建一个包含所有用户的主题,并将推送发送到该主题。 示例:https://firebase.google.com/docs/cloud-messaging/android/send-multiple
发送通知给应用程序包ID。但这甚至会将通知发送给未经身份验证的用户。