public function run($args) { $userModel = new UserModel(); $pushMsgModel = new PushMsgModel(); $url = Yii::app()->params['baiduPushUrl']; $apikey = Yii::app()->params['baiduPushApiKey']; $secret_key = Yii::app()->params['baiduPushSecretKey']; //此处替换为应用的secret key $data = array(); $timestamp = time(); //var_dump($users);exit; $leaguePushMsgModel = new LeaguePushMsgModel(); //找到需要进行消息推送的球队 $pushData = $leaguePushMsgModel->findPush(0, 1); // var_dump($pushData);exit; $pushTeams = array(); if (isset($pushData[0]->teams)) { $pushTeams = $pushData[0]->teams; } $content = '更新了赛程'; $method = 'POST'; $aps = array("alert" => "{$content}", "sound" => "1", "badge" => 1); $mess = array("title" => "更新了赛程", "description" => $content, "aps" => $aps); if (!empty($pushTeams)) { foreach ($pushTeams as $team) { $arrContent = array('method' => 'push_msg', 'apikey' => $apikey, 'push_type' => 2, 'tag' => $team, 'device_type' => 4, 'message_type' => 1, 'deploy_status' => 1, 'messages' => json_encode($mess), 'msg_keys' => '1', 'timestamp' => $timestamp, 'expires' => intval($timestamp) + 600); $sign = $this->genSign($secret_key, $method, $url, $arrContent); $arrContent['sign'] = $sign; //var_dump($arrContent);exit; $query = http_build_query($arrContent); //找到联赛中的球队 $users = $userModel->findRowsByRelation("footballer", "Team", $team); if (!empty($users)) { $saveBatchArr = array(); foreach ($users as $user) { if (isset($user->username) && !empty($user->username)) { $extra = array("belongId" => $user->username, "title" => "联赛赛程", "type" => 2, "time" => time(), "targetId" => $user->objectId, "subtype" => 19); $saveArr = array('belongUsername' => $user->username, 'isRead' => 0, 'status' => 0, 'msgType' => 0, 'extra' => json_encode($extra), 'content' => $content); array_push($saveBatchArr, $saveArr); //记录球员接收的推送消息 //$result = $pushMsgModel->addPushMsg($saveArr); } } $result = $pushMsgModel->saveBatch($saveBatchArr); } //var_dump($result);exit; // echo $url.'?'.$query;exit; $res = CommonFunction::sendMobileMsg($url . '?' . $query, $data); // $res = Yii::app()->CURL->run($url.'?'.$query,FALSE,$data); } var_dump($res); exit; } }
/** * @desc 百度云推送 * @param $users 用户的对象数组 * @param $title 推送的标题 * @param $msg 推送的内容 * @param $type 详细看文档 * @param $subType 详细看文档 * @param $msg_type 推送的类型:0:消息(透传)1:通知 * @param $options * @return bool|mixed */ public function push($users, $title, $msg, $type, $subType, $optional, $msg_type = 1) { $pushMsgModel = new PushMsgModel(); if (!is_array($users)) { $users = array($users); } if (count($users) > 0) { $masterId = CommonFunction::getUserId(); $content = $msg; $saveBatchArr = array(); //保存推送消息到PushMsg表 foreach ($users as $user) { if (isset($user->username) && !empty($user->username)) { $extra = array("belongId" => $user->username, "title" => $title, "type" => $type, "time" => time(), "targetId" => $this->getTargetId($subType, $optional), "subtype" => $subType); $saveArr = array('belongUsername' => $user->username, 'isRead' => 0, 'status' => 0, 'msgType' => 0, 'extra' => json_encode($extra), 'content' => $content); array_push($saveBatchArr, $saveArr); } } try { $results = $pushMsgModel->saveBatch($saveBatchArr); } catch (Exception $e) { return $e->getMessage(); } //发送百度推送 for ($i = 0; $i < count($users); $i++) { $user = $users[$i]; $result = $results[$i]; if (!property_exists($user, 'pushUserId')) { continue; } if ($user->pushUserId == "") { continue; } $push_type = 1; //推送单播消息 $optional[Channel::USER_ID] = $user->pushUserId; //如果推送单播消息,需要指定user $message = array(); if ($user->deviceType == "ios") { //指定发到ios设备 $optional[Channel::DEVICE_TYPE] = 4; //apns证书状态 $optional[Channel::DEPLOY_STATUS] = Yii::app()->params['apnDeployStatus']; $message['aps']['alert'] = $msg; $message['aps']['sound'] = ""; $message['aps']['badge'] = 0; $message['objectId'] = $result->success->objectId; $message['belongId'] = $user->username; $message['targetId'] = $this->getTargetId($subType, $optional); $message['title'] = $title; $message['time'] = time(); $message['type'] = $type; $message['subtype'] = $subType; $message['flag'] = "notice"; } else { //android $optional[Channel::DEVICE_TYPE] = 3; $message['title'] = $title; $message['description'] = $msg; $message['custom_content']['objectId'] = $result->success->objectId; $message['custom_content']['belongId'] = $user->username; $message['custom_content']['targetId'] = $this->getTargetId($subType, $optional); $message['custom_content']['title'] = $title; $message['custom_content']['time'] = time(); $message['custom_content']['type'] = $type; $message['custom_content']['subtype'] = $subType; $message['custom_content']['flag'] = "notice"; } $optional[Channel::MESSAGE_TYPE] = $msg_type; $message_key = md5(json_encode($message)); $ret = $this->channel->pushMessage($push_type, json_encode($message), $message_key, $optional); // echo "send pushId:".$user->pushUserId."<br/>"; //检查返回值 if (false === $ret) { echo 'baiduPush_WRONG, ' . __FUNCTION__ . ' ERROR!!!!<br/>'; echo 'baiduPush_ERROR NUMBER: ' . $this->channel->errno() . '<br/>'; echo 'baiduPush_ERROR MESSAGE: ' . $this->channel->errmsg() . '<br/>'; echo 'baiduPush_REQUEST ID: ' . $this->channel->getRequestId() . '<br/>'; echo '<br/>'; } } } // Helper::flash('error', "你无权限编辑联赛信息(请确认你至少有一个联赛的管理权限)!", '/site/'); }