向单个clientid或别名用户推送消息。
注:个推使用clientid来标识每个独立的用户,每一台终端上每一个app拥有一个独立的clientid。
接口名称 | 支持推送类型 | 说明 |
---|---|---|
pushMessageToSingle | 透传(payload)、点击通知启动应用、点击通知打开网页等 | 对单个用户(ClientID)推送 |
正常推送不需要传requestId,如果发生异常重试时将requestId传入,具体用法详见示例代码
pushMessageToSingle($message, $target, $requestId = null)
<?php
//消息推送Demo
header("Content-Type: text/html; charset=utf-8");
require_once(dirname(__FILE__) . '/' . 'IGt.Push.php');
//采用"PHP SDK 快速入门", "第二步 获取访问凭证 "中获得的应用配置
define('APPKEY','');
define('APPID','');
define('MASTERSECRET','');
define('HOST','http://sdk.open.api.igexin.com/apiex.htm');
define('CID','请输入您的CID');
//别名推送方式
//define('Alias','请输入您的Alias');
pushMessageToSingle();
//单推接口案例
function pushMessageToSingle(){
$igt = new IGeTui(HOST,APPKEY,MASTERSECRET);
//消息模版:
// 4.NotyPopLoadTemplate:通知弹框下载功能模板
$template = IGtNotyPopLoadTemplateDemo();
//定义"SingleMessage"
$message = new IGtSingleMessage();
$message->set_isOffline(true);//是否离线
$message->set_offlineExpireTime(3600*12*1000);//离线时间
$message->set_data($template);//设置推送消息类型
//$message->set_PushNetWorkType(0);//设置是否根据WIFI推送消息,2为4G/3G/2G,1为wifi推送,0为不限制推送
//接收方
$target = new IGtTarget();
$target->set_appId(APPID);
$target->set_clientId(CID);
// $target->set_alias(Alias);
try {
$rep = $igt->pushMessageToSingle($message, $target);
var_dump($rep);
echo ("<br><br>");
}catch(RequestException $e){
$requstId =e.getRequestId();
//失败时重发
$rep = $igt->pushMessageToSingle($message, $target,$requstId);
var_dump($rep);
echo ("<br><br>");
}
}
function IGtNotyPopLoadTemplateDemo(){
$template = new IGtNotyPopLoadTemplate();
$template ->set_appId(APPID); //应用appid
$template ->set_appkey(APPKEY); //应用appkey
//通知栏
$template ->set_notyTitle("请填写通知标题"); //通知栏标题
$template ->set_notyContent("请填写通知内容"); //通知栏内容
$template ->set_notyIcon(""); //通知栏logo
$template ->set_isBelled(true); //是否响铃
$template ->set_isVibrationed(true); //是否震动
$template ->set_isCleared(true); //通知栏是否可清除
//弹框
$template ->set_popTitle("弹框标题"); //弹框标题
$template ->set_popContent("弹框内容"); //弹框内容
$template ->set_popImage(""); //弹框图片
$template ->set_popButton1("下载"); //左键
$template ->set_popButton2("取消"); //右键
//下载
$template ->set_loadIcon(""); //弹框图片
$template ->set_loadTitle("请填写下载标题");
$template ->set_loadUrl("请填写下载地址");
$template ->set_isAutoInstall(false);
$template ->set_isActived(true);
//设置通知定时展示时间,结束时间与开始时间相差需大于6分钟,消息推送后,客户端将在指定时间差内展示消息(误差6分钟)
$begin = "2015-02-28 15:26:22";
$end = "2015-02-28 15:31:24";
$template->set_duration($begin,$end);
return $template;
}
?>
字段 | 返回码 |
---|---|
返回值 | 请点击Result返回值 |
客户端展示 | ![]() ![]() |
如果仅对单个用户推送务必使用单推接口,否则会严重影响推送性能,如果对少量甚至几个用户推送同样的消息,建议使用单推实现,性能会更高
接口名称 | 支持推送类型 | 说明 |
---|---|---|
pushMessageToList | 透传(payload)、点击通知启动应用、点击通知打开网页等 | (通过clientid列表)群推,可查看clientid列表中每个用户的在线状态 |
<?php
//消息推送Demo
header("Content-Type: text/html; charset=utf-8");
require_once(dirname(__FILE__) . '/' . 'IGt.Push.php');
//采用"PHP SDK 快速入门", "第二步 获取访问凭证 "中获得的应用配置
define('APPKEY','');
define('APPID','');
define('MASTERSECRET','');
define('HOST','http://sdk.open.api.igexin.com/apiex.htm');
define('CID1','请输入您的CID1');
define('CID2','请输入您的CID2');
//define('Alias1','请输入您的Alias1');
//define('Alias2','请输入您的Alias2');
pushMessageToList();
//多推接口案例
function pushMessageToList(){
putenv("gexin_pushList_needDetails=true");
$igt = new IGeTui(HOST,APPKEY,MASTERSECRET);
//$igt = new IGeTui('',APPKEY,MASTERSECRET);//此方式可通过获取服务端地址列表判断最快域名后进行消息推送,每10分钟检查一次最快域名
//消息模版:
// LinkTemplate:通知打开链接功能模板
$template = IGtLinkTemplateDemo();
//定义"ListMessage"信息体
$message = new IGtListMessage();
$message->set_isOffline(true);//是否离线
$message->set_offlineExpireTime(3600*12*1000);//离线时间
$message->set_data($template);//设置推送消息类型
$message->set_PushNetWorkType(1);//设置是否根据WIFI推送消息,1为wifi推送,0为不限制推送
$contentId = $igt->getContentId($message);
//接收方1
$target1 = new IGtTarget();
$target1->set_appId(APPID);
$target1->set_clientId(CID1);
//$target1->set_alias(Alias1);
//接收方2
$target2 = new IGtTarget();
$target2->set_appId(APPID);
$target2->set_clientId(CID2);
//$target2->set_alias(Alias2);
$targetList[0] = $target1;
$targetList[1] = $target2;
$rep = $igt->pushMessageToList($contentId, $targetList);
var_dump($rep);
echo ("<br><br>");
}
function IGtLinkTemplateDemo(){
$template = new IGtLinkTemplate();
$template ->set_appId(APPID); //应用appid
$template ->set_appkey(APPKEY); //应用appkey
$template ->set_title("请输入通知标题"); //通知栏标题
$template ->set_text("请输入通知内容"); //通知栏内容
$template->set_logo(""); //通知栏logo
$template->set_logoURL(""); //通知栏logo链接
$template ->set_isRing(true); //是否响铃
$template ->set_isVibrate(true); //是否震动
$template ->set_isClearable(true); //通知栏是否可清除
$template ->set_url("http://www.igetui.com/"); //打开连接地址
//设置通知定时展示时间,结束时间与开始时间相差需大于6分钟,消息推送后,客户端将在指定时间差内展示消息(误差6分钟)
$begin = "2015-02-28 15:26:22";
$end = "2015-02-28 15:31:24";
$template->set_duration($begin,$end);
// iOS推送需要设置的pushInfo字段(老方法不再介意使用)
//$template ->set_pushInfo($actionLocKey,$badge,$message,$sound,$payload,$locKey,$locArgs,$launchImage);
//$template ->set_pushInfo("",2,"","","","","","");
//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;
}
?>
字段 | 返回码 |
---|---|
返回值 | 请点击Result返回值 |
客户端展示 | ![]() ![]() |
注:此接口有频次控制,申请修改请联系邮箱:kegf@getui.com 。
接口名称 | 支持推送类型 | 说明 |
---|---|---|
pushMessageToApp | 透传(payload)、点击通知启动应用、点击通知打开网页等 | (通过应用AppID)群推,给所有符合条件的客户端用户推送 |
<?php
//消息推送Demo
header("Content-Type: text/html; charset=utf-8");
require_once(dirname(__FILE__) . '/' . 'IGt.Push.php');
define('APPKEY','请输入您的APPKEY');
define('APPID','请输入您的APPID');
define('MASTERSECRET','请输入您的MASTERSECRET');
define('HOST','http://sdk.open.api.igexin.com/apiex.htm');
define('CID','请输入您的CID');
pushMessageToApp();
function pushMessageToApp(){
$igt = new IGeTui(HOST,APPKEY,MASTERSECRET);
$template = IGtLinkTemplateDemo();
//个推信息体
//基于应用消息体
$message = new IGtAppMessage();
$message->set_isOffline(true);
$message->set_offlineExpireTime(10 * 60 * 1000);//离线时间单位为毫秒,例,两个小时离线为3600*1000*2
$message->set_data($template);
$appIdList=array(APPID);
$phoneTypeList=array('ANDROID');
$provinceList=array('浙江');
$tagList=array('haha');
$cdt = new AppConditions();
$cdt->addCondition(AppConditions::PHONE_TYPE, $phoneTypeList);
$cdt->addCondition(AppConditions::REGION, $provinceList);
$cdt->addCondition(AppConditions::TAG, $tagList);
$message->set_appIdList($appIdList);
$message->set_conditions($cdt);
$rep = $igt->pushMessageToApp($message);
var_dump($rep);
echo ("<br><br>");
}
function IGtLinkTemplateDemo(){
$template = new IGtLinkTemplate();
$template ->set_appId(APPID);//应用appid
$template ->set_appkey(APPKEY);//应用appkey
$template ->set_title("请输入通知标题");//通知栏标题
$template ->set_text("请输入通知内容");//通知栏内容
$template ->set_logo("");//通知栏logo
$template ->set_isRing(true);//是否响铃
$template ->set_isVibrate(true);//是否震动
$template ->set_isClearable(true);//通知栏是否可清除
$template ->set_url("http://www.getui.com/");//打开连接地址
//$template->set_notifyStyle(0);
//$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;
}
?>
城市级别的推送基于个推原先的按省份推送的功能之上,使用同一个方法,这样可以减少开发者使用过程中的代码变更。省略具体的推送代码,下面展示相关变动的代码。
原来的省份推送是这样使用的:
$cdt = new AppConditions();
$provinceList=array('浙江','上海','北京');
$cdt->addCondition(AppConditions::REGION, $provinceList);
现在按城市推送的使用方法如下:
$cdt = new AppConditions();
$provinceList=array('浙江','上海','北京');
array_push($myarray, "33010000"); //杭州市
array_push($myarray, "51010000"); //成都市
$cdt->addCondition(AppConditions::REGION, $provinceList);
只需要在原有的列表里加入城市编号即可。
注1:编号对应表如region_code.data文件。
注2:列表里的城市仅支持编号表示,建议省份也用编号表示。为了兼容老用户,省份列表里的汉字仍能继续使用。
字段 | 返回码 |
---|---|
返回值 | 请点击Result返回值 |
客户端展示 | ![]() |
注:此接口有频次控制,申请修改请联系邮箱:kegf@getui.com 。
仅在wifi条件下才展示通知内容,充分帮用户节省流量。
在message中设置setPushNetWorkType为1,推送时只有通过wifi登录在线的用户才收到消息,手机网络登录用户的消息进离线,等该用户wifi登录后才获取该条离线消息。
Tosingle(对单个用户推送消息)、tolist(对指定用户列表推送消息)、toapp(对指定应用群推消息)三个接口都支持wifi推送。
//设置是否根据WIFI推送消息,1为wifi推送,0为不限制推送
$message->set_PushNetWorkType(0);
function pushMessageToSingle(){
$igt = new IGeTui(HOST,APPKEY,MASTERSECRET);
$template = IGtTransmissionTemplateDemo();
//个推信息体
$message = new IGtSingleMessage();
$message->set_data($template);//设置推送消息类型
$message->set_PushNetWorkType(0);//设置是否根据WIFI推送消息,1为wifi推送,0为不限制推送
}
以上示例代码仅部分展示,若要查询完整demo请看单个用户推送示例
定速推送旨在解决个推群推系统在全量推送时速度过快,导致部分客户服务器连接压力过大的问题。提供接口设置让用户按自身情况控制推送速度。
全量推送时希望能控制推送速度不要太快,缓减服务器连接压力,可设置定速推送。如果未设置则按默认推送速度发送。
在message中设置setSpeed为100,则全量送时个推控制下发速度在100条/秒左右。
只有toapp(对指定应用群推消息)支持定速推送。
$message->set_speed(100);
function pushMessageToApp(){
$igt = new IGeTui(HOST,APPKEY,MASTERSECRET);
$template = IGtLinkTemplateDemo();
//个推信息体
$message = new IGtAppMessage();
$message->set_data($template);//设置推送消息类型
$message->set_speed(100);定速推送
}
以上示例代码仅部分展示,若要查询完整demo请看单个用户推送示例
对单个指定应用的所有用户群发推送消息。该消息可以在用户设定的时间点进行推送。
注:此接口需要申请开通,申请邮箱:kegf@getui.com 。
<?php
//消息推送Demo
header("Content-Type: text/html; charset=utf-8");
require_once(dirname(__FILE__) . '/' . 'IGt.Push.php');
define('APPKEY','请输入您的APPKEY');
define('APPID','请输入您的APPID');
define('MASTERSECRET','请输入您的MASTERSECRET');
define('HOST','http://sdk.open.api.igexin.com/apiex.htm');
define('CID','请输入您的CID');
pushMessageToApp();
function pushMessageToApp(){
$igt = new IGeTui(HOST,APPKEY,MASTERSECRET);
$template = IGtLinkTemplateDemo();
//个推信息体
//基于应用消息体
$message = new IGtAppMessage();
$message->set_isOffline(true);
$message->set_offlineExpireTime(10 * 60 * 1000);//离线时间单位为毫秒,例,两个小时离线为3600*1000*2
$message->setPushTime(201807311050);//在用户设定的时间点进行推送,格式为年月日时分
$message->set_data($template);
$appIdList=array(APPID);
$phoneTypeList=array('ANDROID');
$provinceList=array('浙江');
$tagList=array('haha');
$cdt = new AppConditions();
$cdt->addCondition(AppConditions::PHONE_TYPE, $phoneTypeList);
$cdt->addCondition(AppConditions::REGION, $provinceList);
$cdt->addCondition(AppConditions::TAG, $tagList);
$message->set_appIdList($appIdList);
$message->set_conditions($cdt);
$rep = $igt->pushMessageToApp($message);
var_dump($rep);
echo ("<br><br>");
}
function IGtLinkTemplateDemo(){
$template = new IGtLinkTemplate();
$template ->set_appId(APPID);//应用appid
$template ->set_appkey(APPKEY);//应用appkey
$template ->set_title("请输入通知标题");//通知栏标题
$template ->set_text("请输入通知内容");//通知栏内容
$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客户端在此时间区间内展示消息
return $template;
}
?>
该接口主要用来返回 已提交的定时任务的相关信息。
getScheduleTask($taskId,$appId)
参数名 | 类型 | 必需 | 默认值 | 参数描述 |
---|---|---|---|---|
taskId | String | 是 | 无 | 任务ID |
appId | String | 是 | 无 | 应用ID |
function getScheduleTaskDemo(){
$igt = new IGeTui(HOST,APPKEY,MASTERSECRET);
$ret = $igt->getScheduleTask(TASKID,APPID);
var_dump($ret);
}
返回的主要参数如下:
参数名称 | 参数含义 |
---|---|
pushContent | 推送类容(transmission的内容) |
pushTime | 推送时间 |
creatTime | 任务创建时间 |
sendResult | 任务状态 |
用来删除还未下发的任务
delScheduleTask($taskId,$appId)
参数名 | 类型 | 必需 | 默认值 | 参数描述 |
---|---|---|---|---|
$taskId | String | 是 | 无 | 任务ID |
appId | String | 是 | 无 | 应用ID |
function delScheduleTaskDemo(){
$igt = new IGeTui(HOST,APPKEY,MASTERSECRET);
$ret = $igt->delScheduleTask(TASKID,APPID);
var_dump($ret);
}
需要补充说明的是:
一个应用同时下发了n个推送任务,为了更好地跟踪这n个任务的推送效果,可以把他们组成一个任务组,在查询数据时,只需要输入该任务组名即可同时查到n个任务的数据结果。
命名同一个应用的不同taskid为同一个任务组名,任务组名由第三方填写。tolist(对指定用户列表推送消息)、toapp(对指定应用群推消息)接口支持该功能。
function toListGroupName($host, $appkey, $mastersecret, $message, $taskGroupName) {
$igt = new IGeTui($host, $appkey, $mastersecret);
$contentId = $igt->getContentId($message,"toList任务别名功能");
}
function toAppGroupName($host, $appkey, $mastersecret, $message, $taskGroupName) {
$igt = new IGeTui($host, $appkey, $mastersecret);
$igt->pushMessageToApp($message, $taskGroupName);
}
应用群推对于复杂的查询条件新增加的交并补功能,以对应查询语义中的与或非的关系
// AppConditions类的实例方法
AppConditions addCondition($key, $values, $optType)
参数名 | 类型 | 必需 | 默认值 | 参数描述 |
---|---|---|---|---|
$key | String | 是 | 无 | 查询条件键(phoneType 手机类型,region 省市,tag 用户标签) |
$values | List |
是 | 无 | 查询条件值列表 |
$optType | OptType | 否 | OptType._NOT_ | 条件类型(OptType._OR_ 或, OptType._AND_ 与, OptType._NOT_ 非) |
<?php
header("Content-Type: text/html; charset=utf-8");
require_once(dirname(__FILE__) . '/' . 'IGt.Push.php');
require_once(dirname(__FILE__) . '/' . 'igetui/IGt.AppMessage.php');
require_once(dirname(__FILE__) . '/' . 'igetui/IGt.APNPayload.php');
require_once(dirname(__FILE__) . '/' . 'igetui/template/IGt.BaseTemplate.php');
require_once(dirname(__FILE__) . '/' . 'IGt.Batch.php');
require_once(dirname(__FILE__) . '/' . 'igetui/utils/AppConditions.php');
//http的域名
define('HOST','');
//定义常量, appId、appKey、masterSecret 采用本文档 "第二步 获取访问凭证 "中获得的应用配置
define('APPKEY','');
define('APPID','');
define('MASTERSECRET','');
pushMessageToApp();
function pushMessageToApp(){
$igt = new IGeTui(HOST,APPKEY,MASTERSECRET);
$template = IGtLinkTemplateDemo();
//个推信息体
//基于应用消息体
$message = new IGtAppMessage();
$message->set_isOffline(true);
$message->set_offlineExpireTime(10 * 60 * 1000);//离线时间单位为毫秒,例,两个小时离线为3600*1000*2
$message->set_data($template);
$appIdList=array(APPID);
$phoneTypeList=array('ANDROID');
$provinceList=array('浙江');
$tagList=array('haha');
$cdt = new AppConditions();
$cdt->addCondition(AppConditions::PHONE_TYPE, $phoneTypeList, OptType::_OR_);
$cdt->addCondition(AppConditions::REGION, $provinceList,OptType::_AND_);
$cdt->addCondition(AppConditions::TAG, $tagList, OptType::_OR_);
$message->set_appIdList($appIdList);
$message->set_conditions($cdt);
$rep = $igt->pushMessageToApp($message);
var_dump($rep);
}
function IGtLinkTemplateDemo(){
$template = new IGtLinkTemplate();
$template ->set_appId(APPID);//应用appid
$template ->set_appkey(APPKEY);//应用appkey
$template ->set_title("请输入通知标题");//通知栏标题
$template ->set_text("请输入通知内容");//通知栏内容
$template ->set_logo("");//通知栏logo
$template ->set_isRing(true);//是否响铃
$template ->set_isVibrate(true);//是否震动
$template ->set_isClearable(true);//通知栏是否可清除
$template ->set_url("http://www.igetui.com/");//打开连接地址
return $template;
}
?>
用于一次创建提交多个单推任务。
当单推任务较多时,推荐使用该接口,可以减少与服务端的交互次数。
接口定义 | 说明 |
---|---|
add($message, $target) | 追加单推消息 |
submit() | 提交消息 |
retry() | 重新提交 |
推送参数message和target与对单个用户推送消息使用的的参数相同
批量单推每个单推消息的返回结果在submit返回值的info字段中,具体为加入时的序号和对应的返回结果。返回值详情请点击Result返回值
<?php
//批量单推Demo
header("Content-Type: text/html; charset=utf-8");
require_once(dirname(__FILE__) . '/' . 'IGt.Push.php');
define('APPKEY','请输入您的APPKEY');
define('APPID','请输入您的APPID');
define('MASTERSECRET','请输入您的MASTERSECRET');
define('HOST','http://sdk.open.api.igexin.com/apiex.htm');
define('CID1','请输入您的CID1');
define('CID2','请输入您的CID2');
pushMessageToSingleBatch();
function pushMessageToSingleBatch()
{
$igt = new IGeTui(HOST, APPKEY, MASTERSECRET);
$batch = new IGtBatch(APPKEY, $igt);
$batch->setApiUrl(HOST);
//$igt->connect();
//消息模版:
// 1.TransmissionTemplate:透传功能模板
// 2.LinkTemplate:通知打开链接功能模板
// 3.NotificationTemplate:通知透传功能模板
// 4.NotyPopLoadTemplate:通知弹框下载功能模板
//$template = IGtNotyPopLoadTemplateDemo();
$templateLink = IGtLinkTemplateDemo();
$templateNoti = IGtNotificationTemplateDemo();
//$template = IGtTransmissionTemplateDemo();
//个推信息体
$messageLink = new IGtSingleMessage();
$messageLink->set_isOffline(true);//是否离线
$messageLink->set_offlineExpireTime(12 * 1000 * 3600);//离线时间
$messageLink->set_data($templateLink);//设置推送消息类型
//$messageLink->set_PushNetWorkType(1);//设置是否根据WIFI推送消息,1为wifi推送,0为不限制推送
$targetLink = new IGtTarget();
$targetLink->set_appId(APPID);
$targetLink->set_clientId(CID1);
$batch->add($messageLink, $targetLink);
//个推信息体
$messageNoti = new IGtSingleMessage();
$messageNoti->set_isOffline(true);//是否离线
$messageNoti->set_offlineExpireTime(12 * 1000 * 3600);//离线时间
$messageNoti->set_data($templateNoti);//设置推送消息类型
//$messageNoti->set_PushNetWorkType(1);//设置是否根据WIFI推送消息,1为wifi推送,0为不限制推送
$targetNoti = new IGtTarget();
$targetNoti->set_appId(APPID);
$targetNoti->set_clientId(CID2);
$batch->add($messageNoti, $targetNoti);
try {
$rep = $batch->submit();
var_dump($rep);
echo("<br><br>");
}catch(Exception $e){
$rep=$batch->retry();
var_dump($rep);
echo ("<br><br>");
}
}
function IGtLinkTemplateDemo(){
$template = new IGtLinkTemplate();
$template ->set_appId(APPID);//应用appid
$template ->set_appkey(APPKEY);//应用appkey
$template ->set_title("请输入通知标题");//通知栏标题
$template ->set_text("请输入通知内容");//通知栏内容
$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客户端在此时间区间内展示消息
return $template;
}
function IGtNotificationTemplateDemo(){
$template = new IGtNotificationTemplate();
$template->set_appId(APPID);//应用appid
$template->set_appkey(APPKEY);//应用appkey
$template->set_transmissionType(1);//透传消息类型
$template->set_transmissionContent("测试离线");//透传内容
$template->set_title("请填写通知标题");//通知栏标题
$template->set_text("请填写通知内容");//通知栏内容
$template->set_logo("http://wwww.igetui.com/logo.png");//通知栏logo
$template->set_isRing(true);//是否响铃
$template->set_isVibrate(true);//是否震动
$template->set_isClearable(true);//通知栏是否可清除
//$template->set_duration(BEGINTIME,ENDTIME); //设置ANDROID客户端在此时间区间内展示消息
return $template;
}
?>
针对推送,在消息有效时间内,对未收到推送消息的用户进行短信补发,既提升消息触达又节省成本
进入个推开发者中心后,个推消息推送模块,注册app,获取 appId、appKey 和 masterSecret 参数(妥善保管)。
进行短信补量推送前,必须在个推申请开通短信补量并报备短信模板。短信模板审核通过后,才能进行短信补量推送。短信模板报备审核的日期为1-2个工作日。
模板ID | 模板内容 | 相关参数解释 |
---|---|---|
10000 | 示例【***】尊敬的${name},你的余额还剩${money}, 请尽快充值。 | 变量格式:${name},。 |
进行短信补量推送前,需要调用接口绑定cid与pn。推送时获取pn,进行消息下发。其中文档中所说的pn 都是指md5之后的手机号。
个推推送消息下发时,对于在线用户,直接通过sdk通道下发,对于离线用户消息将存储在离线空间,等到用户设定的短信补发时间,将开始对已绑定pn的用户进行短信补发。 对于在补发前,经过个推通道成功下发消息的用户,将不再进行短信补发。
绑定cid和pn的关系,用户短信补量根据cid查询pn下发短信。
<?php
//批量单推Demo
header("Content-Type: text/html; charset=utf-8");
require_once(dirname(__FILE__) . '/' . 'IGt.Push.php');
define('APPKEY','请输入您的APPKEY');
define('APPID','请输入您的APPID');
define('MASTERSECRET','请输入您的MASTERSECRET');
define('HOST','http://sdk.open.api.igexin.com/apiex.htm');
define('CID','请输入您的CID1');
define('PN','10');
bindCidPnDemo();
function bindCidPnDemo(){
$igt = new IGeTui(HOST,APPKEY,MASTERSECRET);
$params = array();
$params[CID] = md5(PN);
$params["f7e0ef389ac6133c88aedbd66b44a4e1"] = PN;
$ret = $igt->bindCidPn(appId,$params);
var_dump($ret);
}
?>
参数 | 类型 | 是否必填 | 最大长度 | 描述 |
---|---|---|---|---|
appId | String | 是 | 32 | 个推分配给开发者的ID |
cidAndPn | Array | 是 | 50 | key是cid value是pnmd5【32位小写】 |
参数 | 类型 | 是否必填 | 描述 | 示例值 | 其他 |
---|---|---|---|---|---|
result | String | 是 | 响应码 | 0 | 详细code码含义。参加文档最后【附录一】 |
batchRet | String | 否 | 返回每个cid的绑定结果 | [{"code":"0","cid":"xxxx"}] |
1)目前接口最多支持一次绑定50个cid与pn的对应关系。绑定后会返回每个cid的绑定结果。
2)同个应用下pn和cid是一对一的关系,否则原关系会被替换
用户通过接口传递cid列表, 可以批量解绑与之相对应的pn的关系。
<?php
//批量单推Demo
header("Content-Type: text/html; charset=utf-8");
require_once(dirname(__FILE__) . '/' . 'IGt.Push.php');
define('APPKEY','请输入您的APPKEY');
define('APPID','请输入您的APPID');
define('MASTERSECRET','请输入您的MASTERSECRET');
define('HOST','http://sdk.open.api.igexin.com/apiex.htm');
define('CID1','请输入您的CID1');
define('CID2','请输入您的CID2');
unbindCidPnDemo();
function unbindCidPnDemo(){
$igt = new IGeTui(HOST,APPKEY,MASTERSECRET);
$cids=array(CID1,CID2);
$ret = $igt->unbindCidPn(APPID,$cids);
var_dump($ret);
}
参数 | 类型 | 是否必填 | 最大长度 | 描述 |
---|---|---|---|---|
appId | String | 是 | 32 | 开发者ID |
cids | Array | 是 | 50 | 客户端身份ID列表 |
参数 | 类型 | 是否必填 | 描述 | 示例值 | 其他 |
---|---|---|---|---|---|
result | String | 是 | 响应码 | 0 | 详细code码含义。参加文档最后【附录一】 |
batchRet | String | 否 | 返回每个cid的绑定结果 | [{"code":"0","cid":"xxxx"}] |
1)目前接口最多支持一次解绑50个cid
用户通过接口传递cid列表, 可以查询与之相对的pn,接口会批量返回绑定关系。
<?php
//批量单推Demo
header("Content-Type: text/html; charset=utf-8");
require_once(dirname(__FILE__) . '/' . 'IGt.Push.php');
define('APPKEY','请输入您的APPKEY');
define('APPID','请输入您的APPID');
define('MASTERSECRET','请输入您的MASTERSECRET');
define('HOST','http://sdk.open.api.igexin.com/apiex.htm');
define('CID1','请输入您的CID1');
define('CID2','请输入您的CID2');
queryCidPnDemo()
function queryCidPnDemo(){
$igt = new IGeTui(HOST,APPKEY,MASTERSECRET);
$cidList=array(CID1,CID2);
$ret = $igt->queryCidPn(APPID,$cidList);
var_dump($ret);
}
?>
参数 | 类型 | 是否必填 | 最大长度 | 描述 |
---|---|---|---|---|
appId | String | 是 | 32 | 开发者ID |
cidList | Array | 是 | 50 | 客户端身份ID列表 |
参数 | 类型 | 是否必填 | 描述 | 示例值 | 其他 |
---|---|---|---|---|---|
result | String | 是 | 响应码 | 0 | 详细code码含义。参加文档最后【附录一】 |
batchRet | String | 否 | 返回每个cid的绑定结果 | [{"code":"0","cid":"xxxx"}] |
1)目前接口最多支持一次解绑50个cid
接口定义 | 说明 |
---|---|
pushMessageToApp | 对应用的所有用户群发推送消息 |
pushMessageToSingle | 向单个clientid或别名用户推送消息 |
pushMessageToList | 上传clientid或别名列表,对列表中所有clientid或别名用户进行消息推送 |
注:详细的推送逻辑参考个推官网。这里只是补充短信推送的逻辑 参考地址:http://docs.getui.com/getui/server/php/push// |
消息模板 | 中文含义 | 是否支持短信模板 | 其他 |
---|---|---|---|
Notification | 通知模板 | 是 | 消息模板具体含义参考:http://docs.getui.com/getui/server/php/template/ |
LinkTemplate | 网页模板 | 是 | |
NotyPopLoadTemplate | 下载模板 | 是 | |
TransmissionTemplate | 透传模板 | 是 |
成员名或方法名 | 类型 | 是否必填 | 描述 | 示例值 | 其他 |
---|---|---|---|---|---|
setSmsTemplateId() | String | 是 | 推送的短信模板ID(短信模板说明) | $smsMessage->setSmsTemplateId("xxxx"); | 具体使用,参考下面的代码中LinkTemplate中使用短信模板的示例。其他模板如此相同 |
setSmsContent() | map | 否 | 推送的短信模板中占位符的内容。 | $smsContent = array(); $smsContent["name"] = "zhangsan"; $smsContent["money"] = "0000"; $smsMessage->smsContent($smsContent); | |
setOfflineSendtime() | long | 是 | 推送后多久进行短信补发(单位:ms) | $smsMessage->setOfflineSendtime(100000L); | |
$smsMessage->setIsApplink() | boolean | 否 | 推送的短信模板中是否选用APPLink进行推送。 | $smsMessage->setIsApplink(true); | |
$smsMessage->setUrl(); | String | 否 | 推送的短信模板中的APPLink链接地址。 | $smsMessage->setUrl("www.baidu.com"); | |
$smsMessage->setPayload(); | String | 否 | 推送的短信模板中的APPLink自定义字段。 | $smsMessage->setPayload("自定义"); |
function IGtLinkTemplateDemo(){
$template = new IGtLinkTemplate();
$template ->set_appId(APPID);//应用appid
$template ->set_appkey(APPKEY);//应用appkey
$template ->set_title("请输入通知标题");//通知栏标题
$template ->set_text("请输入通知内容");//通知栏内容
$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客户端在此时间区间内展示消息
//短信消息类
$smsMessage = new SmsMessage();
$smsContent = array();
$smsContent["name"] = "zhangsan";
$smsContent["money"] = "00000";
$smsMessage->setSmsTemplateId("");//短信模板ID 需要在个推报备开通 才可使用
$smsMessage->setOfflineSendtime(1000);//多久后进行离线补发的时间
//注意当使用AppLink时,smsContent不能传值url
$smsMessage->smsContent($smsContent);
//推送的短信模板中是否选用APPLink进行推送。
$smsMessage->setIsApplink(true);
//推送的短信模板中的APPLink链接地址
$smsMessage->setUrl("www.baidu.com");
//推送的短信模板中的APPLink自定义字段。
$smsMessage->setPayload("自定义");
$template->setSmsInfo($smsMessage);
return $template;
}
require_once(dirname(__FILE__) . '/' . 'IGt.Push.php');
define('APPKEY','请输入您的APPKEY');
define('APPID','请输入您的APPID');
define('MASTERSECRET','请输入您的MASTERSECRET');
define('HOST','http://sdk.open.api.igexin.com/apiex.htm');
define('CID','请输入您的CID');
pushMessageToApp();
function pushMessageToApp(){
$igt = new IGeTui(HOST,APPKEY,MASTERSECRET);
$template = IGtLinkTemplateDemo();
//个推信息体
//基于应用消息体
$message = new IGtAppMessage();
$message->set_isOffline(true);
$message->set_offlineExpireTime(10 * 60 * 1000);//离线时间单位为毫秒,例,两个小时离线为3600*1000*2
$message->set_data($template);
message->setPushTime(201807311050);
$appIdList=array(APPID);
$phoneTypeList=array('ANDROID');
$provinceList=array('浙江');
$tagList=array('haha');
$cdt = new AppConditions();
$cdt->addCondition(AppConditions::PHONE_TYPE, $phoneTypeList);
$cdt->addCondition(AppConditions::REGION, $provinceList);
$cdt->addCondition(AppConditions::TAG, $tagList);
$message->set_appIdList($appIdList);
$message->set_conditions($cdt);
$rep = $igt->pushMessageToApp($message);
var_dump($rep);
echo ("<br><br>");
}
//单推接口案例
require_once(dirname(__FILE__) . '/' . 'IGt.Push.php');
define('APPKEY','请输入您的APPKEY');
define('APPID','请输入您的APPID');
define('MASTERSECRET','请输入您的MASTERSECRET');
define('HOST','http://sdk.open.api.igexin.com/apiex.htm');
define('CID','请输入您的CID');
pushMessageToSingle()
function pushMessageToSingle(){
$igt = new IGeTui(HOST,APPKEY,MASTERSECRET);
//消息模版:
// 1.TransmissionTemplate:透传功能模板
// 2.LinkTemplate:通知打开链接功能模板
// 3.NotificationTemplate:通知透传功能模板
// 4.NotyPopLoadTemplate:通知弹框下载功能模板
$template = IGtLinkTemplateDemo();
$message = new IGtSingleMessage();
$message->set_isOffline(true);//是否离线
$message->set_offlineExpireTime(3600*12*1000);//离线时间
$message->set_data($template);//设置推送消息类型
// $message->set_PushNetWorkType(0);//设置是否根据WIFI推送消息,1为wifi推送,0为不限制推送
//接收方
$target = new IGtTarget();
$target->set_appId(APPID);
$target->set_clientId(CID);
// $target->set_alias(Alias);
try {
$rep = $igt->pushMessageToSingle($message, $target);
var_dump($rep);
echo ("<br><br>");
}catch(RequestException $e){
$requstId =$e->getRequestId();
$rep = $igt->pushMessageToSingle($message, $target,$requstId);
var_dump($rep);
echo ("<br><br>");
}
}
function IGtLinkTemplateDemo(){
$template = new IGtLinkTemplate();
$template ->set_appId(APPID);//应用appid
$template ->set_appkey(APPKEY);//应用appkey
$template ->set_title("请输入通知标题");//通知栏标题
$template ->set_text("请输入通知内容");//通知栏内容
$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客户端在此时间区间内展示消息
//短信消息类
$smsMessage = new SmsMessage();
$smsContent = array();
$smsContent["name"] = "zhangsan";
$smsContent["money"] = "00000";
$smsMessage->setSmsTemplateId("");//短信模板ID 需要在个推报备开通 才可使用
$smsMessage->setOfflineSendtime(1000);//多久后进行离线补发的时间
//注意当使用AppLink时,smsContent不能传值url
$smsMessage->smsContent($smsContent);
//推送的短信模板中是否选用APPLink进行推送。
$smsMessage->setIsApplink(true);
//推送的短信模板中的APPLink链接地址
$smsMessage->setUrl("www.baidu.com");
//推送的短信模板中的APPLink自定义字段。
$smsMessage->setPayload("自定义");
$template->setSmsInfo($smsMessage);
return $template;
}
require_once(dirname(__FILE__) . '/' . 'IGt.Push.php');
define('APPKEY','请输入您的APPKEY');
define('APPID','请输入您的APPID');
define('MASTERSECRET','请输入您的MASTERSECRET');
define('HOST','http://sdk.open.api.igexin.com/apiex.htm');
define('CID','请输入您的CID');
function pushMessageToList()
{
putenv("gexin_pushList_needDetails=true");//是否开启needDetails
putenv("gexin_pushList_needAsync=true");//是否开启needAsync
$igt = new IGeTui(HOST, APPKEY, MASTERSECRET);
//消息模版:
// 1.TransmissionTemplate:透传功能模板
// 2.LinkTemplate:通知打开链接功能模板
// 3.NotificationTemplate:通知透传功能模板
// 4.NotyPopLoadTemplate:通知弹框下载功能模板
$template = IGtLinkTemplateDemo();
//个推信息体
$message = new IGtListMessage();
$message->set_isOffline(true);//是否离线
$message->set_offlineExpireTime(3600 * 12 * 1000);//离线时间
$message->set_data($template);//设置推送消息类型
// $message->set_PushNetWorkType(1); //设置是否根据WIFI推送消息,1为wifi推送,0为不限制推送
// $contentId = $igt->getContentId($message);
$contentId = $igt->getContentId($message,"toList任务别名功能"); //根据TaskId设置组名,支持下划线,中文,英文,数字
//接收方1
$target1 = new IGtTarget();
$target1->set_appId(APPID);
$target1->set_clientId(CID);
// $target1->set_alias(Alias);
$targetList[] = $target1;
$rep = $igt->pushMessageToList($contentId, $targetList);
var_dump($rep);
echo ("<br><br>");
}
function IGtLinkTemplateDemo(){
$template = new IGtLinkTemplate();
$template ->set_appId(APPID);//应用appid
$template ->set_appkey(APPKEY);//应用appkey
$template ->set_title("请输入通知标题");//通知栏标题
$template ->set_text("请输入通知内容");//通知栏内容
$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客户端在此时间区间内展示消息
//短信消息类
$smsMessage = new SmsMessage();
$smsContent = array();
$smsContent["name"] = "zhangsan";
$smsContent["money"] = "00000";
$smsMessage->setSmsTemplateId("");//短信模板ID 需要在个推报备开通 才可使用
$smsMessage->setOfflineSendtime(1000);//多久后进行离线补发的时间
//注意当使用AppLink时,smsContent不能传值url
$smsMessage->smsContent($smsContent);
//推送的短信模板中是否选用APPLink进行推送。
$smsMessage->setIsApplink(true);
//推送的短信模板中的APPLink链接地址
$smsMessage->setUrl("www.baidu.com");
//推送的短信模板中的APPLink自定义字段。
$smsMessage->setPayload("自定义");
$template->setSmsInfo($smsMessage);
return $template;
}
参数 | 类型 | 是否必填 | 描述 | 示例值 |
---|---|---|---|---|
result | String | 是 | 响应码 | result=ok |
contentId | String | 否 | 任务ID | contentId=xxxxxxx |
smsResult | String | 否 | 短信提交结果 | smsResult=accept |
smsResultMsg | String | 否 | 短信提交失败结果 | smsResultMsg=模板不存在 |
结果 | 示例 | 说明 |
---|---|---|
短信补量提交成功 | {result=ok, contentId=xxxxx, smsResult=accept} | 消息推送成功,短信提交成功。 |
短信补量提交失败 | {result=ok, smsResultMsg=模板不存在, contentId=xxxxxxx, smsResult=error} | 消息推送成功,短信提交失败。 |
1)短信参数填错,将不会进行短信补量,但是通过个推的sdk推送的消息会正常下发
2)短信补量的开始时间必须在个推通道的离线时间内,且不大于服务端限制值(目前设置是3天)。
3)短信补发的整个内容的总长度不能超过70字。
状态码 | 含义 |
---|---|
0 | 成功 |
1 | cid不存在 |
2 | cid与appid不匹配 |
3 | 不能覆写低级别的PN绑定 |
4 | 应用下该PN已经绑定更活跃的cid |
5 | cid为空 |
6 | pn为空 |
7 | 该cid没有绑定PN值 |
8 | 其他原因导致的失败 |
正确返回 | 返回码 | 结果说明 |
---|---|---|
successed_online | 用户在线,消息在线下发 | |
successed_offline | 用户离线,消息存入离线系统 | |
Ok | 发送成功 | |
details | 返回用户状态的详细信息 | |
contentId | 任务ID(当result值为ok时,有此字段) |
错误返回 | 返回码 | 结果说明 |
---|---|---|
Error | 请求信息填写有误 | |
action_error | 未找到对应的action动作 | |
appkey_error | Appkey填写错误 | |
domain_error | 填写的域名错误或者无法解析 | |
sign_error | Appkey与ClientId不匹配,鉴权失败 | |
AppidNoMatchAppKey | appid和鉴权的appkey不匹配 | |
PushMsgToListOrAppTimesOverLimit | 群推次数超过最大值 | |
PushTotalNumOverLimit | 推送个数总数超过最大值 | |
AppIdNoUsers | 该AppId下的用户总数为0 | |
SendError | 消息推送发送错误 | |
SynSendError | 报文发送错误 | |
flow_exceeded | 接口消息推送流量已超限 | |
TargetListIsNullOrSizeIs0 | 推送target列表为空 | |
PushTotalNumOverLimit | 推送消息个数总数超限 | |
TokenMD5NoUsers | target列表没有有效的clientID | |
NullMsgCommon | 未找到contentId对应的任务 | |
TaskIdHasBeanCanceled | 任务已经被取消 | |
AppidError | clientid绑定的appid与推送的appid不符 | |
successed_ignore | 无效用户,消息丢弃 | |
TokenMD5Error | clientID填写有误 | |
SendError | 消息发送错误 | |
AppidNoAppSecret | appid未找到对应的appSecret | |
OtherError | 未知错误,无法判定错误类型 |