Exemplo n.º 1
0
 /**
  * 批量发送消息
  * @return [type] [description]
  */
 static function send($sendId)
 {
     $pushInfoModel = new PushInfoModel();
     $db = DB::getInstance();
     if (!empty($sendId)) {
         $andSql = "and a.id={$sendId}";
     }
     $sql = "select b.device_token,b.device_type,b.token, a.params, a.id, a.content from t_push_info a, t_login b where a.to_user = b.uid and b.device_token != '' and a.is_send = 0 {$andSql} and b.token not like 'expired at%' group by device_token";
     $infos = $db->get_all($sql);
     if (count($infos > 0)) {
         foreach ($infos as $info) {
             if ($info['device_type']) {
                 $push = new XingeApp(2200102180, "661fd033916fadbf4e0866a18978782a");
                 $mess = new MessageIOS();
                 $mess->setAlert($info['content']);
                 $params = json_decode($info['params'], true);
                 if (!empty($params['content'])) {
                     $params['content'] = urldecode($params['content']);
                 }
                 $mess->setCustom($params);
                 $raw = $push->PushSingleDevice($info['device_token'], $mess, XingeApp::IOSENV_PROD);
                 $ret = json_encode($raw, true);
                 if ($ret['ret_code'] == 0) {
                     $sql = "update t_push_info set is_send = 1 where id={$info['id']}";
                     $db->query($sql);
                 }
             } else {
                 // for android
                 $push = new XingeApp(2100117084, "13391a7ec8a47d5e30525a04bd04befa");
                 $mess = new Message();
                 $mess->setTitle('合租吧');
                 $mess->setContent($info['content']);
                 $params = json_decode($info['params'], true);
                 if (!empty($params['content'])) {
                     $params['content'] = urldecode($params['content']);
                 }
                 $mess->setCustom($params);
                 $mess->setType(Message::TYPE_NOTIFICATION);
                 $mess->setStyle(new Style(0, 1, 1, 0, 0));
                 $action = new ClickAction();
                 $action->setActionType(ClickAction::TYPE_ACTIVITY);
                 $mess->setAction($action);
                 $raw = $push->PushSingleDevice($info['device_token'], $mess);
                 //$raw = XingeApp::PushTokenAndroid(2100117084, "13391a7ec8a47d5e30525a04bd04befa", "标题", "大家好!", $info['device_token']);
                 var_dump($raw);
                 $ret = json_encode($raw, true);
                 if ($ret['ret_code'] == 0) {
                     $sql = "update t_push_info set is_send = 1 where id={$info['id']}";
                     $db->query($sql);
                 }
             }
         }
     }
 }
Exemplo n.º 2
0
 /**
  * [pushAction description]
  * @return [type] [description]
  */
 public function pushAction()
 {
     //var_dump(XingeApp::PushTokenIos(2200102180, "661fd033916fadbf4e0866a18978782a", "你好啊,我是彭庚庚", "334b890e1718a3616b306e7f7b8202365f04a86bd6d43dd586474f9eb5be7061",
     // XingeApp::IOSENV_DEV));
     //echo '123';
     $push = new XingeApp(2200102180, "661fd033916fadbf4e0866a18978782a");
     $mess = new MessageIOS();
     $mess->setAlert('你好嘛,我是庚庚');
     $mess->setCustom(array('aid' => '3'));
     $ret = $push->PushSingleDevice('334b890e1718a3616b306e7f7b8202365f04a86bd6d43dd586474f9eb5be7061', $mess, XingeApp::IOSENV_DEV);
     var_dump($ret);
 }
