Пример #1
0
 /**
  * Execute the console command.
  *
  * @return mixed
  */
 public function handle()
 {
     /**
      * @var Package $package
      */
     $package = Package::all()->random();
     $devices = Device::all();
     $installIds = $devices->pluck('push_id')->toArray();
     $this->info('App: ' . $package->app_name . '(' . $package->apk . ')');
     $this->info('Devices: ' . $devices->pluck('alias'));
     $this->line('===========================');
     $result = $this->client->push()->setPlatform(M\all)->setAudience(M\registration_id($installIds))->setMessage(M\message($package->toJson(), null, "package"))->send();
     $this->info('Push success');
     //        print_r($result->response->body);
     //        $msg_ids = $result->msg_id;
     //        $report = $this->client->report($msg_ids);
     //        print_r($report->received_list);
     $push = new Push();
     $push->package_id = $package->id;
     $push->user_id = 4;
     $push->sendno = $result->sendno;
     $push->msg_id = $result->msg_id;
     $push->is_ok = $result->isOk;
     $push->save();
     print_r($push->toJson());
 }
Пример #2
0
 public static function send($devices, Package $package, $user_id)
 {
     $client = app('JPush\\JPushClient');
     $installIds = $devices->pluck('install_id')->toArray();
     if (count($installIds) == 0) {
         throw new \Exception(Lang::get('errors.device_required'), 400);
     }
     try {
         $result = $client->push()->setPlatform(M\all)->setAudience(M\registration_id($installIds))->setMessage(M\message($package->toJson(), null, "package"))->send();
     } catch (\Exception $e) {
         throw new \Exception(Lang::get('errors.push_failed'), 500);
     }
     if ($result->isOk) {
         $push = new Push();
         $push->package_id = $package->id;
         $push->user_id = $user_id;
         $push->sendno = $result->sendno;
         $push->msg_id = $result->msg_id;
         $push->is_ok = $result->isOk;
         $push->save();
         foreach ($devices as $device) {
             $pd = new PushDevice();
             $pd->device_id = $device->id;
             $pd->push_id = $push->id;
             $pd->status = 1;
             //				$pd->user_id = Auth::id();
             $pd->save();
         }
         return $push;
     }
     throw new \Exception(Lang::get('errors.push_failed'), 500);
 }
Пример #3
0
 function pushAllMessage($msg, $title = null, $arr = null)
 {
     try {
         $jpushClient = $this->client;
         $result = $jpushClient->push()->setPlatform(M\all)->setAudience(M\all)->setMessage(M\message($msg, $title, '', $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' => '推送失败!');
     }
 }
Пример #4
0
 public function jpushpush($data)
 {
     import("@.tool.vendor.autoload");
     $client = new JPushClient(C('JPUSH_APP_KEY'), C('JPUSH_APP_SECRET'));
     if (!$data) {
         $ret['isok'] = false;
         $ret['msg'] = 'no data';
     } elseif (!$data['audience']) {
         $ret['isok'] = false;
         $ret['msg'] = 'no audience';
     } elseif ($data && $data['audience']) {
         $data['platform'] = $data['platform'] ? $data['platform'] : 'all';
         $data['msg_content'] = $data['msg_content'] ? $data['msg_content'] : '内容';
         $data['title'] = $data['title'] ? $data['title'] : '标题';
         $data['content_type'] = $data['content_type'] ? $data['content_type'] : '类型';
         $data['extras'] = array("type" => '10', "order_id" => '20');
         $result = $client->push()->setPlatform($data['platform'])->setAudience($data['audience'])->setMessage(M\message($data['msg_content'], $data['title'], $data['content_type'], $data['extras']))->send();
         $ret['isok'] = $result->isOk;
         $ret['msg'] = '';
         $ret['sendno'] = $result->sendno;
     }
 }
Пример #5
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);
 }
Пример #6
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);
}
Пример #7
0
 public function testMessageContentFull()
 {
     $client = new JPushClient($this->appKey, $this->masterSecret);
     $response = $client->push()->setPlatform(M\all)->setAudience(M\all)->setMessage(M\message($this->msg_content, $this->title, "content_type", $this->extras))->send();
     $this->assertTrue($response->isOk === true);
 }
Пример #8
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;
     }
 }
Пример #9
0
 public function pushMessageByAlias($alias, $msg_content, $title = null, $content_type = null, $extras = null)
 {
     $result = $this->client->push()->setPlatform(M\all)->setAudience(M\audience(M\alias(explode(',', $alias))))->setMessage(M\message($msg_content, $title, $content_type, $extras))->setOptions(M\options(null, null, null, true, null))->send();
     $this->writeLog($result);
     return $result->isOk;
 }
Пример #10
0
    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;
Пример #11
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;
     }
 }
Пример #12
0
function JPushMessageByAll($message, $type)
{
    if (empty($jpush) == TRUE) {
        $jpush = JPushInit();
    }
    try {
        $result = $jpush->push()->setPlatform(M\all)->setAudience(M\all)->setMessage(M\message($message, $message, $type, array('message' => $message)))->send();
        return $result->msg_id;
    } catch (APIConnectionException $e) {
    }
    return FALSE;
}