oneSignalAppId='6bbd561f-4d8e-4d04-a6c4-dbef1bf99694'; $this->oneSignalRestApiKey='MDMwZThjYWMtOWQ4ZC00YzU3LWIwNjktOGYzNTA2NjA3NTBh'; }else{ $this->oneSignalAppId='b3124d44-7bc7-4965-95dc-0ecb502fdaea'; $this->oneSignalRestApiKey='NzRhMTYyODUtYzczYi00Yjg5LWI3NzktODFmMmY0MGUyODIx'; } } public function test() { $data =input(); $id=$data['ids']; $wheres['id']=$id; $one_push = Db::name('message')->where($wheres)->find(); if (empty($one_push)) { echo '没有查到推送队列'; exit; } $result =$this->sendTest($one_push); } public function sendTest($one_push){ $template_dsc =$one_push['template_dsc']; $title =$one_push['template_name']; $type =$one_push['type']; $url =$one_push['para']; $data['push_para']=$url; $data['push_type']=$type; $data['title']=$title; $data['message_id']=$one_push['id']; $apns_alert['title']=$title; $images['id'] = 'https://message.romandhair.com/uploads/20240307/9d98d28158a102ec6d5ba9caaab05f5b.jpg'; $re=array(); for($i=0;$i<10;$i++){ $dt = new DateTime(); $minute =10*($i+1); $dt->modify("+$minute minute"); $fields = [ 'app_id' => $this->oneSignalAppId, //'included_segments' => ['All'], // 使用 'included_segments' 或 'include_player_ids' //'include_player_ids' => ['player_id1', 'player_id2'], // 如果你要推送给指定的用户 'filters' => [ // 可选,基于特定条件过滤用户 ['field' => 'tag', 'key' => 'SufixUid', 'relation' => '=', 'value' => $i] ], 'contents' => ['en' => $template_dsc], // 消息内容 'data' =>$data, // 可选,额外的自定义数据字段 'content_available'=>true, 'is_ios'=>true, 'ios_badge_type'=>'Increase', 'apns_alert'=>$apns_alert, 'ios_attachments'=> $images, 'send_after'=>$dt, ]; if($one_push['template_image']){ $request = Request::instance(); $domain=$request->domain(); $images['id'] = $domain.$one_push['template_image']; //$images['id'] = 'https://message.romandhair.com/uploads/20240307/9d98d28158a102ec6d5ba9caaab05f5b.jpg'; $fields['ios_attachments']=$images; } $re[] = $this ->sendMessage($fields); } return $re; } public function sendMessage($fields){ $headers = [ 'Content-Type: application/json; charset=utf-8', 'Authorization: Basic ' . $this->oneSignalRestApiKey ]; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, 'https://onesignal.com/api/v1/notifications'); curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); 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); if ($response === FALSE) { die('Curl failed: ' . curl_error($ch)); } curl_close($ch); $responseData = json_decode($response, TRUE); print_r($responseData); return $responseData; } }