Send.php 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. <?php
  2. namespace app\api\controller;
  3. use app\common\controller\Api;
  4. use think\Db;
  5. use DateTime;
  6. use think\Request;
  7. class Send extends Api
  8. {
  9. protected $noNeedLogin = ['*'];
  10. protected $noNeedRight = ['*'];
  11. public function _initialize()
  12. {
  13. parent::_initialize();
  14. $url = $_SERVER['HTTP_HOST'];
  15. if (strpos($url, 'westkiss') !== false) {
  16. $this->oneSignalAppId='6bbd561f-4d8e-4d04-a6c4-dbef1bf99694';
  17. $this->oneSignalRestApiKey='MDMwZThjYWMtOWQ4ZC00YzU3LWIwNjktOGYzNTA2NjA3NTBh';
  18. }else{
  19. $this->oneSignalAppId='b3124d44-7bc7-4965-95dc-0ecb502fdaea';
  20. $this->oneSignalRestApiKey='NzRhMTYyODUtYzczYi00Yjg5LWI3NzktODFmMmY0MGUyODIx';
  21. }
  22. }
  23. public function test()
  24. {
  25. $data =input();
  26. $id=$data['ids'];
  27. $wheres['id']=$id;
  28. $one_push = Db::name('message')->where($wheres)->find();
  29. if (empty($one_push)) {
  30. echo '没有查到推送队列';
  31. exit;
  32. }
  33. $result =$this->sendTest($one_push);
  34. }
  35. public function sendTest($one_push){
  36. $template_dsc =$one_push['template_dsc'];
  37. $title =$one_push['template_name'];
  38. $type =$one_push['type'];
  39. $url =$one_push['para'];
  40. $data['push_para']=$url;
  41. $data['push_type']=$type;
  42. $data['title']=$title;
  43. $data['message_id']=$one_push['id'];
  44. $apns_alert['title']=$title;
  45. $images['id'] = 'https://message.romandhair.com/uploads/20240307/9d98d28158a102ec6d5ba9caaab05f5b.jpg';
  46. $re=array();
  47. for($i=0;$i<10;$i++){
  48. $dt = new DateTime();
  49. $minute =10*($i+1);
  50. $dt->modify("+$minute minute");
  51. $fields = [
  52. 'app_id' => $this->oneSignalAppId,
  53. //'included_segments' => ['All'], // 使用 'included_segments' 或 'include_player_ids'
  54. //'include_player_ids' => ['player_id1', 'player_id2'], // 如果你要推送给指定的用户
  55. 'filters' => [ // 可选,基于特定条件过滤用户
  56. ['field' => 'tag', 'key' => 'SufixUid', 'relation' => '=', 'value' => $i]
  57. ],
  58. 'contents' => ['en' => $template_dsc], // 消息内容
  59. 'data' =>$data, // 可选,额外的自定义数据字段
  60. 'content_available'=>true,
  61. 'is_ios'=>true,
  62. 'ios_badge_type'=>'Increase',
  63. 'apns_alert'=>$apns_alert,
  64. 'ios_attachments'=> $images,
  65. 'send_after'=>$dt,
  66. ];
  67. if($one_push['template_image']){
  68. $request = Request::instance();
  69. $domain=$request->domain();
  70. $images['id'] = $domain.$one_push['template_image'];
  71. //$images['id'] = 'https://message.romandhair.com/uploads/20240307/9d98d28158a102ec6d5ba9caaab05f5b.jpg';
  72. $fields['ios_attachments']=$images;
  73. }
  74. $re[] = $this ->sendMessage($fields);
  75. }
  76. return $re;
  77. }
  78. public function sendMessage($fields){
  79. $headers = [
  80. 'Content-Type: application/json; charset=utf-8',
  81. 'Authorization: Basic ' . $this->oneSignalRestApiKey
  82. ];
  83. $ch = curl_init();
  84. curl_setopt($ch, CURLOPT_URL, 'https://onesignal.com/api/v1/notifications');
  85. curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
  86. curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
  87. curl_setopt($ch, CURLOPT_HEADER, FALSE);
  88. curl_setopt($ch, CURLOPT_POST, TRUE);
  89. curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($fields));
  90. curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
  91. $response = curl_exec($ch);
  92. if ($response === FALSE) {
  93. die('Curl failed: ' . curl_error($ch));
  94. }
  95. curl_close($ch);
  96. $responseData = json_decode($response, TRUE);
  97. print_r($responseData);
  98. return $responseData;
  99. }
  100. }