如何向主题发送通知

时间:2019-09-08 11:29:30

标签: firebase flutter dart firebase-cloud-messaging

我想要一个代码将有关特定主题的通知从一台设备发送到多个设备,并且我想在订阅该主题的设备上显示该通知?我将使用Firestore存储数据和存储令牌,并使用Firebase消息发送通知

4 个答案:

答案 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_messagingFirebaseMessaging.subscribeToTopic 订阅主题

FirebaseMessaging().subcribeToTopic('topic_name');

您可以使用Firebase控制台或某些后端代码(例如,在Cloud Functions中。

Learn more.

答案 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。然后,发送消息将成为一个多步骤过程,例如:

  1. 想要发送消息,将该消息写入数据库或调用API的客户端。
  2. 此写操作将触发您的服务器或Cloud Functions,后者将验证请求(确定该用户有权发送此消息)。
  3. 然后是服务器端代码calls the Firebase Admin API to send a message to a topic

有关此示例,请参阅此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");