# 五、thinkphp集成小米推送
第一步,从小米开发者官网下载推送DEMO
第二部,解压DEMO,然后有以下文件
```
android_example.php
autoload.php
ios_example.php
xmpush[核心文件]
```
复制SDK文件夹,至:ThinkPHP\\Library\\Vendor
修改所有xmpush文件夹内的类的命名空间为: xmpush
然后再SDK文件夹内,新建一个push类
代码如下
```
<?php
namespace sdk;
use xmpush\Builder;
use xmpush\Sender;
use xmpush\Constants;
use xmpush\TargetedMessage;
use xmpush\IOSBuilder;
use xmpush\Stats;
use xmpush\Tracer;
include_once(dirname(__FILE__) . '/autoload.php');
class push
{
/*
* $style int 推送方式,1,安卓,2,苹果,3,安卓推送打开应用内的某个activity
* $aliasList array,格式为array("1,2,3,4,5,6"),也就是推送的目标别名
* $titlse String 推送标题
* $conent String 推送内容
* $payload String 暂时不用
* 注:因为写的比较仓促,可以将 3 内的跳转到指定activity的参数放在参数列表,以方便调用
* 也可以将if else 改为switch,此类为举例,完全可以自己构思这个类,我只是举个例子
* */
public function pushs($style,$aliasList,$titlse,$conent,$payload="")
{
$id = (int)$style;
$desc = $conent;
if($id == 1){
$secret = '填写参数';
$package = '填写参数';
Constants::setPackage($package);
Constants::setSecret($secret);
$title = $titlse;
$sender = new Sender();
$message = new Builder();
$message->title($title);
$message->description($desc);
$message->passThrough(0);
$message->payload($payload); // 对于预定义点击行为,payload会通过点击进入的界面的intent中的extra字段获取,而不会调用到onReceiveMessage方法。
$message->extra(Builder::notifyEffect, 1); // 此处设置预定义点击行为,1为打开app
$message->extra(Builder::notifyForeground, 1);
$message->notifyId(0);
$message->build();
$targetMessage2 = new TargetedMessage();
$targetMessage2->setTarget('tag', TargetedMessage::TARGET_TYPE_ALIAS);
$targetMessage2->setMessage($message);
$targetMessageList = array( $targetMessage2);
}else if($id == 2){
$secret = '填写参数';
$bundleId = '填写参数';
Constants::setBundleId($bundleId);
Constants::setSecret($secret);
$message = new IOSBuilder();
$message->description($desc);
$message->soundUrl('default');
$message->badge('4');
$message->extra('payload', $payload);
$message->build();
$sender = new Sender();
}else if($id == 3){
$secret = '填写参数';
$package = '填写参数';
Constants::setPackage($package);
Constants::setSecret($secret);
$title = $titlse;
$sender = new Sender();
$message = new Builder();
$message->title($title);
$message->description($desc);
$message->passThrough(0);
$message->payload($payload); // 对于预定义点击行为,payload会通过点击进入的界面的intent中的extra字段获取,而不会调用到onReceiveMessage方法。
$message->extra(Builder::notifyEffect, 2); // 此处设置预定义点击行为,1为打开app,2为打开应用内的activity
$message->extra(Builder::notifyForeground, 1);
$message->extra(Builder::intentUri, "intent:#Intent;component=包名/完整的activity路径;end"); //打开应用内activity必须添加此参数
$message->notifyId(0);
$message->build();
$targetMessage2 = new TargetedMessage();
$targetMessage2->setTarget('tag', TargetedMessage::TARGET_TYPE_ALIAS);
$targetMessage2->setMessage($message);
$targetMessageList = array( $targetMessage2);
}
print_r($sender->sendToAliases($message,$aliasList)->getRaw());
}
}
?>
```
然后呢,在方法内调用:
```
vendor('sdk.push');
$push = new \sdk\push();
$user = array("1,2");
$push->pushs(3,$user,"在游戏中消费100元","获得了奖励注意查收");
//至此,融合完成,调用即可进行推送,注意配置文件的写入
```
- 一、php封装pdo操作类
- 二、PHP 3des 加密类
- 三、PHP 调用webserver服务器详解
- 四、命名空间的USE 和 require include require_once include_once详解
- 五、thinkphp集成小米推送
- 六、PHP实现上传文件进度条
- 七、PHP根据地址新建路径下载地址文件
- 八、PHP使用AJAX上传图片即时预览
- 九、强制CDN更新静态资源文件
- 十、THINKPHP集成支付宝APP支付并提供接口
- 十一、THINKPHP集成支付宝APP支付 错误详解 支付宝APP支付 显示 系统繁忙 请稍后再试 ALI40247 dengg
- 十二、PHP生成二维码图片或带logo的二维码
- 十三、蛋疼的bom头 恶心了我好久[json无法解析]
- 十四、php windows安装imagick扩展
- 十五、windows下Composer的安装与使用
- 十六、[2017]最新支付宝wap支付集成THINKPHP3.2.3 demo
- 十七、VUE.JS 安装与发布
- 十八、PHP 执行 linux 命令行 操作示例
- 十九、关于CSP 减少XSS攻击的介绍