Firebase 如何向主题发送通知
我想要一个代码来从一个设备向多个设备发送关于特定主题的通知,我想要在订阅该主题的设备上显示该通知?我将使用firestore存储数据和令牌,还将使用Firebase消息发送通知您可以使用和订阅主题:Firebase 如何向主题发送通知,firebase,flutter,dart,firebase-cloud-messaging,Firebase,Flutter,Dart,Firebase Cloud Messaging,我想要一个代码来从一个设备向多个设备发送关于特定主题的通知,我想要在订阅该主题的设备上显示该通知?我将使用firestore存储数据和令牌,还将使用Firebase消息发送通知您可以使用和订阅主题: FirebaseMessaging().subcribetopic('topic_name'); 您可以使用Firebase控制台或某些后端代码(例如,在云函数中)向主题发送通知 根据第页,在最后一节中,您不能使用Flatterfirebase\u messaging库发送云消息 要向用户订阅主
FirebaseMessaging().subcribetopic('topic_name');
您可以使用Firebase控制台或某些后端代码(例如,在云函数中)向主题发送通知 根据第页,在最后一节中,您不能使用Flatter
firebase\u messaging
库发送云消息
要向用户订阅主题,请执行以下操作:
FirebaseMessaging _firebaseMessaging = FirebaseMessaging();
_firebaseMessaging.subscribeToTopic("MyTopic");
这将为该设备订阅主题MyTopic
您也可以通过以下方式取消订阅:
_firebaseMessaging.unsubscribeFromTopic("MyTopic");
向设备发送消息需要调用Firebase云消息API并指定FCM服务器密钥。顾名思义,此密钥只应在受信任的环境中使用,例如您的开发机器、您控制的服务器或类似云功能的环境。之所以需要这样做,是因为拥有FCM服务器密钥的任何人都可以向应用程序的所有用户发送消息 最简单的入门方法是简单地运行
curl
命令或类似命令,调用。请参见此处的示例:要发送到主题,请确保To
值类似于“/topics/your_topic”
对于更高的生产级别,您可能需要引入服务器或使用云功能。然后,发送消息将成为一个多步骤的过程,如:
- 我的旧博文
我想知道如果用户卸载应用程序并重新安装,会发生什么情况,他将丢失所有订阅的主题?你还要再订阅所有的吗?谢谢检查。当用户订阅时,这意味着其应用实例特有的注册令牌将链接到主题,并且在文档中,您将看到,如果卸载并重新安装应用程序,此注册令牌将发生更改。因此,如果令牌发生更改,我将不得不再次注册这些人,对吗?是的,您会这样做。这就好像他们登录并删除了应用程序一样,用户在重新下载应用程序时必须再次登录。
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");