Example #1
0
 /**
  * android别名发送
  * @param $title string 消息内容
  * @param $alias array 别名数组
  */
 public function sendByAlias($title, $alias)
 {
     $this->setPlatform = M\platform('android');
     $this->setAudience = M\alias($alias);
     $this->setNotification = M\notification($title);
     return $this->send();
 }
Example #2
0
 public function push()
 {
     $app_key = $this->settings['jpushkey'];
     $master_secret = $this->settings['jpushsecret'];
     //'46867b6b0c46b34ee6848b56';
     $client = new JPushClient($app_key, $master_secret);
     $device_token = $this->input['device_token'];
     if (!$device_token) {
         $this->errorOutput('NO_DEVICE_TOKEN');
     }
     $message = $this->input['message'];
     if (!$message) {
         $this->errorOutput('NO_MESSAGE');
     }
     $module = $this->input['module'];
     $content_id = $this->input['content_id'];
     if ($module) {
         $options = array($module => $content_id);
     } else {
         $options = array();
     }
     $result = $client->push()->setPlatform(M\Platform('android'))->setAudience(M\audience(M\alias(array($device_token))))->setNotification(M\notification($message, M\android($message, '', 1, $options)))->send();
     $this->addItem_withkey('result', $result->isOk ? 1 : 0);
     $this->output();
 }
Example #3
0
 /**
  * Execute the job.
  *
  * @param JPushClient $client
  */
 public function handle(JPushClient $client)
 {
     $error = '';
     try {
         if ($this->download($this->url)) {
             $package = Package::createFromFile($this->tmpFile, basename($this->url), $this->user->id);
             $result = Push::send($this->devices, $package, $this->user->id);
             try {
                 if ($this->devices->count() > 1) {
                     $msg = "已在向{$this->devices->count()}台设备发出推送...";
                 } else {
                     $msg = "已向{$this->devices->first()->alias}发出推送...";
                 }
                 Log::info($msg);
             } catch (\Exception $e) {
                 Log::error('[PushApk Job]推送失败' . $e->getMessage());
                 return;
             }
         } else {
             $error = trans('errors.download_failed');
             Log::error('[PushApk Job]下载文件失败: ' . $this->url);
         }
     } catch (Exception $e) {
         $error = $e->getMessage();
         Log::error('[PushApk]' . $e->getMessage() . '  ' . $this->url);
     }
     $installIds = $this->devices->pluck('install_id')->toArray();
     try {
         $result = $client->push()->setPlatform(M\all)->setAudience(M\registration_id($installIds))->setNotification(M\notification('出现错误,请检查URL是否正确'))->send();
     } catch (Exception $ignored) {
     }
 }
Example #4
0
 /**
  * 推送消息到app
  * @param $content
  * @param $title
  * @param $extras
  */
 private function pushMessage($content, $title, $extras)
 {
     $pushConf = C('push');
     $br = '<br/>';
     $app_key = $pushConf['app_key'];
     $master_secret = $pushConf['master_secret'];
     $client = new JPushClient($app_key, $master_secret);
     try {
         $result = $client->push()->setPlatform(M\all)->setAudience(M\all)->setNotification(M\notification(M\android($content, $title, 3, $extras)))->send();
         echo 'Push Success.' . $br;
         echo 'sendno : ' . $result->sendno . $br;
         echo 'msg_id : ' . $result->msg_id . $br;
         echo 'Response JSON : ' . $result->json . $br;
     } catch (APIRequestException $e) {
         echo 'Push Fail.' . $br;
         echo 'Http Code : ' . $e->httpCode . $br;
         echo 'code : ' . $e->code . $br;
         echo 'message : ' . $e->message . $br;
         echo 'Response JSON : ' . $e->json . $br;
         echo 'rateLimitLimit : ' . $e->rateLimitLimit . $br;
         echo 'rateLimitRemaining : ' . $e->rateLimitRemaining . $br;
         echo 'rateLimitReset : ' . $e->rateLimitReset . $br;
     } catch (APIConnectionException $e) {
         echo 'Push Fail.' . $br;
         echo 'message' . $e->getMessage() . $br;
     }
 }
Example #5
0
 function send($content)
 {
     $br = '<br/>';
     $client = new JPushClient($this->_app_key, $this->_master_secret);
     $result = $client->push()->setPlatform(JPushModel\all)->setAudience(JPushModel\all)->setNotification(JPushModel\notification($content))->send();
     return $result;
 }