Exemplo n.º 3
0
 /**
  * 推送接口
  * @param  int     $push_type       1单个设备 2部分人(*常用)
  * @param  int     $device_type 设备类型 1:浏览器设备 2:pc设备 3:Android设备 4:ios设备 5:windows phone设备
  * @param  string  $title        标题(仅安卓)
  * @param  string  $content      留言正文
  * @param  int     $customtype   自定义类型,t
  * @param  string  $customvalue  自定义值,v
  * @param  string  $p_deviceTokens 用户推送ID,百度里是buserid
  * @param  string  $tag_name     指定标签
  * @return array                 results
  */
 public static function pushMessage($push_type, $device_type, $title = '', $content, $customtype = null, $customvalue = null, $p_deviceTokens = null, $tag_name = null)
 {
     $push = null;
     $mess = null;
     $push = static::getPush($device_type);
     if ($push == null) {
         return Utility::getArrayForResults(RUNTIME_CODE_ERROR_PARAM, '推送对象获取失败,无法创建推送任务。');
     }
     if ($device_type == 4) {
         $mess = new MessageIOS();
         $mess->setExpireTime(86400);
         //$mess->setSendTime("2014-03-13 16:00:00");
         $mess->setAlert($content);
         //$mess->setAlert(array('key1'=>'value1'));
         $mess->setBadge(0);
         $mess->setSound('');
         if (isset($customtype, $customvalue)) {
             $custom = array('t' => intval($customtype), 'v' => $customvalue);
             $mess->setCustom($custom);
         }
     } else {
         if ($device_type == 3) {
             $mess = new Message();
             if ($title == '') {
                 $title = $content;
             }
             $mess->setType(Message::TYPE_NOTIFICATION);
             $mess->setTitle($title);
             $mess->setContent($content);
             $mess->setExpireTime(86400);
             //$style = new Style(0);
             #含义:样式编号0,响铃,震动,不可从通知栏清除,不影响先前通知
             $style = new Style(0, 1, 1, 0, 0);
             $mess->setStyle($style);
             $action = new ClickAction();
             $action->setActionType(ClickAction::TYPE_ACTIVITY);
             $action->setActivity(' ');
             //扯淡的xinge sdk,isValid()方法判断m_activity默认值有点问题
             $mess->setAction($action);
             if (isset($customtype, $customvalue)) {
                 $custom = array('t' => intval($customtype), 'v' => $customvalue);
                 $mess->setCustom($custom);
             }
         } else {
             return Utility::getArrayForResults(RUNTIME_CODE_ERROR_PARAM, '请传入正确的设备类型,iOS 还是 安卓');
         }
     }
     $params['production_mode'] = static::$DEPLOY_STATUS == 2;
     //是否正式环境
     $ret = array();
     switch ($push_type) {
         case 1:
             //指定token
             $p_deviceTokens = is_array($p_deviceTokens) ? $p_deviceTokens : explode(',', $p_deviceTokens);
             if (count($p_deviceTokens) == 0 || count($p_deviceTokens) == 1 && $p_deviceTokens[0] == null) {
                 return Utility::getArrayForResults(RUNTIME_CODE_ERROR_PARAM, '请传入正确的用户推送token');
             }
             if (count($p_deviceTokens) > 5) {
                 $retMulti = $push->CreateMultipush($mess, $device_type == 3 ? 0 : (static::$DEPLOY_STATUS == 2 ? XingeApp::IOSENV_PROD : XingeApp::IOSENV_DEV));
                 $ret[] = array('action' => 'CreateMultipush', 'ret' => $retMulti);
                 if (is_array($retMulti) && array_key_exists('result', $retMulti) && array_key_exists('push_id', $retMulti['result'])) {
                     $maxCount = 1000;
                     //每次最大传输设备量
                     for ($i = 0; $i < count($p_deviceTokens); $i += $maxCount) {
                         $ret[] = array('action' => 'PushDeviceListMultiple', 'token' => $p_deviceTokens, 'ret' => $push->PushDeviceListMultiple($retMulti['result']['push_id'], array_slice($p_deviceTokens, $i, $maxCount)));
                     }
                 }
             } else {
                 foreach ($p_deviceTokens as $token) {
                     if ($device_type == 4) {
                         $ret[] = array('action' => 'PushSingleDevice', 'token' => $token, 'ret' => $push->PushSingleDevice($token, $mess, static::$DEPLOY_STATUS == 2 ? XingeApp::IOSENV_PROD : XingeApp::IOSENV_DEV));
                     } else {
                         if ($device_type == 3) {
                             $ret[] = array('action' => 'PushSingleDevice', 'token' => $token, 'ret' => $push->PushSingleDevice($token, $mess));
                         }
                     }
                 }
             }
             break;
         case 2:
             //指定设备群发
             if ($device_type == 4) {
                 $ret[] = array('action' => 'PushAllDevices', 'token' => '0', 'ret' => $push->PushAllDevices(0, $mess, static::$DEPLOY_STATUS == 2 ? XingeApp::IOSENV_PROD : XingeApp::IOSENV_DEV));
             } else {
                 if ($device_type == 3) {
                     $ret[] = array('action' => 'PushAllDevices', 'token' => '0', 'ret' => $push->PushAllDevices(0, $mess));
                 }
             }
             break;
         default:
             return Utility::getArrayForResults(RUNTIME_CODE_ERROR_PARAM, 'push_type 1:单个人 2部分人 3所有人');
     }
     return Utility::getArrayForResults(RUNTIME_CODE_OK, '', array('push_type' => $push_type, 'device_type' => $device_type, 'messages' => $mess, 'result' => $ret));
 }
