首先进入小米开放平台下载PHP版本的SDK(点我进入下载页),下载后将压缩包内的php→sdk中的所有文件复制到TP5.1项目中extend中的子目录mipush中(mipush是我自己新建的空文件夹,名字随便起)
SDK成功放入项目后我们要在需要使用的地方引入一下autoload.php即可,xmpush中的类都已经配置好了命名空间无需处理。这里推荐使用TP5.1提供的Env获取extend路径后拼接绝对路径的方式引入:
use think\facade\Env;
//mipush是extend下子目录名,和你创建的文件夹名对应起来
include_once(Env::get("extend_path").'mipush\autoload.php');
use xmpush\Builder;
use xmpush\Constants;
use xmpush\Sender;
成功引入后即可直接编写业务逻辑了,这里贴出我的一个示例,一些参数在注释中说明:
public function pushAndroidAllUser($title,$description)
{
$secret = 'XXXXXXXXXX'; //小米开放平台应用对应的secret
$package = 'XXXXXXXXX'; //应用包名,需和小米开放平台对应
Constants::setPackage($package); //设置常量
Constants::setSecret($secret); //设置常量
$sender = new Sender(); //发送类实例化
$message = new Builder(); //信息类实例化
$message->title($title); // 通知栏的title
$message->description($description); // 通知栏的description
$message->passThrough(0); // 这是一条通知栏消息,如果需要透传,把这个参数设置成1,同时去掉title和description两个参数
$message->notifyType(-1); //1:提示音提示 2:震动提示 4:led灯光提示 -1:以上三种效果都有 0:即静默推送
$message->timeToLive(60*60*1000); //消息的生命周期(默认保留2周, 单位: ms)如想尽快推送给联网设备则越短越好
$message->extra(Builder::notifyForeground, 1); // 应用在前台是否展示通知,如果不希望应用在前台时候弹出通知,则设置这个参数为0
$message->extra(Constants::EXTRA_PARAM_NOTIFY_EFFECT,Constants::NOTIFY_LAUNCHER_ACTIVITY); //设置用户点击通知后的事件,此例为点击后启动应用
$message->notifyId(2); // 通知类型。最多支持0-4 5个取值范围,同样的类型的通知会互相覆盖,不同类型可以在通知栏并存
$message->build(); //构建信息体
return json($sender->broadcastAll($message)->getRaw()); //broadcastAll为推送给所有用户,getraw为获取请求结果
}
访问后打印出来的json为:
这里仅以推送给所有用户为例,也可以在手机端为设备设置主题或别名,通过这些方式单推或群推。具体方法和所需参数可以在Sender类中查看。