Example #6
0
 /**
 * 全平台简易发送
     测试用例:list($status,$data)=$Notification->easy('hello feng!');
 */
 public function easy($title)
 {
     $this->setPlatform = M\all;
     $this->setAudience = M\all;
     $this->setNotification = M\notification($title);
     return $this->send();
 }
Example #7
0
 /**
  * [push 根据标签推送]
  * @param  [type] $tag 		[标签]
  * @param  [type] $msg 		[信息数组]
  * @return [type]           [description]
  */
 public function push_by_tag($tag, $msg)
 {
     try {
         $client = new JPushClient($this->app_key, $this->master_secret);
         $result = $client->push()->setPlatform(M\all)->setAudience(M\audience(M\tag($tag)))->setNotification(M\notification($msg))->send();
     } catch (APIRequestException $e) {
     } catch (APIConnectionException $e) {
     }
 }
Example #8
0
 /**
  *
  * 根据Tag推送消息
  * @param $content
  * @param $title
  * @param $extras
  * @param $tags
  */
 public function pushMessageByTags($content, $title, $extras, $tags)
 {
     $client = new JPushClient($this->app_key, $this->master_secret);
     try {
         $result = $client->push()->setPlatform(M\all)->setAudience(M\audience(M\tag($tags)))->setNotification(M\notification(M\android($content, $title, 3, $extras)))->send();
     } catch (APIRequestException $e) {
     } catch (APIConnectionException $e) {
     }
 }
 /**
  * 推送 push_message
  */
 public function push_message_registration($ids = array(), $notification = array())
 {
     if ($ids && $notification) {
         vendor('jpush.autoload');
         $app_key = C('API_PUSH_JPUSH.key');
         $master_secret = C('API_PUSH_JPUSH.secret');
         $client = new JPushClient($app_key, $master_secret);
         $client->push()->setPlatform(M\all)->setAudience(M\registration_id($ids))->setNotification(M\notification($notification['title'], M\android($notification['title'], $notification['title'], NULL, $notification['extras']), M\ios($notification['title'], 'default', 1)))->setOptions(M\options(NULL, NULL, NULL, true))->send();
     }
 }
Example #10
0
 function pushAll($msg, $title = null, $arr = null)
 {
     try {
         $jpushClient = $this->client;
         $result = $jpushClient->push()->setPlatform(M\all)->setAudience(M\all)->setNotification(M\notification(M\android($msg, $title, null, $arr), M\ios($msg, 'default', '+1', true, $arr)))->send();
         return array('status' => true, 'msg' => '发送成功!');
     } catch (APIConnectionException $e) {
         return array('status' => false, 'msg' => '推送失败!');
     } catch (APIRequestException $e) {
         return array('status' => false, 'msg' => $e->getMessage());
     } catch (InvalidArgumentException $e) {
         return array('status' => false, 'msg' => '推送失败!');
     }
 }
Example #11
0
 public static function pushMessage($uids, $alert, array $extras = null)
 {
     $config = self::getConfig();
     $app_key = $config['app_key'];
     $master_secret = $config['master_secret'];
     if (!$app_key || !$master_secret) {
         return;
     }
     $client = new JPushClient($app_key, $master_secret);
     try {
         $uids = array_values(array_map('strval', $uids));
         $audience = M\audience(M\alias($uids));
         $notification = M\notification($alert, M\android($alert, null, null, $extras), M\ios($alert, null, null, null, $extras));
         $result = $client->push()->setPlatform(M\all)->setAudience($audience)->setNotification($notification)->send();
         //echo 'Push Success.' . PHP_EOL;
         //echo 'sendno : ' . $result->sendno . PHP_EOL;
         //echo 'msg_id : ' .$result->msg_id . PHP_EOL;
         //echo 'Response JSON : ' . $result->json . PHP_EOL;
     } catch (\Exception $e) {
         echo 'Push Fail: ' . $e->getMessage() . PHP_EOL;
     }
 }
