首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用OneSignal接口和PHP在推送通知中发送“附加数据”

问如何使用OneSignal接口和PHP在推送通知中发送“附加数据”
EN

Stack Overflow用户
提问于 2019-09-04 20:33:10
回答 1查看 1.8K关注 0票数 2

当从OneSignals控制面板发送推送通知时,我可以在推送消息中包含“附加数据”(键和值)。

我正在尝试创建一个允许我通过OneSignal从PHP发送推送的PHP脚本,但在OneSignal的API文档中找不到任何有关其他数据的内容。

OneSignal文档的URL:https://documentation.onesignal.com/reference

脚本按原样工作,但我需要包括其他数据。

谁能给我指个方向?

代码语言:javascript
复制
function sendPush($oneSignalConfig) {
if (sizeof($oneSignalConfig)) {  
  $notifTitle = html_entity_decode($oneSignalConfig['title'],ENT_QUOTES, 'UTF-8');
  $notifContent = html_entity_decode($oneSignalConfig['brief'],ENT_QUOTES, 'UTF-8');

  $includedSegments = array('All');      

  $fields = array(
    'app_id' => $oneSignalConfig['app_id'],
    'headings' => array("en" => $notifTitle),
    'included_segments' => $includedSegments,
    'isAnyWeb' => true,
    'url' => $oneSignalConfig['url'],
    'contents' => array("en" => $notifContent)
  );

  $thumbnailUrl = $oneSignalConfig['image_url'];

  if (!empty($thumbnailUrl)) {
      $fields['chrome_web_image'] = $thumbnailUrl;
  }

  $logoUrl = $oneSignalConfig['logo_url'];

  if (!empty($logoUrl)) {
      $fields['chrome_web_icon'] = $logoUrl;
  }

  $ch = curl_init();
  curl_setopt($ch, CURLOPT_URL, "https://onesignal.com/api/v1/notifications");
  curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json',
                         'Authorization: Basic ' . $oneSignalConfig['app_rest_api_key']));
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
  curl_setopt($ch, CURLOPT_HEADER, FALSE);
  curl_setopt($ch, CURLOPT_POST, TRUE);
  curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($fields));
  curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);

  $response = curl_exec($ch);
  curl_close($ch);

  return $response;
}

return null;
} // EO_Fn 


if(isset($_POST['send'])) {

$oneSignalConfig = array(
'app_id' => 'xxxxx', //APP ID (ONESIGNAL)
'app_rest_api_key' => 'xxxxx', //REST API KEY
'title' => $_POST['tittel'], //TITLE
'brief' => $_POST['beskjed'], //BESKJED
'url' => $_POST['side'], //CONTENT URL
'image_url' => 'xxxx', //BILDE URL
'logo_url' => 'xxxx', // LOGO URL
);

$behandle = sendPush($oneSignalConfig);
if($behandle) {
    $array = json_decode($behandle, true);
    $melding = $array['recipients']." personer har mottatt push varslet.";
}

}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-09-06 18:39:05

找到了。:)

在$oneSignalConfig数组(代码底部)中,我添加了以下内容:

代码语言:javascript
复制
'key' => 'some value here',
'value' => 'something here',

在$fields数组的函数中,我添加了以下内容:

代码语言:javascript
复制
'data' => array($oneSignalConfig['key'] => $oneSignalConfig['value'])

这就起到了作用。键和值现在随推送通知一起发送。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57788494

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档