123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108 |
- <?php
- namespace app\api\controller;
- use app\common\controller\Api;
- use think\Db;
- use DateTime;
- use think\Request;
- class Send extends Api
- {
- protected $noNeedLogin = ['*'];
- protected $noNeedRight = ['*'];
- public function _initialize()
- {
- parent::_initialize();
- $url = $_SERVER['HTTP_HOST'];
- if (strpos($url, 'westkiss') !== false) {
- $this->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;
- }
- }
|