Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.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_Push Notification_Firebase Cloud Messaging_Firebase Notifications - Fatal编程技术网

Firebase通知-发送到用户段与发送到主题的区别

Firebase通知-发送到用户段与发送到主题的区别,firebase,push-notification,firebase-cloud-messaging,firebase-notifications,Firebase,Push Notification,Firebase Cloud Messaging,Firebase Notifications,我被指派了一项任务,使用Firebase来实现推送通知,但我是一个新手 查看文档: https://firebase.google.com/docs/notifications/android/console-audience 我不知道在什么情况下应该使用send to user segment或send to a topic 有人能给我举个例子,说明什么时候该用其中一个,什么时候该用另一个,并指出区别吗?谢谢你:) 使用用户分段 通常将推送通知发送到特定且有限的一组设备 消息传递几乎是即时

我被指派了一项任务,使用Firebase来实现推送通知,但我是一个新手

查看文档:

https://firebase.google.com/docs/notifications/android/console-audience
我不知道在什么情况下应该使用
send to user segment
send to a topic

有人能给我举个例子,说明什么时候该用其中一个,什么时候该用另一个,并指出区别吗?谢谢你:)

使用用户分段

  • 通常将推送通知发送到特定且有限的一组设备
  • 消息传递几乎是即时的(以我的经验)。此外,我还没有观察到之前GCM的节流情况
使用主题

  • 主题或发布/订阅机制用于相对较大的受众,信息类型为公共。例如天气和新闻
  • 主题有延迟(可能会限制邮件传递)

    • 用户群体

      • 您只能通过向用户段发送通知。(见附件)
      • 仅限于特定目标(从您链接的目标): 选择消息目标。该对话框根据您选择的是应用程序/应用程序版本设备语言,还是受众中的用户,显示进一步的选项以优化目标

      • 正如您链接的文章中已经提到的: 您可以针对预定义的用户群或在Firebase Analytics中创建的自定义用户群

      主题

      • 不一定需要令牌/设备管理
      • 用户数量不限
      • 可以使用FCM API发送到主题
      • 可以通过客户端应用轻松订阅/取消订阅


      依咪浩,如果你想让事情变得简单快捷,那就用主题信息吧

      首先,您必须为每个要向其发送通知的设备保存令牌,我已将它们保存在表调用“FCM_TOKEN”中,然后检索令牌(我使用PDO)并使用while循环发送它们,如下所示:

      while($row=$statement->fetch(PDO::FETCH_BOTH))
                  {
                      $key = $row['Fcm_Token'];
                      $headers = array(
                      'Authorization:key=' .$server_key,
                      'Content-Type:application/json');
                      $fields = array('to'=>$key,
                          'notification'=>array('title'=>$titulo, 'body'=>$mensaje,
                              'click_action'=>'com.example.witch.gtslsac_app_1_TARGET_NOTIFICATION'
                              )); 
                              $playload=json_encode($fields);
                  $curl_session = curl_init();
                  curl_setopt($curl_session, CURLOPT_URL, $path_to_fcm);
                  curl_setopt($curl_session, CURLOPT_POST, true);
                  curl_setopt($curl_session, CURLOPT_HTTPHEADER, $headers);
                  curl_setopt($curl_session, CURLOPT_RETURNTRANSFER, true);
                  curl_setopt($curl_session, CURLOPT_SSL_VERIFYPEER, false);
                  curl_setopt($curl_session, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4);
                  curl_setopt($curl_session, CURLOPT_POSTFIELDS, $playload);
      
                  $result = curl_exec($curl_session);
                  echo $result;   
                  }   
      
      不要忘记关闭会话curl\u close($curl\u session);
      这对我来说很好。

      我总是使用主题消息,因为它节省了很多时间。一旦用户登录,我就向用户订阅他的用户id,并且每当我必须从服务器向该用户发送推送通知时,我只会发布他的用户id的消息。我希望这是完美的rt?@Praveena Topics用法是首选。我认为您的用例没有任何问题。所以我觉得没关系。请注意,主题是公共的,任何其他令牌都可以订阅它。实际上,这是
      主题是公共的,任何其他令牌都可以订阅它。
      非常重要,我错过了它。谢谢