Exemplo n.º 4
0
 /**
  * 使用默认设置推送消息给标签选中设备ios版
  */
 public static function PushTagIos($accessId, $secretKey, $content, $tag, $environment)
 {
     $push = new XingeApp($accessId, $secretKey);
     $mess = new MessageIOS();
     $mess->setAlert($content);
     $ret = $push->PushTags(0, array(0 => $tag), 'OR', $mess, $environment);
     return $ret;
 }
Exemplo n.º 5
0
Arquivo: demo.php Projeto: alonexy/lea
function DemoPushSingleAccountIOS()
{
    $push = new XingeApp(00, 'secret_key');
    $mess = new MessageIOS();
    $mess->setExpireTime(86400);
    $mess->setAlert("ios test");
    //$mess->setAlert(array('key1'=>'value1'));
    $mess->setBadge(1);
    $mess->setSound("beep.wav");
    $custom = array('key1' => 'value1', 'key2' => 'value2');
    $mess->setCustom($custom);
    $acceptTime1 = new TimeInterval(0, 0, 23, 59);
    $mess->addAcceptTime($acceptTime1);
    $ret = $push->PushSingleAccount(0, 'joelliu', $mess, XingeApp::IOSENV_DEV);
    return $ret;
}
Exemplo n.º 6
0
 /**
  * 更改订单状态时,向手机端(包括Android和IOS)发送提醒信息
  * 
  * @param [object] $[shop] [店铺对象]
  * @param [object] $[mainOrder] [主订单]
  * @param [int] $[toBeStatus] [要改变状态]
  * 
  * @return Response
  */
 protected function pushOrderInfo($shop, $mainOrder, $toBeStatus)
 {
     //获取信鸽系统配置
     $accessId = Config::get('xinge.accessId');
     $secretKey = Config::get('xinge.secretKey');
     $xingeApp = new XingeApp($accessId, $secretKey);
     //根据mainorder中的userid获取token和设备类型
     $userTokens = UserToken::where('wy_user_id', $mainOrder->wy_user_id)->where('wy_user_type', USER_TYPE_1)->where('wy_status', LOGIN_STATUS_1)->get();
     if (!empty($userTokens->toArray())) {
         foreach ($userTokens as $index => $userToken) {
             if (DEVICE_TYPE_1 == $userToken->wy_device_type) {
                 //根据不同状态获取不同的模板信息
                 switch ($toBeStatus) {
                     case ORDER_STATE_2:
                         //接单
                         $orderMessage = Config::get('xinge.androidRecvMessage');
                         break;
                     case ORDER_STATE_3:
                         //配送中
                         $orderMessage = Config::get('xinge.androidDeliveryMessage');
                         break;
                     case ORDER_STATE_4:
                         //完成
                         $orderMessage = Config::get('xinge.androidFinishMessage');
                         break;
                     case ORDER_STATE_6:
                         //拒单
                         $orderMessage = Config::get('xinge.androidRefuseMessage');
                         break;
                     default:
                         break;
                 }
                 if (isset($orderMessage)) {
                     //单击动作
                     $action = new ClickAction();
                     $action->setActionType(ClickAction::TYPE_ACTIVITY);
                     $action->setActivity($orderMessage['activity']);
                     //显示样式
                     $styleParams = $orderMessage['style'];
                     $style = new Style($styleParams['builderId'], $styleParams['ring'], $styleParams['vibrate'], $styleParams['clearable'], $styleParams['nId'], $styleParams['lights'], $styleParams['iconType'], $styleParams['styleId']);
                     //Android平台的消息
                     $message = new Message();
                     $message->setTitle($orderMessage['title']);
                     $message->setContent($orderMessage['content']);
                     $message->setExpireTime($orderMessage['expireTime']);
                     $message->setType(Message::TYPE_NOTIFICATION);
                     $message->setStyle($style);
                     $message->setAction($action);
                 } else {
                     $context = array("errorCode" => -10054, "userID" => $mainOrder->wy_user_id, "toBeStatus" => $toBeStatus);
                     Log::error(Lang::get('errormessages.-10054'), $context);
                 }
             } elseif (DEVICE_TYPE_2 == $userToken->wy_device_type) {
                 //根据不同状态获取不同的模板信息
                 switch ($toBeStatus) {
                     case ORDER_STATE_2:
                         //接单
                         $orderMessage = Config::get('xinge.iosRecvMessage');
                         break;
                     case ORDER_STATE_3:
                         //配送中
                         $orderMessage = Config::get('xinge.iosDeliveryMessage');
                         break;
                     case ORDER_STATE_4:
                         //完成
                         $orderMessage = Config::get('xinge.iosFinishMessage');
                         break;
                     case ORDER_STATE_6:
                         //拒单
                         $orderMessage = Config::get('xinge.iosRefuseMessage');
                         break;
                     default:
                         break;
                 }
                 if (isset($orderMessage)) {
                     //IOS平台的消息,需要IOS文档
                     $message = new MessageIOS();
                     $message->setTitle($orderMessage['title']);
                 } else {
                     $context = array("errorCode" => -10055, "userID" => $mainOrder->wy_user_id, "toBeStatus" => $toBeStatus);
                     Log::error(Lang::get('errormessages.-10055'), $context);
                 }
             } else {
                 $context = array("errorCode" => -10056, "userID" => $mainOrder->wy_user_id, "deviceType" => $userToken->wy_device_type);
                 Log::error(Lang::get('errormessages.-10056'), $context);
             }
             //自定义参数,key-value形式的
             if (isset($message)) {
                 $custom = array('shop_name' => $shop->wy_shop_name, 'main_order_id' => $mainOrder->wy_main_order_id);
                 $message->setCustom($custom);
                 $result = $xingeApp->PushSingleDevice($userToken->wy_token, $message);
                 Log::info($result);
             } else {
                 $context = array("errorCode" => -10057, "userID" => $mainOrder->wy_user_id, "deviceType" => $userToken->wy_device_type, "toBeStatus" => $toBeStatus);
                 Log::error(Lang::get('errormessages.-10057'), $context);
             }
         }
     } else {
         $context = array("errorCode" => -10053, "userID" => $mainOrder->wy_user_id);
         Log::error(Lang::get('errormessages.-10053'), $context);
     }
 }