原创,原载于:https://www.skiy.net/201605064018.html
其实很简单,只需要在将个推的 SDK 解压到application/libraries/Getui/
目录下即可。
然后新建文件application/libraries/Getui.php
。
再将Getui/IGt.Push.php
引入即可。
使用方式和sdk下的demo一样。
新建Getui.php的代码如下方式如下:
require "Getui/IGt.Push.php";
class Getui {}
我扩展封装好的版本如下:
<?php
/**
*
* Getui.php
* @author : Skiychan <dev@skiy.net>
* @link : http://www.zzzzy.com
* @created : 5/4/16
* @modified:
* @version : 0.0.1
*/
require "Getui/IGt.Push.php";
class Getui {
private $_appid = "";
private $_appkey = "";
private $_title = "";
private $_message = "";
public function __construct() {}
/**
* 设置 app 信息
* @param $appid
* @param $appkey
*/
public function setKey($appid, $appkey) {
$this->_appid = $appid;
$this->_appkey = $appkey;
}
/**
* 设置模板类型
* @param $type
* 1.通知透传模板
* 2.通知链接模板
* 3.透传模板
* 4.通知弹框下载模板
*/
public function setTemplate($type) {
switch ($type) {
case 1: //通知透传模板
return $this->IGtNotificationTemplate();
break;
case 2: //通知链接模板
return $this->IGtLinkTemplate();
break;
case 3: //透传模板
return $this->IGtTransmissionTemplate();
break;
case 4: //通知弹框下载模板
return $this->IGtNotyPopLoadTemplate();
break;
default: //通知透传模板
return $this->IGtNotificationTemplate();
}
}
/**
* 设置消息内容
* @param $title
* @param $message
*/
public function setInfo($title, $message) {
$this->_title = $title;
$this->_message = $message;
}
/**
* 个推信息体
* @param string $template 设置推送消息类型
* @param int $pushtype 推送类型 默认1(单个用户),2(多个用户), 3(单个应用下的所有用户)
* @param bool $online 是否离线
* @param int $expire 离线时间
* @param int $worktype 设置是否根据WIFI推送消息
* @return IGtSingleMessage
*/
public function setMessage($template, $pushtype=1, $online=false, $expire=3600*12*1000, $worktype=0) {
switch ($pushtype) {
case 2: //支持对多个用户进行推送,建议为50个用户
$message = new PushMessageToList();
break;
case 3: //对单个应用下的所有用户进行推送,可根据省份,标签,机型过滤推送
$message = new pushMessageToApp();
break;
default: //支持对单个用户进行推送
$message = new IGtSingleMessage();
}
$message->set_isOffline($online); //是否离线
($online == true) && $message->set_offlineExpireTime($expire); //离线时间
$message->set_data($template); //设置推送消息类型
$message->set_PushNetWorkType($worktype); //设置是否根据WIFI推送消息,1为wifi推送,0为不限制推送
return $message;
}
/**
* 接收方
* @param $client_id 设备id
* @return IGtTarget
*/
public function setTarget($client_id, $alias="") {
$target = new IGtTarget();
$target->set_appId($this->_appid);
$target->set_clientId($client_id);
empty($alias) || $target->set_alias($alias);
return $target;
}
/**
* 通知弹框下载功能模板
* @return IGtNotyPopLoadTemplate
*/
public function IGtNotyPopLoadTemplate(){
$template = new IGtNotyPopLoadTemplate();
$template ->set_appId($this->_appid);//应用appid
$template ->set_appkey($this->_appkey);//应用appkey
//通知栏
$template ->set_notyTitle($this->_title);//通知栏标题
$template ->set_notyContent($this->_message);//通知栏内容
$template ->set_notyIcon("");//通知栏logo
$template ->set_isBelled(true);//是否响铃
$template ->set_isVibrationed(true);//是否震动
$template ->set_isCleared(true);//通知栏是否可清除
//弹框
$template ->set_popTitle($this->_title);//弹框标题
$template ->set_popContent($this->_message);//弹框内容
$template ->set_popImage("");//弹框图片
$template ->set_popButton1("下载");//左键
$template ->set_popButton2("取消");//右键
//下载
$template ->set_loadIcon("");//弹框图片
$template ->set_loadTitle($this->_title);
$template ->set_loadUrl("http://192.168.1.181/download/ekong_v2.0.7.apk");
$template ->set_isAutoInstall(false);
$template ->set_isActived(true);
//$template->set_duration(BEGINTIME,ENDTIME); //设置ANDROID客户端在此时间区间内展示消息
return $template;
}
/**
* 通知打开链接功能模板
* @return IGtLinkTemplate
*/
public function IGtLinkTemplate(){
$template = new IGtLinkTemplate();
$template->set_appId($this->_appid);//应用appid
$template->set_appkey($this->_appkey);//应用appkey
$template->set_title($this->_title);//通知栏标题
$template->set_text($this->_message);//通知栏内容
$template ->set_logo("");//通知栏logo
$template ->set_isRing(true);//是否响铃
$template ->set_isVibrate(true);//是否震动
$template ->set_isClearable(true);//通知栏是否可清除
$template ->set_url("http://www.igetui.com/");//打开连接地址
//$template->set_duration(BEGINTIME,ENDTIME); //设置ANDROID客户端在此时间区间内展示消息
//iOS推送需要设置的pushInfo字段
// $apn = new IGtAPNPayload();
// $apn->alertMsg = "alertMsg";
// $apn->badge = 11;
// $apn->actionLocKey = "启动";
// // $apn->category = "ACTIONABLE";
// // $apn->contentAvailable = 1;
// $apn->locKey = "通知栏内容";
// $apn->title = "通知栏标题";
// $apn->titleLocArgs = array("titleLocArgs");
// $apn->titleLocKey = "通知栏标题";
// $apn->body = "body";
// $apn->customMsg = array("payload"=>"payload");
// $apn->launchImage = "launchImage";
// $apn->locArgs = array("locArgs");
//
// $apn->sound=("test1.wav");;
// $template->set_apnInfo($apn);
return $template;
}
/**
* 通知透传功能模板
* @return IGtNotificationTemplate
*/
public function IGtNotificationTemplate(){
$template = new IGtNotificationTemplate();
$template->set_appId($this->_appid);//应用appid
$template->set_appkey($this->_appkey);//应用appkey
$template->set_transmissionType(1);//透传消息类型
$template->set_transmissionContent($this->_message);//透传内容
$template->set_title($this->_title);//通知栏标题
$template->set_text($this->_message);//通知栏内容
//$template->set_logo("https://www.ekong366.com/static/img/index_logo.png");//通知栏logo
$template->set_isRing(true);//是否响铃
$template->set_isVibrate(true);//是否震动
$template->set_isClearable(true);//通知栏是否可清除
//$template->set_duration(BEGINTIME,ENDTIME); //设置ANDROID客户端在此时间区间内展示消息
//iOS推送需要设置的pushInfo字段
// $apn = new IGtAPNPayload();
// $apn->alertMsg = "alertMsg";
// $apn->badge = 11;
// $apn->actionLocKey = "启动";
// // $apn->category = "ACTIONABLE";
// // $apn->contentAvailable = 1;
// $apn->locKey = "通知栏内容";
// $apn->title = "通知栏标题";
// $apn->titleLocArgs = array("titleLocArgs");
// $apn->titleLocKey = "通知栏标题";
// $apn->body = "body";
// $apn->customMsg = array("payload"=>"payload");
// $apn->launchImage = "launchImage";
// $apn->locArgs = array("locArgs");
//
// $apn->sound=("test1.wav");;
// $template->set_apnInfo($apn);
return $template;
}
/**
* 透传功能模板
* @return IGtTransmissionTemplate
* @throws Exception
*/
public function IGtTransmissionTemplate(){
$template = new IGtTransmissionTemplate();
$template->set_appId($this->_appid);//应用appid
$template->set_appkey($this->_appkey);//应用appkey
$template->set_transmissionType(1);//透传消息类型
$template->set_transmissionContent($this->_message);//透传内容
//$template->set_duration(BEGINTIME,ENDTIME); //设置ANDROID客户端在此时间区间内展示消息
//APN简单推送
// $template = new IGtAPNTemplate();
// $apn = new IGtAPNPayload();
// $alertmsg=new SimpleAlertMsg();
// $alertmsg->alertMsg="";
// $apn->alertMsg=$alertmsg;
//// $apn->badge=2;
//// $apn->sound="";
// $apn->add_customMsg("payload","payload");
// $apn->contentAvailable=1;
// $apn->category="ACTIONABLE";
// $template->set_apnInfo($apn);
// $message = new IGtSingleMessage();
//APN高级推送
$apn = new IGtAPNPayload();
$alertmsg=new DictionaryAlertMsg();
$alertmsg->body="body";
$alertmsg->actionLocKey="ActionLockey";
$alertmsg->locKey="LocKey";
$alertmsg->locArgs=array("locargs");
$alertmsg->launchImage="launchimage";
// IOS8.2 支持
$alertmsg->title="Title";
$alertmsg->titleLocKey="TitleLocKey";
$alertmsg->titleLocArgs=array("TitleLocArg");
$apn->alertMsg=$alertmsg;
$apn->badge=7;
$apn->sound="";
$apn->add_customMsg("payload","payload");
$apn->contentAvailable=1;
$apn->category="ACTIONABLE";
$template->set_apnInfo($apn);
return $template;
}
}
网友评论