前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >极光推送案例

极光推送案例

作者头像
苦咖啡
发布2018-04-28 14:28:44
8760
发布2018-04-28 14:28:44
举报
文章被收录于专栏:我的博客我的博客

参考:http://docs.jpush.io/server/php_sdk/ Thinkphp推送类(需要下载vendor)

代码语言:javascript
复制
push()
            ->setPlatform(M\Platform('ios'))
            ->setAudience(M\all)
            ->setNotification(M\notification($message))
//             ->printJSON()
            ->send();
            return $result->json;
        } catch (APIRequestException $e) {//推送失败调试时候可以打开
            //             $br = '\n';
//             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;
            return false;
        } catch (APIConnectionException $e) {
//             $br = "\n";
//             echo 'Push Fail: ' . $br;
//             echo 'Error Message: ' . $e->getMessage() . $br;
//             echo 'IsResponseTimeout: ' . $e->isResponseTimeout . $br;
            return false;
        }
        return false;
    }
    /**
     * 推送信息到指定用户 (备注:一次最多只能推送1000个RegID)
     * @param String $message    消息
     * @param Array  $users    用户编号
     * @param Boolean $all     是否推送该用户所有设备 默认推送所有 否则推送最新的一个 
     * @return boolean
     */
    public static function sendToUser($message, $users, $all = true) {
        if(empty($message) || empty($users) || !is_array($users)) {
            return false;
        }
        $audience = $list =  array();
        $map['user_id'] = array('in', $users);
        if($all) {
            $list = M(self::USER_TABLE)->field(self::USER_REGID_FIELD)->where($map)->select();
        } else {
            $list = M(self::USER_TABLE)->field(self::USER_REGID_FIELD)->where($map)->limit(1)->order(self::USER_TABLE_ORDER)->select();
        }
        if($list) {
            foreach ($list as $v) {
                if(trim($v[self::USER_REGID_FIELD])) {
                    $audience[] = $v[self::USER_REGID_FIELD];
                }
            }
        }
        if(!$audience && $audience[0]) {
            return false;
        }
        return self::sendToRegistrationId($message, $audience);
    }
    /**
     * 推送消息到指定IOS设备 最多一次推送1000
     * 备注参考:http://docs.jpush.io/server/rest_api_v3_push/
     */
    public static function sendToRegistrationId($message,$audience) {
        if(empty($message) || empty($audience) || !is_array($audience)) {
            return false;
        }
        try {
            $client = new JPushClient(self::APP_KEY, self::MASTER_SECRET);
            $result = $client->push()
            ->setPlatform(M\platform('ios'))
            ->setNotification(M\notification($message))
            ->setAudience(M\registration_id($audience))
            //->printJSON()
            ->send();
            return $result->json;
        } catch (APIRequestException $e) {
//             $br = '\n';
//             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;
            return false;
        } catch (APIConnectionException $e) {
//             $br = "\n";
//             echo 'Push Fail: ' . $br;
//             echo 'Error Message: ' . $e->getMessage() . $br;
//             echo 'IsResponseTimeout: ' . $e->isResponseTimeout . $br;
//             return false;
        }
        return false;
    }
    /**
     * 向消息队列压入推送任务 1 推送所有  2推送指定设备  3推送指定用户
     * @param String $message    推送内容
     * @param Int $type          推送类型
     * @param Array $ext         推送用户编号或RegID
     * @return boolean
     */
    public function pushMessage($message, $type = self::SEND_TO_ALL, $ext = array()) {
        if(empty($message) || !in_array($type, array(self::SEND_TO_ALL,self::SEND_TO_REG,self::SEND_TO_USER))) {
            return false;
        }
        try {
            $redis = new Redis;
            $redis->connect('127.0.0.1', 6379);
            $data['message'] = $message;
            $data['type'] = $type;
            $data['ext'] = $ext;
            $pushData = json_encode($data);
            return $redis->lPush(self::REDIS_PUSH_MESSAGE_KEY, $pushData);//队列左边添加元素
        } catch (\Exception $e) {
//             echo $e->getMessage();
            return false;
        }
        return false;
    }
    
}
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2016年1月16日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档