123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101 |
- <?php
- namespace App\Libs\Push\XMPush;
- /**
- * 文档地址:https://dev.mi.com/console/doc/detail?pId=1783
- * Class MiPushCommon
- * @package App\Libs\Push\XMPush
- */
- class MiPushCommon
- {
- private $_reg_arr = [];
- /**
- * XMPushCommon constructor.
- * @param $package
- * @param $appSecret
- */
- public function __construct($package, $appSecret)
- {
- // 常量设置必须在new Sender()方法之前调用
- Constants::setPackage($package);
- Constants::setSecret($appSecret);
- }
- public function setRegArr($regArr)
- {
- $this->_reg_arr = $regArr;
- }
- /**
- * 发送消息
- * @param $title
- * @param $desc
- * @param $url // 参考 /views/Reader?send_order_id=1643289&bid=vdqY7p15xnZQzK4VzzgmMD6wG2yr8BNX&chapter_id=4774851
- * @return mixed
- */
- public function sendMessage($title, $desc, $url)
- {
- $sender = new Sender();
- $message = $this->buildMessage($title, $desc, $url);
- $result = $sender->sendHybridMessageByRegId($message, $this->_reg_arr)->getRaw();
- $this->logPush(__FUNCTION__, 'result', compact('result'));
- return $result;
- }
- /**
- * 向所有设备发送消息
- * @param $title
- * @param $desc
- * @param $url
- * @return mixed
- */
- public function sendMessageToAll($title, $desc, $url)
- {
- $sender = new Sender();
- $message = $this->buildMessage($title, $desc, $url);
- $result = $sender->broadcastAll($message)->getRaw();
- $this->logPush(__FUNCTION__, 'result', compact('result'));
- return $result;
- }
- /**
- * @param $title
- * @param $desc
- * @param $url
- * @param int $pusType
- * @param string $payload
- * @return Builder
- */
- private function buildMessage($title, $desc, $url, $pusType = 0, $payload = '')
- {
- $message = new Builder();
- $message->title($title); // 通知栏的title
- $message->description($desc); // 通知栏的descption
- $message->passThrough($pusType); // 这是一条通知栏消息,如果需要透传,把这个参数设置成1,同时去掉title和descption两个参数
- $message->notifyType(1);
- $message->extra(Builder::HYBRID_PATH, $url); // 此处设置预定义点击行为,1为打开app
- // $message->extra(Builder::notifyEffect, 2); // 此处设置预定义点击行为,1为打开app 2通知栏点击后打开app的任一Activity
- // $message->extra(Builder::notifyForeground, 1); // 应用在前台是否展示通知,如果不希望应用在前台时候弹出通知,则设置这个参数为0
- $message->extra(Builder::flowControl, 3000); // 设置平滑推送, 推送速度3000每秒(qps=3000)
- $message->notifyId(2); // 通知类型。最多支持0-4 5个取值范围,同样的类型的通知会互相覆盖,不同类型可以在通知栏并存
- $message->build();
- return $message;
- }
- /**
- * @param $className
- * @param $message
- * @param array $data
- */
- private function logPush($className, $message, $data = [])
- {
- var_dump('[' . $className . '] ' . $message, $data);
- myLog('push')->info('[XiaoMi] [' . $className . '] ' . $message, $data);
- }
- }
|