OneSignal 推送通知发送给所有用户而不是一个玩家
Posted
技术标签:
【中文标题】OneSignal 推送通知发送给所有用户而不是一个玩家【英文标题】:OneSignal push notification sending to all user instead of one player 【发布时间】:2020-12-07 08:48:07 【问题描述】:我正在尝试通过存储在我的数据库中的 player_id 向一台设备发送推送通知。 但是它会尝试继续发送给所有用户 我不知道我的代码有什么问题
$fields = array(
'app_id' => 'XXXXXXXXXXXXXXXXXXXX',
'include_player_ids ' => $player_ids,
'included_segments' => array(
'All'
),
'data' => $data,
'headings' => $title,
'contents' => $content,
'web_buttons' => []
);
$fields = json_encode($fields);
if($player_ids)
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://onesignal.com/api/v1/notifications");
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Content-Type: application/json; charset=utf-8',
'Authorization: Basic XXXXXXXXXXXXXXXXXXXXXXXXXXXXX'
));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_HEADER, FALSE);
curl_setopt($ch, CURLOPT_POST, TRUE);
curl_setopt($ch, CURLOPT_POSTFIELDS, $fields);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
$response = curl_exec($ch);
curl_close($ch);
【问题讨论】:
【参考方案1】:只需删除'included_segments' => array('All'),
如果您同时填写included_segments
和include_player_ids
,您将发送给所有选定的玩家ID 以及所有选定的段。 Segment All
表示所有订阅者。
你可以在official documentation阅读其他选项
【讨论】:
它给了我一个错误信息"errors":["You must include which players, segments, or tags you wish to send this notification to."]
【参考方案2】:
我需要删除 included_segments
和 web_buttons
他们俩都不仅仅是included_segments
,当我尝试删除included_segments
时,它给了我"errors":["You must include which players, segments, or tags you wish to send this notification to."]
的错误
我也不需要'Authorization: Basic XXXXXXXXXXXXXXXXXXXXXXXXXXXXX'
。
【讨论】:
以上是关于OneSignal 推送通知发送给所有用户而不是一个玩家的主要内容,如果未能解决你的问题,请参考以下文章
根据 OneSignal 的用户数据库直接发送 Web 推送 (Chrome - GCM/FCM) 通知
如何在没有 OneSignal Dashboard 的情况下发送推送通知?