Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Firebase 如何向主题发送通知_Firebase_Flutter_Dart_Firebase Cloud Messaging - Fatal编程技术网

Firebase 如何向主题发送通知

Firebase 如何向主题发送通知,firebase,flutter,dart,firebase-cloud-messaging,Firebase,Flutter,Dart,Firebase Cloud Messaging,我想要一个代码来从一个设备向多个设备发送关于特定主题的通知,我想要在订阅该主题的设备上显示该通知?我将使用firestore存储数据和令牌,还将使用Firebase消息发送通知您可以使用和订阅主题: FirebaseMessaging().subcribetopic('topic_name'); 您可以使用Firebase控制台或某些后端代码(例如,在云函数中)向主题发送通知 根据第页,在最后一节中,您不能使用Flatterfirebase\u messaging库发送云消息 要向用户订阅主

我想要一个代码来从一个设备向多个设备发送关于特定主题的通知,我想要在订阅该主题的设备上显示该通知?我将使用firestore存储数据和令牌,还将使用Firebase消息发送通知

您可以使用和订阅主题:

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”

对于更高的生产级别,您可能需要引入服务器或使用云功能。然后,发送消息将成为一个多步骤的过程,如:

  • 希望发送消息、将消息写入数据库或调用API的客户端
  • 此写入操作触发服务器或云功能,以验证请求(确定此用户有权发送此消息)
  • 然后是服务器端代码
  • 关于这方面的一个例子,请参见此

    另见:

    • 我的旧博文
    这是我发送特定主题通知的代码 我希望这对新开发人员有所帮助


    我想知道如果用户卸载应用程序并重新安装,会发生什么情况,他将丢失所有订阅的主题?你还要再订阅所有的吗?谢谢检查。当用户订阅时,这意味着其应用实例特有的注册令牌将链接到主题,并且在文档中,您将看到,如果卸载并重新安装应用程序,此注册令牌将发生更改。因此,如果令牌发生更改,我将不得不再次注册这些人,对吗?是的,您会这样做。这就好像他们登录并删除了应用程序一样,用户在重新下载应用程序时必须再次登录。
    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");