Firebase通知 - 发送到用户细分与发送到主题差异

时间:2016-11-29 00:24:59

标签: firebase push-notification firebase-cloud-messaging firebase-notifications

我被分配了一个使用Firebase来实现推送通知的任务,但我有点新的。

查看文档:

https://firebase.google.com/docs/notifications/android/console-audience

我不知道在什么情况下我应该使用send to user segmentsend to a topic

有人可以给我一些例子,何时使用其中一个并指出差异?提前谢谢:)

3 个答案:

答案 0 :(得分:6)

用户细分

  • 您只能通过Firebase Console向用户细分发送通知。 (见here)。
  • 仅限于特定目标(来自您关联的docs):
      

    选择邮件目标。该对话框根据您是选择应用程序/应用程序版本设备语言还是受众中的用户显示进一步优化目标的选项。

  • 正如您所链接的doc中已经提到的那样:
      

    您可以定位预定义的用户细分或在Firebase Analytics中创建的自定义audiences

<强>主题

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

恕我直言,如果你想让事情变得简单快捷,请使用Topic Messaging。

答案 1 :(得分:3)

  

使用用户分段

  • 通常将推送通知发送到特定且有限的一组设备。
  • 消息传递几乎是即时的(根据我的经验)。此外,我没有像GCM早些时候那样观察到节流。
  

使用主题

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

答案 2 :(得分:0)

首先,您必须为要发送通知的每个设备保存令牌,我已将其保存在桌面呼叫中&#34; FCM_TOKEN&#34;,然后检索令牌(我&#39; m使用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_close($ curl_session); 这对我来说很好。

相关问题