Example #12
0
 public function easy_push($id, $content = 'hello')
 {
     $br = '<br/>';
     $spilt = ' - ';
     $master_secret = '3dd1c77ac980516110338aa5';
     $app_key = 'ab36dbc34e0501604d25974e';
     JPushLog::setLogHandlers(array(new StreamHandler('jpush.log', Logger::DEBUG)));
     $client = new JPushClient($app_key, $master_secret);
     $json = array('type' => 2);
     //echo $json;
     try {
         $result = $client->push()->setPlatform(M\all)->setAudience(M\alias(array($id)))->setNotification(M\notification($content, M\android('hi,android', $title = null, $builder_id = null, $extras = $json)))->printJSON()->send();
         /*$result = $client->push()
           ->setPlatform(M\all)
           ->setAudience(M\alias(array($id)))
           ->setNotification(M\notification($content))
           ->printJSON()
           ->send();*/
         echo 'Push Success.' . $br;
         echo 'sendno : ' . $result->sendno . $br;
         echo 'msg_id : ' . $result->msg_id . $br;
         echo 'Response JSON : ' . $result->json . $br;
     } catch (APIRequestException $e) {
         echo 'Push Fail.' . $br;
         echo 'Http Code : ' . $e->httpCode . $br;
         echo 'code : ' . $e->code . $br;
         echo 'Error Message : ' . $e->message . $br;
         echo 'Response JSON : ' . $e->json . $br;
         echo 'rateLimitLimit : ' . $e->rateLimitLimit . $br;
         echo 'rateLimitRemaining : ' . $e->rateLimitRemaining . $br;
         echo 'rateLimitReset : ' . $e->rateLimitReset . $br;
     } catch (APIConnectionException $e) {
         echo 'Push Fail: ' . $br;
         echo 'Error Message: ' . $e->getMessage() . $br;
         //response timeout means your request has probably be received by JPUsh Server,please check that whether need to be pushed again.
         echo 'IsResponseTimeout: ' . $e->isResponseTimeout . $br;
     }
 }
Example #13
0
 public function pushNotificationAll($msg, $title = null, $extras = null)
 {
     $result = $this->client->push()->setPlatform(M\all)->setAudience(M\all)->setNotification(M\notification($msg, M\android($msg, $title, null, $extras), M\ios($msg, null, null, null, $extras), M\winphone($msg, $title, null, $extras)))->send();
     return $result->isOk;
 }
