我想要一个代码将有关特定主题的通知从一台设备发送到多个设备,并且我想在订阅该主题的设备上显示该通知?我将使用Firestore存储数据和存储令牌,并使用Firebase消息发送通知
答案 0 :(得分:3)
我希望这对新开发人员有所帮助。
import 'package:http/http.dart' as http;
Future<void> sendNotification(subject,title) async{
final postUrl = 'https://fcm.googleapis.com/fcm/send';
String toParams = "/topics/"+'yourTopicName';
final data = {
"notification": {"body":subject, "title":title},
"priority": "high",
"data": {
"click_action": "FLUTTER_NOTIFICATION_CLICK",
"id": "1",
"status": "done",
"sound": 'default',
"screen": "yourTopicName",
},
"to": "${toParams}"};
final headers = {
'content-type': 'application/json',
'Authorization': 'key=key'
};
final response = await http.post(postUrl,
body: json.encode(data),
encoding: Encoding.getByName('utf-8'),
headers: headers);
if (response.statusCode == 200) {
// on success do
print("true");
} else {
// on failure do
print("false");
}
}
FirebaseMessaging _firebaseMessaging = FirebaseMessaging();
_firebaseMessaging.subscribeToTopic("yourTopicName");
答案 1 :(得分:2)
您可以使用firebase_messaging
和FirebaseMessaging.subscribeToTopic
订阅主题:
FirebaseMessaging().subcribeToTopic('topic_name');
您可以使用Firebase控制台或某些后端代码(例如,在Cloud Functions中。
答案 2 :(得分:1)
向发送消息要求您调用Firebase Cloud Messaging API并指定FCM服务器密钥。顾名思义,此密钥只能在可信任的环境中使用,例如开发机器,您控制的服务器或诸如Cloud Functions之类的环境。之所以需要这样做,是因为拥有FCM服务器密钥的任何人都可以向您应用的所有用户发送消息。
最简单的入门方法是简单地运行curl
命令或类似的命令,调用legacy FCM REST API。在此处查看示例:How can I send a Firebase Cloud Messaging notification without use the Firebase Console?要发送给主题,请确保to
的值类似于"/topics/your_topic"
。
要获得更高的生产水平,您可能需要引入服务器或使用Cloud Functions。然后,发送消息将成为一个多步骤过程,例如:
有关此示例,请参阅此folder in the functions-samples
repo。
另请参阅:
答案 3 :(得分:0)
根据firebase_messaging readme页,在上一节中,您无法使用抖动的firebase_messaging
库发送Sending Message来发送云消息。
要为用户订阅主题:
FirebaseMessaging _firebaseMessaging = FirebaseMessaging();
_firebaseMessaging.subscribeToTopic("MyTopic");
这将使该设备订阅主题MyTopic
。
您还可以通过以下方式退订:
_firebaseMessaging.unsubscribeFromTopic("MyTopic");