亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Onesignal include_external_user_ids 在發送推送通知 API

Onesignal include_external_user_ids 在發送推送通知 API

PHP
守候你守候我 2023-04-15 20:54:52
有人請幫助我使用存儲在 onesignal 變量中的多個玩家 ID。我有一個名為 $onesigId 的變量,它包含以下值字符串:“2”、“3”、“77”、“99”。在我的 onesignal 發送函數中,我將它設為這樣的數組: $onesigId = array($onesigId); 但是當我發送通知時,結果顯示如下:JSON sent: {"app_id":"my_app_id","headings":{"en":"Amazing Features"},"include_external_user_ids":["\"2\",\"3\",\"77\",\"99\""],"data":{"foo":"bar"},"url":"https:\/\/testurl.com\/help","contents":{"en":"My testing message"}} JSON received: {"allresponses":"{\"id\":\"\",\"recipients\":0,\"errors\":[\"All included players are not subscribed\"]}"}下面是我的代碼: $userids = array();        $tu = 2;        $on=1;        $sql = $db -> prepare('SELECT id FROM users WHERE regTarget=? AND is_active=?');            $sql -> bind_param('ii', $tu, $on);            $sql -> execute();            $result = $sql->get_result();            while($row = mysqli_fetch_assoc($result) ){                $userids[]= $row['id'];                }                $str = '"' . implode ( '","', $userids ) . '"';              //echo $str;                //SEND ONESIGNAL PUSH                $onesigTitle = "$subject";                $onesigMessage  = "$message.";                $onesigId = "$str";                $onesignalUrl = "$link";function sendMessage(){        global $onesigTitle;        global $onesigMessage;        global $onesignalUrl;        global $onesigId;        $onesigId = array($onesigId);        $content = array(            "en" => $onesigMessage            );        $fields = array(            'app_id' => "my_app_id",            'headings' => array("en" => $onesigTitle),            'include_external_user_ids' => $onesigId,            'data' => array("foo" => "bar"),            'url' => $onesignalUrl,            'contents' => $content        );    }請注意,所有其他變量都按預期工作,只有 $onesigId 行為不當。當我只添加一個 id 時,它發送成功。我想知道為什么 array("2","3","77", "99") 變成了 "\"2\",\"3\",\"77\",\"99\ “”在響應中以及如何修復它。對你的幫助表示感謝。
查看完整描述

1 回答

?
動漫人物

TA貢獻1815條經驗 獲得超10個贊

我終于通過使用 csv_string_to_array() 將字符串 $str 轉換為數組然后將其分配給 onesigId 使其工作。現在一切看起來都很好。


$userids = array();

$tu = 2;

$on=1;

$sql = $db -> prepare('SELECT id FROM users WHERE regTarget=? AND is_active=?');

    $sql -> bind_param('ii', $tu, $on);

    $sql -> execute();

    $result = $sql->get_result();


    while($row = mysqli_fetch_assoc($result) ){

        $userids[]= $row['id'];

        }



        $str = '"' . implode ( '","', $userids ) . '"';


         //This is what I used in converting the string to array

         function csv_string_to_array($str){

          $expr="/,(?=(?:[^\"]*\"[^\"]*\")*(?![^\"]*\"))/";

          $results=preg_split($expr,trim($str));

          return preg_replace("/^\"(.*)\"$/","$1",$results);

          }


      //echo $str;


        //SEND ONESIGNAL PUSH

        $onesigTitle = "$subject";

        $onesigMessage  = "$message.";


        //HERE AM ASSIGNING THE ARRAY TO onesigId

        $onesigId = csv_string_to_array($str);


        $onesignalUrl = "$link";


function sendMessage(){

global $onesigTitle;

global $onesigMessage;

global $onesignalUrl;

global $onesigId;


$content = array(

    "en" => $onesigMessage

    );


$fields = array(

    'app_id' => "my_app_id",

    'headings' => array("en" => $onesigTitle),

    'include_external_user_ids' => $onesigId,

    'data' => array("foo" => "bar"),

    'url' => $onesignalUrl,

    'contents' => $content

);



$fields = json_encode($fields);


print("\nJSON sent:\n");

print($fields);


$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 MY KEY HERE'));

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);


return $response;



}


$response = sendMessage();

$return["allresponses"] = $response;

$return = json_encode( $return);


print("\n\nJSON received:\n");

print($return);

print("\n");



查看完整回答
反對 回復 2023-04-15
  • 1 回答
  • 0 關注
  • 193 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號