Example #14
0
 /**
  * Index Page for this controller.
  *
  * Maps to the following URL
  * http://example.com/index.php/welcome
  * - or -
  * http://example.com/index.php/welcome/index
  * - or -
  * Since this controller is set as the default controller in
  * config/routes.php, it's displayed at http://example.com/
  *
  * So any other public methods not prefixed with an underscore will
  * map to /index.php/welcome/<method_name>
  *
  * @see http://codeigniter.com/user_guide/general/urls.html
  */
 public function index()
 {
     $br = '<br/>';
     $spilt = ' - ';
     $master_secret = '3047c84ce72ed9ab392e6be1';
     $app_key = '57d93d27208ab6e2516b129d';
     JPushLog::setLogHandlers(array(new StreamHandler('jpush.log', Logger::DEBUG)));
     $client = new JPushClient($app_key, $master_secret);
     // easy push
     try {
         $result = $client->push()->setPlatform(M\all)->setAudience(M\all)->setNotification(M\notification('Hi, JPush'))->printJSON()->send();
         echo 'Push Success.' . $br;
         echo 'sendno : ' . $result->sendno . $br;
         echo 'msg_id : ' . $result->msg_id . $br;
         echo 'Response JSON : ' . $result->json . $br;
     } catch (APIRequestException $e) {
         echo 'Push Fail.' . $br;
         echo 'Http Code : ' . $e->httpCode . $br;
         echo 'code : ' . $e->code . $br;
         echo 'Error Message : ' . $e->message . $br;
         echo 'Response JSON : ' . $e->json . $br;
         echo 'rateLimitLimit : ' . $e->rateLimitLimit . $br;
         echo 'rateLimitRemaining : ' . $e->rateLimitRemaining . $br;
         echo 'rateLimitReset : ' . $e->rateLimitReset . $br;
     } catch (APIConnectionException $e) {
         echo 'Push Fail: ' . $br;
         echo 'Error Message: ' . $e->getMessage() . $br;
         // response timeout means your request has probably be received by JPUsh Server,please check that whether need to be pushed again.
         echo 'IsResponseTimeout: ' . $e->isResponseTimeout . $br;
     }
     echo $br . '-------------' . $br;
     // easy push with ios badge +1
     // 以下演示推送给 Android, IOS 平台下Tag为tag1的用户的示例
     try {
         $result = $client->push()->setPlatform(M\Platform('android', 'ios'))->setAudience(M\Audience(M\Tag(array('tag1'))))->setNotification(M\notification('Hi, JPush', M\android('Hi, Android', 'Message Title', 1, array("key1" => "value1", "key2" => "value2")), M\ios("Hi, IOS", "happy", "+1", true, array("key1" => "value1", "key2" => "value2"), "Ios8 Category")))->setMessage(M\message('Message Content', 'Message Title', 'Message Type', array("key1" => "value1", "key2" => "value2")))->printJSON()->send();
         echo 'Push Success.' . $br;
         echo 'sendno : ' . $result->sendno . $br;
         echo 'msg_id : ' . $result->msg_id . $br;
         echo 'Response JSON : ' . $result->json . $br;
     } catch (APIRequestException $e) {
         echo 'Push Fail.' . $br;
         echo 'Http Code : ' . $e->httpCode . $br;
         echo 'code : ' . $e->code . $br;
         echo 'Error Message : ' . $e->message . $br;
         echo 'Response JSON : ' . $e->json . $br;
         echo 'rateLimitLimit : ' . $e->rateLimitLimit . $br;
         echo 'rateLimitRemaining : ' . $e->rateLimitRemaining . $br;
         echo 'rateLimitReset : ' . $e->rateLimitReset . $br;
     } catch (APIConnectionException $e) {
         echo 'Push Fail: ' . $br;
         echo 'Error Message: ' . $e->getMessage() . $br;
         // response timeout means your request has probably be received by JPUsh Server,please check that whether need to be pushed again.
         echo 'IsResponseTimeout: ' . $e->isResponseTimeout . $br;
     }
     echo $br . '-------------' . $br;
     // full push
     try {
         $result = $client->push()->setPlatform(M\platform('ios', 'android'))->setAudience(M\audience(M\tag(array('555', '666')), M\alias(array('555', '666'))))->setNotification(M\notification('Hi, JPush', M\android('Hi, android'), M\ios('Hi, ios', 'happy', 1, true, null, 'THE-CATEGORY')))->setMessage(M\message('msg content', null, null, array('key' => 'value')))->setOptions(M\options(123456, null, null, false, 0))->printJSON()->send();
         echo 'Push Success.' . $br;
         echo 'sendno : ' . $result->sendno . $br;
         echo 'msg_id : ' . $result->msg_id . $br;
         echo 'Response JSON : ' . $result->json . $br;
     } catch (APIRequestException $e) {
         echo 'Push Fail.' . $br;
         echo 'Http Code : ' . $e->httpCode . $br;
         echo 'code : ' . $e->code . $br;
         echo 'message : ' . $e->message . $br;
         echo 'Response JSON : ' . $e->json . $br;
         echo 'rateLimitLimit : ' . $e->rateLimitLimit . $br;
         echo 'rateLimitRemaining : ' . $e->rateLimitRemaining . $br;
         echo 'rateLimitReset : ' . $e->rateLimitReset . $br;
     } catch (APIConnectionException $e) {
         echo 'Push Fail: ' . $br;
         echo 'Error Message: ' . $e->getMessage() . $br;
         // response timeout means your request has probably be received by JPUsh Server,please check that whether need to be pushed again.
         echo 'IsResponseTimeout: ' . $e->isResponseTimeout . $br;
     }
     echo $br . '-------------' . $br;
     // fail push
     try {
         $result = $client->push()->setPlatform(M\all)->setAudience(M\all)->setNotification(M\notification('Hi, JPush'))->setAudience(M\audience(array('no one')))->printJSON()->send();
         echo 'Push Success.' . $br;
         echo 'sendno : ' . $result->sendno . $br;
         echo 'msg_id : ' . $result->msg_id . $br;
         echo 'Response JSON : ' . $result->json . $br;
     } catch (APIRequestException $e) {
         echo 'Push Fail.' . $br;
         echo 'Http Code : ' . $e->httpCode . $br;
         echo 'code : ' . $e->code . $br;
         echo 'message : ' . $e->message . $br;
         echo 'Response JSON : ' . $e->json . $br;
         echo 'rateLimitLimit : ' . $e->rateLimitLimit . $br;
         echo 'rateLimitRemaining : ' . $e->rateLimitRemaining . $br;
         echo 'rateLimitReset : ' . $e->rateLimitReset . $br;
     } catch (APIConnectionException $e) {
         echo 'Push Fail: ' . $br;
         echo 'Error Message: ' . $e->getMessage() . $br;
         // response timeout means your request has probably be received by JPUsh Server,please check that whether need to be pushed again.
         echo 'IsResponseTimeout: ' . $e->isResponseTimeout . $br;
     }
 }
Example #15
0
use JPush\Model as M;
$fromCellPhone = isset($_REQUEST['cellPhone']) ? $_REQUEST['cellPhone'] : "";
$nickname = isset($_REQUEST['nickname']) ? $_REQUEST['nickname'] : "匿名";
$targetCellPhone = isset($_REQUEST['targetCellPhone']) ? $_REQUEST['targetCellPhone'] : "";
$message = isset($_REQUEST['message']) ? $_REQUEST['message'] : "召唤";
if (empty($targetCellPhone) or empty($fromCellPhone)) {
    die("nothing else comes so close");
}
$target = $prefix . $targetCellPhone;
$br = '<br/>';
$spilt = ' - ';
//JPushLog::setLogHandlers(array(new StreamHandler('jpush.log', Logger::DEBUG)));
$client = new JPushClient($app_key, $master_secret);
// 以下演示推送给 Android, IOS 平台下Tag为tag1的用户的示例
try {
    $result = $client->push()->setPlatform(M\Platform('ios'))->setAudience(M\Audience(M\alias([$target])))->setNotification(M\notification('来自' . $nickname . '的指令:' . $message, M\ios('来自' . $nickname . '的指令:' . $message, "happy", "+1", true, ["from" => $nickname, "message" => $message], "BearRemoter")))->printJSON()->send();
    echo 'Push Success.' . $br;
    echo 'sendno : ' . $result->sendno . $br;
    echo 'msg_id : ' . $result->msg_id . $br;
    echo 'Response JSON : ' . $result->json . $br;
} catch (APIRequestException $e) {
    echo 'Push Fail.' . $br;
    echo 'Http Code : ' . $e->httpCode . $br;
    echo 'code : ' . $e->code . $br;
    echo 'Error Message : ' . $e->message . $br;
    echo 'Response JSON : ' . $e->json . $br;
    echo 'rateLimitLimit : ' . $e->rateLimitLimit . $br;
    echo 'rateLimitRemaining : ' . $e->rateLimitRemaining . $br;
    echo 'rateLimitReset : ' . $e->rateLimitReset . $br;
} catch (APIConnectionException $e) {
    echo 'Push Fail: ' . $br;
Example #16
0
 public function pushNotificationAlliOS($msg, $title = null, $extras = null)
 {
     $result = $this->client->push()->setPlatform(M\platform('ios'))->setAudience(M\all)->setNotification(M\notification($msg, M\android($msg, $title, null, $extras), M\ios($msg, 'happy', 0, null, $extras), M\winphone($msg, $title, null, $extras)))->setOptions(M\options(null, null, null, true, null))->send();
     $this->writeLog($result);
     return $result->isOk;
 }
Example #17
0
    echo 'code : ' . $e->code . $br;
    echo 'message : ' . $e->message . $br;
    echo 'Response JSON : ' . $e->json . $br;
    echo 'rateLimitLimit : ' . $e->rateLimitLimit . $br;
    echo 'rateLimitRemaining : ' . $e->rateLimitRemaining . $br;
    echo 'rateLimitReset : ' . $e->rateLimitReset . $br;
} catch (APIConnectionException $e) {
    echo 'Push Fail: ' . $br;
    echo 'Error Message: ' . $e->getMessage() . $br;
    //response timeout means your request has probably be received by JPUsh Server,please check that whether need to be pushed again.
    echo 'IsResponseTimeout: ' . $e->isResponseTimeout . $br;
}
echo $br . '-------------' . $br;
//fail push
try {
    $result = $client->push()->setPlatform(M\all)->setAudience(M\all)->setNotification(M\notification('Hi, JPush'))->setAudience(M\audience(array('no one')))->printJSON()->send();
    echo 'Push Success.' . $br;
    echo 'sendno : ' . $result->sendno . $br;
    echo 'msg_id : ' . $result->msg_id . $br;
    echo 'Response JSON : ' . $result->json . $br;
} catch (APIRequestException $e) {
    echo 'Push Fail.' . $br;
    echo 'Http Code : ' . $e->httpCode . $br;
    echo 'code : ' . $e->code . $br;
    echo 'message : ' . $e->message . $br;
    echo 'Response JSON : ' . $e->json . $br;
    echo 'rateLimitLimit : ' . $e->rateLimitLimit . $br;
    echo 'rateLimitRemaining : ' . $e->rateLimitRemaining . $br;
    echo 'rateLimitReset : ' . $e->rateLimitReset . $br;
} catch (APIConnectionException $e) {
    echo 'Push Fail: ' . $br;
use JPush\Model as M;
use JPush\JPushClient;
use JPush\JPushLog;
use Monolog\Logger;
use Monolog\Handler\StreamHandler;
use JPush\Exception\APIConnectionException;
use JPush\Exception\APIRequestException;
$br = '<br/>';
$spilt = ' - ';
$master_secret = 'd94f733358cca97b18b2cb98';
$app_key = '47a3ddda34b2602fa9e17c01';
JPushLog::setLogHandlers(array(new StreamHandler('jpush.log', Logger::DEBUG)));
$client = new JPushClient($app_key, $master_secret);
//easy push
try {
    $result = $client->push()->setPlatform(M\all)->setAudience(M\all)->setNotification(M\notification('Hi, JPush', M\ios("Hi, IOS", "happy", "+1")))->printJSON()->send();
    echo 'Push Success.' . $br;
    echo 'sendno : ' . $result->sendno . $br;
    echo 'msg_id : ' . $result->msg_id . $br;
    echo 'Response JSON : ' . $result->json . $br;
} catch (APIRequestException $e) {
    echo 'Push Fail.' . $br;
    echo 'Http Code : ' . $e->httpCode . $br;
    echo 'code : ' . $e->code . $br;
    echo 'Error Message : ' . $e->message . $br;
    echo 'Response JSON : ' . $e->json . $br;
    echo 'rateLimitLimit : ' . $e->rateLimitLimit . $br;
    echo 'rateLimitRemaining : ' . $e->rateLimitRemaining . $br;
    echo 'rateLimitReset : ' . $e->rateLimitReset . $br;
} catch (APIConnectionException $e) {
    echo 'Push Fail: ' . $br;
Example #19
0
 /**
  * 标记发现交警的地点, 并向附近用户推送提示信息
  * @method markPolice
  * @return [type]
  *
  * @author wesley zhang <*****@*****.**>
  * @since  2015-08-11T16:30:19+0800
  */
 function markPolice()
 {
     global $db;
     $userid = $_REQUEST['userid'];
     $long = $_REQUEST['long'];
     $lat = $_REQUEST['lat'];
     $imgurl = $_REQUEST['imgurl'];
     $content = $_REQUEST['content'];
     $address = $_REQUEST['address'];
     if (!$userid) {
         $this->res['error'] = 1;
         $this->res['msg'] = '用户id不存在';
         return $this->res;
     }
     $aNewRec = array('user_id' => $userid, 'longitude' => $long, 'latitude' => $lat, 'image_url' => $imgurl, 'content' => $content, 'address' => $address, 'created_date' => $db->now());
     $id = $db->insert('mark_trafficpolice', $aNewRec);
     //获得附近停车用户
     $aUsers = $this->_getNearbyUsers($long, $lat);
     $sPushMsg = '您当前' . $this->searchRadius . '千米的范围内有交警,请注意!';
     if (count($aUsers)) {
         $sMsgType = 'markPolice';
         //去除重复用户
         $aPushAlias = array();
         $aPushUsersInfo = array();
         foreach ($aUsers as $user) {
             if (!in_array($user['user_name'], $aPushAlias) && $userid != $user['user_id']) {
                 $aPushAlias[] = $user['user_name'];
                 $aPushUsersInfo[] = $user;
             }
         }
         // 使用jpush 推送消息,
         // Options: 第一个参数为sendno,纯粹用来作为 API 调用标识,API 返回时被原样返回,以方便 API 调用方匹配请求与返回。
         //Options: 第二个参数为time_to_live,0 表示不保留离线消息,只有推送当前在线的用户可以收到。默认 86400 (1 天),最长 10 天
         // Options: http://docs.jpush.io/server/rest_api_v3_push/#options
         try {
             $client = new JPushClient($this->appKey, $this->masterSecret);
             $response = $client->push()->setPlatform(M\all)->setAudience(M\audience(M\alias($aPushAlias)))->setNotification(M\notification($sPushMsg))->setOptions(M\options($id, 0, null, true))->send();
             // $aPusRes = $this->_objectToArray($response);
             // if($response->isOk == 1){
             //      //推送成功, 标记用户收到推送
             // }
         } catch (Exception $e) {
             // print('<pre>');
             // print_r($e->getMessage());
             // print('</pre>');
         }
         //不管推送是否成功, 都标记用户收到
         foreach ($aPushUsersInfo as $user) {
             $aNewLog = array('mt_id' => $id, 'user_id' => $user['user_id'], 'push_content' => $sPushMsg, 'push_param' => $response->json, 'created_date' => $db->now());
             $db->insert('mark_trafficpolice_received', $aNewLog);
         }
     }
     $aRes = array('id' => $id);
     if ($id) {
         $this->res['data'] = $aRes;
         $this->res['error'] = 0;
         $this->res['msg'] = '保存成功';
     } else {
         $this->res['error'] = 1;
         $this->res['msg'] = '保存失败';
     }
     return $this->res;
 }
Example #20
0
if (isset($uid) && isset($msg) && isset($role)) {
    $rs_arr = $d2b->select("user_main", ["channelid"], ["uid" => $uid]);
    $channelid = $rs_arr[0]['channelid'];
    switch ($role) {
        case 1:
            $client = new JPushClient($app_key_c, $master_secret_c);
            try {
                $result = $client->push()->setPlatform(M\platform('ios', 'android'))->setAudience(M\audience(M\registration_id(array($channelid))))->setNotification(M\notification($msg, M\android($msg), M\ios($msg, 'happy', 1, true, null, 'THE-CATEGORY')))->setMessage(M\message($msg, null, null, array('key' => 'value')))->setOptions(M\options(123456, null, null, false, 0))->send();
                $return_arr = ["channelid" => $channelid];
                include "../include/return_data.php";
            } catch (APIRequestException $e) {
                echo 'code : ' . $e->code;
            }
            break;
        case 2:
            $client = new JPushClient($app_key_p, $master_secret_p);
            try {
                $result = $client->push()->setPlatform(M\platform('ios', 'android'))->setAudience(M\audience(M\registration_id(array($channelid))))->setNotification(M\notification($msg, M\android($msg), M\ios($msg, 'happy', 1, true, null, 'THE-CATEGORY')))->setMessage(M\message($msg, null, null, array('key' => 'value')))->setOptions(M\options(123456, null, null, false, 0))->send();
                $return_arr = ["channelid" => $channelid];
                include "../include/return_data.php";
            } catch (APIRequestException $e) {
                echo 'code : ' . $e->code;
            }
            break;
        default:
            echo json_encode(0);
            break;
    }
} else {
    echo json_encode(0);
}
Example #21
0
<?php

require_once '../../third_party/vendor/autoload.php';
use JPush\Model as M;
use JPush\JPushClient;
use JPush\Exception\APIConnectionException;
use JPush\Exception\APIRequestException;
$app_key = '74a7874f76fa5eb4e6baa6b3';
$master_secret = 'd50c83278b63a7b004da7364';
$br = '<br/>';
$client = new JPushClient($app_key, $master_secret);
if (!isset($_POST['k'])) {
    exit;
}
$msg = $_POST['k'];
$result = $client->push()->setPlatform(M\all)->setAudience(M\all)->setOptions(M\options(123456, null, null, true, 60))->setNotification(M\notification(M\ios($msg, 'happy', 1, true)))->send();
header('Location:' . $_SERVER['HTTP_REFERER']);
Example #22
0
 public function testOptionsAndOverride()
 {
     $client = new JPushClient($this->appKey, $this->masterSecret);
     $response = $client->push()->setPlatform(M\all)->setAudience(M\all)->setNotification(M\notification($this->alert))->setOptions(M\options(12345, 60, null, true))->send();
     $this->assertEquals(12345, $response->sendno);
     $this->assertTrue($response->isOk === true);
     $override_msg_id = (int) $response->msg_id;
     $client = new JPushClient($this->appKey, $this->masterSecret);
     $response = $client->push()->setPlatform(M\all)->setAudience(M\all)->setNotification(M\notification($this->alert))->setOptions(M\options(null, null, $override_msg_id))->send();
     $this->assertTrue($response->isOk === true);
 }
Example #23
0
 /**
  * 极光推送
  * @param int $push_type
  * @param array $alias
  * @param string $title
  * @param string $notification
  * @param int $msg_type
  * @param int $app_type_id
  * @param int $platform_id
  * @return M\PushResponse
  */
 public function jpush($push_type = 2, $alias = array(), $title = 'test', $notification = 'test', $msg_type = 1, $app_type_id = 1, $platform_id = 0)
 {
     if ($push_type == C('jpush.push_type.direct')) {
         if (empty($alias)) {
             echo 'empty alias';
             return;
         }
     }
     list($appkey, $secret) = $this->_get_appkey($app_type_id);
     if (empty($appkey) || empty($secret)) {
         echo 'empty appkey';
         return;
     }
     $platform = $this->_get_platform($platform_id);
     $audience = $this->_get_audience($alias);
     $client = new JPushClient($appkey, $secret);
     $br = "<br/>\n";
     try {
         switch ($msg_type) {
             case C('jpush.message_type.message'):
                 $result = $client->push()->setPlatform($platform)->setAudience($audience)->setMessage(M\message($notification))->send();
                 break;
             case C('jpush.message_type.notification'):
                 $result = $client->push()->setPlatform($platform)->setAudience($audience)->setNotification(M\notification($notification))->send();
                 break;
         }
         // success return array
         return $result;
     } catch (APIRequestException $e) {
         echo 'Push Fail.' . $br;
         echo 'Http Code : ' . $e->httpCode . $br;
         echo 'code : ' . $e->code . $br;
         echo 'message : ' . $e->message . $br;
         echo 'Response JSON : ' . $e->json . $br;
         echo 'rateLimitLimit : ' . $e->rateLimitLimit . $br;
         echo 'rateLimitRemaining : ' . $e->rateLimitRemaining . $br;
         echo 'rateLimitReset : ' . $e->rateLimitReset . $br;
     } catch (APIConnectionException $e) {
         echo 'Push Fail.' . $br;
         echo 'message' . $e->getMessage() . $br;
     }
 }
Example #24
0
 public function testGlobalExceedLength4()
 {
     $tooBig220 = "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000";
     $tooBig1200 = "000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000";
     $payload = new M\PushPayload(null);
     $result = $payload->setPlatform(M\all)->setAudience(M\all)->setNotification(M\notification("HI, JPush", M\ios("Hi, JPUsh"), M\android($tooBig1200)))->setMessage(M\message("Hi,JPush"))->isGlobalExceedLength();
     $this->assertEquals(true, $result);
 }
Example #25
0
 public function push()
 {
     if ($this->param['type'] === null || $this->param['ispushservice'] === null || $this->param['phone'] === null || $this->param['content'] === null || $this->param['shop_id'] === null) {
         return $this->returnResult($this->DATAERROR, '数据错误!');
     }
     if (strlen($this->param['phone']) != 11) {
         return $this->returnResult($this->DATAERROR, '数据错误!');
     }
     if ($this->param['phone'] == '') {
         return $this->returnResult($this->DATAERROR, '数据错误!');
     }
     $userinfo = UserBase::findFirst("user_account = " . $this->param['phone']);
     if (!$userinfo) {
         return $this->returnResult($this->DATAERROR, '数据错误!');
     }
     $user_id = $userinfo->user_id;
     $usermessage = new UserMessage();
     $usermessage->user_id = $user_id;
     if ($this->param['ispushservice'] == 1) {
         $usermessage->is_read_b = 0;
     } else {
         $usermessage->is_read_b = 1;
     }
     $usermessage->message_content = $this->param['content'];
     $usermessage->push_type = $this->param['type'];
     $usermessage->message_state = 1;
     $usermessage->shop_id = $this->param['shop_id'];
     $usermessage->from_user_name = 1;
     $usermessage->from_user_cover = 1;
     $this->db->begin();
     $message_status = $usermessage->save();
     //添加数据到user_message
     if (!$message_status) {
         $this->db->rollback();
         return $this->returnResult($this->MYSQLERROR, "数据库错误");
     }
     /*推送至APP代码*/
     $config = $this->di->get('appConfig')->jpush;
     $app_key = $config->app_key;
     $master_secret = $config->master_secret;
     JPushLog::setLogHandlers([new StreamHandler('jpush.log', Logger::DEBUG)]);
     $client = new JPushClient($app_key, $master_secret);
     //easy push
     try {
         $result = $client->push()->setPlatform(M\all)->setAudience(M\alias([$user_id]))->setNotification(M\notification($this->param['content']))->setOptions(M\options(null, null, null, true, null))->send();
         if ($result->isOk === true) {
             $this->db->commit();
             return $this->returnResult($this->SUCCESS, "推送成功!");
         } else {
             $this->db->rollback();
             return $this->returnResult($this->PUSHFAIL, "推送失败!");
         }
     } catch (APIRequestException $e) {
         /* echo 'Push Fail.' . '<br>';
          		 echo 'Http Code : ' . $e->httpCode . '<br>';
          		echo 'code : ' . $e->code . '<br>';
          		echo 'message : ' . $e->message . '<br>';
          		echo 'Response JSON : ' . $e->json . '<br>';
          		echo 'rateLimitLimit : ' . $e->rateLimitLimit . '<br>';
          		echo 'rateLimitRemaining : ' . $e->rateLimitRemaining . '<br>';
          		echo 'rateLimitReset : ' . $e->rateLimitReset . '<br>';
          		exit; */
         $this->db->rollback();
         return $this->returnResult($this->PUSHFAIL, "推送失败!");
     } catch (APIConnectionException $e) {
         $this->db->rollback();
         return $this->returnResult($this->PUSHFAIL, "推送失败!");
     }
     /*the end*/
 }