个推开发者文档超详细注释

												**个推开发者文档超详细**

在开发推送时,用到个推,发现官方的dome很不友好,用起来让人很费解,所以花了点时间做整理和超详细的注释,废话不多说,下面直接上代码

<?php
/**
 * Created by PhpStorm.
 * User: 个推技术团队
 * Arrange-Notes: 寻梦(e-mail:feiyudewo@126.com)
 * Date: 2019-6-25
 * Time: 上午10:56
 */

设置代理
//putenv("gexin_http_proxy_ip=192.168.44.129");
//putenv("gexin_http_proxy_port=808");
//putenv("gexin_http_proxy_username=user");
//putenv("gexin_http_proxy_passwd=123456");

define('APPKEY', '');
define('APPID', '');
define('MASTERSECRET', '');
define('HOST', '');

//define('CID', '');
//define('DT', '');
//define('CID1', '');
//define('DT1', '');
//define('groupName', '');
//define('PN','');
//define('Badge', '+1');
//define("TASKID", "OSA-0731_RGyUZj0gYEAC51o1EgbTz8");
//define("ALIAS", "ALIAS");

/**
 * 为单个用户绑定别名
 * @param string $alias 别名 字母(区分大小写)、数字、下划线、汉字
 * @param string $cid 用户cid
 * @return mixed|null
 * @throws Exception
 */
function bindAlias($alias,$cid)
{
    $igt = new \IGeTui(HOST, APPKEY, MASTERSECRET);
    $ret = $igt->bindAlias(APPID, $alias, $cid);
    return $ret;
}

/**
 * 根据别名获取clientid信息
 * @param string $alias 用户别名
 * @return mixed|null
 */
function queryCidByAlias($alias)
{
    $igt = new \IGeTui(HOST, APPKEY, MASTERSECRET);
    $ret = $igt->queryClientId(APPID, $alias);
    return $ret;
}

/**
 * 通过clientid获取别名信息
 * @param string $cid 客户端cid
 * @return mixed|null
 */
function queryAliasByCID($cid)
{
    $igt = new \IGeTui(HOST, APPKEY, MASTERSECRET);
    $ret = $igt->queryAlias(APPID, $cid);
    return $ret;
}

/**
 * 单个clientid和别名解绑
 * @param string $alias 别名
 * @param string $cid 客服端cid
 * @return mixed|null
 */
function unbindAlias($alias,$cid)
{
    $igt = new \IGeTui(HOST, APPKEY, MASTERSECRET);
    $ret = $igt->unBindAlias(APPID, $alias, $cid);
    return $ret;
}

/**
 * 绑定别名的所有clientid解绑
 * @param string $alias 别名
 * @return mixed|null
 */
function unbindAliasAll($alias)
{
    $igt = new \IGeTui(HOST, APPKEY, MASTERSECRET);
    $ret = $igt->unBindAliasAll(APPID, $alias);
    return $ret;
}

/**
 * 大数据综合分析用户得到的标签:即用户画像
 * @return mixed|null
 */
function getPersonaTags()
{
    $igt = new \IGeTui(HOST, APPKEY, MASTERSECRET);
    $ret = $igt->getPersonaTags(APPID);
    return $ret;
}

/**
 * 通过标签获取用户总数
 * @param array $tagList 标签列表  $tagList = array("English", "龙卷风");
 * @return mixed|null
 * @throws Exception
 */
function getUserCountByTags($tagList)
{
    $igt = new \IGeTui(HOST, APPKEY, MASTERSECRET);
    $ret = $igt->getUserCountByTags(APPID, $tagList);
    return $ret;
}

/**
 * 定时任务查询接口 已提交的定时任务的相关信息。
 * @param string $taskid 任务ID
 * @return mixed|null
 */
function getScheduleTask($taskid)
{
    $igt = new \IGeTui(HOST, APPKEY, MASTERSECRET);
    $ret = $igt->getScheduleTask($taskid, APPID);
    return $ret;
}

/**
 * 定时任务删除接口 距离下发还有一分钟的任务 将无法删除 也即 停止任务下发
 * @param string $taskid 任务ID
 * @return mixed|null
 */
function delScheduleTask($taskid)
{
    $igt = new \IGeTui(HOST, APPKEY, MASTERSECRET);
    $ret = $igt->delScheduleTask($taskid, APPID);
    return $ret;
}

/**
 * 通过分组名称获取推送结果
 * @return mixed|null
 */
function getPushResultByGroupName($groupName = 'toAppPush')
{
    $igt = new \IGeTui(HOST, APPKEY, MASTERSECRET);
    $ret = $igt->getPushResultByGroupName(APPID,$groupName);
    return $ret;
}

/**
 * 获取24小时在线用户数
 * @return array $ret
 */
function getLast24HoursOnlineUserStatistics()
{
    $igt = new \IGeTui(HOST, APPKEY, MASTERSECRET);
    $ret = $igt->getLast24HoursOnlineUserStatistics(APPID);
    return $ret;
}

/**
 * 将用户从黑名单移除
 * @param array $cidList 需要移除黑名单的cid列表
 * @return mixed|null
 */
function restoreCidListFromBlk($cidList)
{
    $igt = new \IGeTui(HOST, APPKEY, MASTERSECRET);
    $ret = $igt->restoreCidListFromBlk(APPID, $cidList);
    return $ret;
}

/**
 * 添加用户到黑名单
 * @param array $cidList 需要加入黑名单的cid列表
 * @return mixed|null
 */
function addCidListToBlk($cidList)
{
    $igt = new \IGeTui(HOST, APPKEY, MASTERSECRET);
    $ret = $igt->addCidListToBlk(APPID, $cidList);
    return $ret;
}

/**
 * 提示数量徽章设置 根据 clientid 设置 Badge
 * @param array $cidList cid列表
 * @param string $badeg 用户应用icon上显示的数字 在原有badge上+N;2.在原有badge上-N;3.直接设置badge(数字,会覆盖原有的badge值)
 * @return mixed|null
 */
function setBadgeForCID($cidList,$badeg = '+1')
{
    $igt = new \IGeTui(HOST, APPKEY, MASTERSECRET);
    $ret = $igt->setBadgeForCID($badeg,APPID,$cidList);
    return $ret;
}

/**
 * 根据 deviceToken 设置 Badge
 * @param array dtList iOS用户DeviceToken列表
 * @param string $badeg 用户应用icon上显示的数字 在原有badge上+N;2.在原有badge上-N;3.直接设置badge(数字,会覆盖原有的badge值)
 * @return mixed|null
 */
function setBadgeForDeviceToken($dtList,$badeg = '+1')
{
    $igt = new \IGeTui(HOST, APPKEY, MASTERSECRET);
    $ret = $igt->setBadgeForDeviceToken($badeg, APPID, $dtList);
    return $ret;
}

/**
 * 把用户手机号和cid绑定关系
 * @param array $prams key是cid value是手机号 ['f7e0ef389ac6133c88aedbd66b44a4e1'=>'183836666666'] 一次最多支持50个
 * @return mixed|null|array
 */
function bindCidPn($prams=[])
{
    $igt = new \IGeTui(HOST, APPKEY, MASTERSECRET);
    foreach ($prams as &$val){
        $val = md5($val);
    }
    $ret = $igt->bindCidPn(APPID, $prams);
    return $ret;
}

/**
 * cid与pn解绑接口
 * @param array $cids cid列表
 * @return array
 */
function unbindCidPn($cids)
{
    $igt = new \IGeTui(HOST, APPKEY, MASTERSECRET);
    $ret = $igt->unbindCidPn(APPID, $cids);
    return $ret;
}

/**
 * cid与pn解绑接口
 * @param array $cidList cid列表
 * @return mixed|null
 */
function queryCidPn($cidList)
{
    $igt = new \IGeTui(HOST, APPKEY, MASTERSECRET);
    $ret = $igt->queryCidPn(APPID, $cidList);
    return $ret;
}

/**
 * 停止发送短信
 * @param string $taskId 任务id
 * @return mixed|null
 */
function stopSendSms($taskId = '')
{
    $igt = new \IGeTui(HOST, APPKEY, MASTERSECRET);
    $ret = $igt->stopSendSms(APPID, $taskId);
    return $ret;
}

/**
 * 获取推送结果
 * @param string $taskId 任务id
 * @return mixed|string “{“taskId”:”OSA-0820_uQ7gevLuGS7Odz8FS2ZSB9”,”result”:”ok”,”msgTotal”:59,”msgProcess”:0}”
 */
function getPushMessageResult($taskId='')
{
    $igt = new \IGeTui(HOST, APPKEY, MASTERSECRET);
    $ret = $igt->getPushResult($taskId);
    return $ret;
}

/**
 * 获取某个应用单日的用户数据(用户数据包括:新增用户数,累计注册用户总数,在线峰值,日联网用户数)(目前只支持查询1天前的数据)
 * @param string $date 日期 "20140807"
 * @return mixed|null
 * @throws Exception
 */
function queryAppUserDataByDate($date){
    //    putenv("gexin_default_domainurl=http://183.129.161.174:8006/apiex.htm"); //设置系统变量
    $igt = new \IGeTui(HOST, APPKEY, MASTERSECRET);
    $ret = $igt->queryAppUserDataByDate(APPID,$date);
    return $ret;
}
/**
 * 获取某个应用单日的推送数据(推送数据包括:发送总数,在线发送数,接收数,展示数,点击数)(目前只支持查询1天前的数据)
 * @param string $date 日期 "20140807"
 * @return mixed|null
 * @throws Exception
 */
function queryAppPushDataByDate($date){
    //    putenv("gexin_default_domainurl=http://183.129.161.174:8006/apiex.htm"); //设置系统变量
    $igt = new \IGeTui(HOST, APPKEY, MASTERSECRET);
    $ret = $igt->queryAppPushDataByDate(APPID, "20180724");
    return $ret;
}

/**
 * 获取用户状态查询
 * @param $cid
 * @return mixed|null
 */
function getUserStatus($cid)
{
    $igt = new \IGeTui(HOST, APPKEY, MASTERSECRET);
    $ret = $igt->getClientIdStatus(APPID,$cid);
    return $ret;
}

/**
 * 推送任务停止
 * @param string $taskId 任务id
 * @return bool
 */
function stoptask($taskId)
{
    $igt = new \IGeTui(HOST, APPKEY, MASTERSECRET);
    $rep = $igt->stop($taskId);
    return $rep;
}

/**
 * 通过服务端设置ClientId的标签
 * @param string $cid ClientId
 * @param array $tagList 标签列表属性  array('中文','English')
 * @return mixed|null
 */
function setTag($cid,$tagList)
{
    $igt = new \IGeTui(HOST, APPKEY, MASTERSECRET);
    $rep = $igt->setClientTag(APPID,$cid, $tagList);
    return $rep;
}

/**
 * 获取指定用户的tag属性
 * @param string $cid
 * @return mixed|null
 */
function getUserTags($cid)
{
    $igt = new \IGeTui(HOST, APPKEY, MASTERSECRET);
    $rep = $igt->getUserTags(APPID, $cid);
    return $rep;
}

/**
 * 对单个用户推送消息
 * @param string $cid 用户端cid
 * @param object $template 消息模版 TransmissionTemplate:透传功能模板,LinkTemplate:通知打开链接功能模板, NotificationTemplate:通知透传功能模板,NotyPopLoadTemplate:通知弹框下载功能模板
 * @param string $alias 用户端别名 和cid 不能同时为空
 * @param string $pushTime 指定时间推送 不指定时间可为空
 * @param bool $Offline 是否离线 true 离线推送  fales 只推在线用户
 * @param int $offlineTime 过多久该消息离线失效(单位毫秒)支持1-72小时*3600000秒,默认1小时
 * @param int $PushNetWorkType  客服端联网方式 0:联网方式不限; 1:仅wifi; 2:仅4G/3G/2G
 * @return array
 */
function pushMessageToSingle($template,$cid,$alias = '',$pushTime='',$Offline = true,$offlineTime = 3600000,$PushNetWorkType = 0)
{
    $igt = new \IGeTui(HOST, APPKEY, MASTERSECRET);
    //个推信息体 定义"SingleMessage"
    $message = new \IGtSingleMessage();
    $message->set_isOffline($Offline);                          //是否离线
    $message->set_offlineExpireTime($offlineTime);              //离线时间
    $message->set_data($template);                              //设置推送消息模板类型
    $message->set_PushNetWorkType($PushNetWorkType);            //设置是否根据WIFI推送消息,1为wifi推送,0为不限制推送
    if($pushTime){
        $message->setPushTime($pushTime);                       //定时推送 201807311050 在用户设定的时间点进行推送,格式为年月日时分
    }
    //接收方
    $target = new \IGtTarget();
    $target->set_appId(APPID);                                  //设置APPID
    $target->set_clientId($cid);                                //设置要推送的用户的cid或别名
    if(empty($cid) && !empty($alias)){
        $target->set_alias($alias);                             //设置要推送的用户的cid或别名
    }
    try {
        $rep = $igt->pushMessageToSingle($message, $target);
        return $rep;
    } catch (\RequestException $e) {
        //失败时重发
        $requstId = $e->getRequestId();
        $rep = $igt->pushMessageToSingle($message, $target, $requstId);
        return $rep;
    }
}
/**
 * 批量单推
 * @param object $template 需要推送的类型 TransmissionTemplate:透传功能模板;LinkTemplate:通知打开链接功能模板;NotificationTemplate:通知透传功能模板;NotyPopLoadTemplate:通知弹框下载功能模板
 * @param array $pushArray 要推送的用户组 [['cid/alias'=>cid/alias],['cid/alias'=>cid/alias],....]
 * @param string $pushTime 指定时间推送 不指定时间可为空
 * @param bool $isOffline  是否离线
 * @param int $offlineExpireTime 离线时间单位毫秒
 * @param int $WorkType 设置是否根据WIFI推送消息,1为wifi推送,0为不限制推送
 * @return mixed
 * @throws Exception
 */
function pushMessageToSingleBatch($template,$pushArray,$pushTime='',$isOffline = true,$offlineExpireTime=3600000,$WorkType=0){
    $igt = new \IGeTui(HOST, APPKEY, MASTERSECRET);
    $batch = new \IGtBatch(APPKEY, $igt);
    $batch->setApiUrl(HOST);
//    $igt->connect();
    //个推信息体
    $messageLink = new \IGtSingleMessage();
    $messageLink->set_isOffline($isOffline);                   //是否离线
    $messageLink->set_offlineExpireTime($offlineExpireTime);   //离线时间
    $messageLink->set_data($template);                         //设置推送消息模板类型
    $messageLink->set_PushNetWorkType($WorkType);              //设置是否根据WIFI推送消息,1为wifi推送,0为不限制推送
    if($pushTime){
        $messageLink->setPushTime($pushTime);                  //定时推送 201807311050 在用户设定的时间点进行推送,格式为年月日时分
    }
    //接收方
    $targetLink = new \IGtTarget();
    $targetLink->set_appId(APPID);                             //设置APPID
    foreach ($pushArray as $avl){                              //设置要推送的用户的cid或别名  ['cid/alias'=>cid/alias]
        if(isset($avl['cid'])){
            $targetLink->set_clientId($avl['cid']);
        }elseif (isset($avl['alias'])){
            $targetLink->set_alias($avl['alias']);
        }
        $batch->add($messageLink, $targetLink);                //添加推送
    }
    try {
        $rep = $batch->submit();
        return $rep;
    }catch(Exception $e){
        //如果失败,重新推送
        $rep = $batch->retry();
        return $rep;
    }
}

/**
 * 多推接口
 * @param object $template 需要推送的类型 TransmissionTemplate:透传功能模板;LinkTemplate:通知打开链接功能模板;NotificationTemplate:通知透传功能模板;NotyPopLoadTemplate:通知弹框下载功能模板
 * @param array $pushArray 要推送的用户组
 * @param string $pushTime 指定时间推送 不指定时间可为空
 * @param bool $isOffline  是否离线
 * @param int $offlineExpireTime  离线时间单位毫秒
 * @param int $WorkType 设置是否根据WIFI推送消息,1为wifi推送,0为不限制推送
 * @return array
 * @throws Exception
 */
function pushMessageToList($template,$pushArray,$pushTime='',$isOffline=true,$offlineExpireTime=3600000,$WorkType=0){
    putenv("gexin_pushList_needDetails=true");
    $igt = new \IGeTui(HOST,APPKEY,MASTERSECRET);
    //$igt = new IGeTui('',APPKEY,MASTERSECRET);            //此方式可通过获取服务端地址列表判断最快域名后进行消息推送,每10分钟检查一次最快域名

    //定义"ListMessage"信息体
    $message = new \IGtListMessage();
    $message->set_isOffline($isOffline);                    //是否离线
    $message->set_offlineExpireTime($offlineExpireTime);    //离线时间
    $message->set_data($template);                          //设置推送消息类型
    $message->set_PushNetWorkType($WorkType);               //设置是否根据WIFI推送消息,1为wifi推送,0为不限制推送
    if($pushTime){
        $message->setPushTime($pushTime);                  //定时推送 201807311050 在用户设定的时间点进行推送,格式为年月日时分
    }
    $contentId = $igt->getContentId($message);

    //接收方
    $targetList = [];
    $target = new \IGtTarget();
    $target->set_appId(APPID);                             //设置APPID
    foreach ($pushArray as $avl){                          //设置要推送的用户的cid或别名  ['cid/alias'=>cid/alias]
        if(isset($avl['cid'])){
            $target->set_clientId($avl['cid']);
        }elseif (isset($avl['alias'])){
            $target->set_alias($avl['alias']);
        }
        $targetList[] =  $target;
    }
    $rep = $igt->pushMessageToList($contentId, $targetList);
    return $rep;
}
/**
 * 群推接口案例
 * @param object $template 需要推送的类型 TransmissionTemplate:透传功能模板;LinkTemplate:通知打开链接功能模板;NotificationTemplate:通知透传功能模板;NotyPopLoadTemplate:通知弹框下载功能模板
 * @param array $appIdList 设置要推送的APPID列表 [APPID1,APPID2]
 * @param array $phoneTypeList 设置需要推送的手机系统类型 ["ANDROID", "IOS"]
 * @param array $provinceList  设置需要推送省份 ["浙江", "上海","北京"] 推介使用城市编码代替【"33010000","51010000"】
 * @param array $tagList       自定义的标签列表 ['开心','快乐']
 * @param string $pushTime 指定时间推送 不指定时间可为空
 * @param bool $isOffline      是否离线
 * @param int $offlineExpireTime 离线时间单位为毫秒,例,两个小时离线为3600*1000*2
 * @return mixed|null
 */
function pushMessageToApp($template,$appIdList=[APPID],$phoneTypeList=['ANDROID'],$provinceList=['浙江'],$tagList=[],$pushTime='',$isOffline=true,$offlineExpireTime=3600000){
    $igt = new \IGeTui(HOST,APPKEY,MASTERSECRET);

    //个推信息体
    $message = new \IGtAppMessage();
    $message->set_isOffline($isOffline);                    //是否离线
    $message->set_offlineExpireTime($offlineExpireTime);    //离线时间单位为毫秒,例,两个小时离线为3600*1000*2
    $message->set_data($template);                          //设置推送消息类型
    if($pushTime){
        $message->setPushTime($pushTime);                   //定时推送 201807311050 在用户设定的时间点进行推送,格式为年月日时分
    }
    //设置筛选信息
    $cdt = new \AppConditions();
    $cdt->addCondition(\AppConditions::PHONE_TYPE, $phoneTypeList);  //设置需要推送的手机系统类型 ["ANDROID", "IOS"]
    $cdt->addCondition(\AppConditions::REGION, $provinceList);       //设置需要推送省份 ["浙江", "上海","北京"]
    $cdt->addCondition(\AppConditions::TAG, $tagList);               //自定义的标签列表

    $message->set_appIdList($appIdList);                            //设置要推送的APPID列表
    $message->set_conditions($cdt);
    $rep = $igt->pushMessageToApp($message);
    return $rep;
}
/**
 * 标签推送接口
 * @param object $template 需要推送的类型 TransmissionTemplate:透传功能模板;LinkTemplate:通知打开链接功能模板;NotificationTemplate:通知透传功能模板;NotyPopLoadTemplate:通知弹框下载功能模板
 * @param string $tag 设置要推送的标签  '男性'
 * @param array $appIdList 设置要推送的APPID列表
 * @param bool $isOffline 是否离线
 * @param int $offlineExpireTime 离线时间单位为毫秒,例,两个小时离线为3600*1000*2
 * @return mixed|null
 */
function pushMessageByTag($template,$tag,$appIdList = array(APPID),$pushTime='',$isOffline=true,$offlineExpireTime=3600000)
{
    $igt = new \IGeTui(HOST, APPKEY, MASTERSECRET);

    //个推信息体
    $message = new \IGtTagMessage();
    $message->set_isOffline($isOffline);                                  //是否离线
    $message->set_offlineExpireTime($offlineExpireTime);                  //离线时间单位为毫秒,例,两个小时离线为3600*1000*2
    $message->set_data($template);                                        //设置推送消息类型
    $message->set_tag($tag);                                              //设置要推送的标签
    $message->set_appIdList($appIdList);                                  //设置要推送的APPID列表
    if($pushTime){
        $message->setPushTime($pushTime);                                 //定时推送 201807311050 在用户设定的时间点进行推送,格式为年月日时分
    }
    $rep = $igt->pushTagMessage($message);
    return $rep;
}
/**
 * 点击通知打开应用 在通知栏显示一条含图标、标题等的通知,用户点击后激活您的应用
 * @param string $count 透传内容 2048中/英字符
 * @param string $title 通知标题 40中/英字符
 * @param string $text 通知内容 600中/英字符
 * @param string $logo 通知的图标,包含后缀名(需要在客户端开发时嵌入),如“push.png” 	40中/英字符
 * @param string $logourl 通知的图标url地址 100中/英字符 与 logo 可以二选一
 * @param int $transmissionType 收到消息是否立即启动应用:1为立即启动,2则广播等待客户端自启动
 * @param object|null $smsMessage 如果需要在未发送成功时补发短信 就设置短信配置信息     SmsTemplate()
 * @param string $begdatetime 消息展示开始时间(格式yyyy-MM-dd HH:mm:ss)
 * @param string $enddatetime 消息展示结束时间(格式yyyy-MM-dd HH:mm:ss)
 * @param bool $isRing 收到通知是否响铃:true响铃,false不响铃
 * @param bool $isVibrate 收到通知是否振动:true振动,false不振动
 * @param bool $isClearable 通知是否可清除:true可清除,false不可清除
 * @param int $style 通知栏消息布局样式(0 系统样式 1 个推样式) 默认为0
 * @return IGtNotificationTemplate
 * @throws Exception
 */
function IGtNotificationTemplateFun($count,$title,$text,$logo = '',$logourl = '',$transmissionType = 1,$smsMessage=null,$begdatetime='',$enddatetime='',$isRing=true,$isVibrate=true,$isClearable=true,$style=0){
    $template =  new \IGtNotificationTemplate();
    $template->set_appId(APPID);                             //应用appid
    $template->set_appkey(APPKEY);                           //应用appkey
    $template->set_transmissionType($transmissionType);      //透传消息类型
    $template->set_transmissionContent($count);              //透传内容
    $template->set_title($title);                            //通知栏标题
    $template->set_text($text);                              //通知栏内容
    $template->set_logo($logo);                              //通知栏logo
    $template->set_logoURL($logourl);                        //通知栏logo链接
    $template->set_isRing($isRing);                          //是否响铃
    $template->set_isVibrate($isVibrate);                    //是否震动
    $template->set_isClearable($isClearable);                //通知栏是否可清除
    $template->set_notifyStyle($style);                      //通知栏消息布局样式(0 系统样式 1 个推样式) 默认为0
    if($begdatetime && $enddatetime){
        $template->set_duration($begdatetime,$enddatetime);  //设置ANDROID客户端在此时间区间内展示消息
    }
    if($smsMessage){
        $template->setSmsInfo($smsMessage);                  //如果需要在未发送成功时补发短信 就设置短信配置信息
    }
    return $template;
}

/**
 * 点击通知打开网页模板 在通知栏显示一条含图标、标题等的通知,用户点击后可打开您指定的网页
 * @param string $title 40中/英字符	通知标题
 * @param string $text 600中/英字符	通知栏内容
 * @param string $url 200中/英字符 点击通知后打开的网页地址
 * @param string $logo 通知的图标,包含后缀名(需要在客户端开发时嵌入),如“push.png” 	40中/英字符
 * @param string $logourl 通知的图标url地址 100中/英字符 与 logo 可以二选一
 * @param bool $isRing 收到通知是否响铃:true响铃,false不响铃
 * @param bool $isVibrate 收到通知是否振动:true振动,false不振动
 * @param bool $isClearable 通知是否可清除:true可清除,false不可清除
 * @param string $begdatetime 消息展示开始时间(格式yyyy-MM-dd HH:mm:ss)
 * @param string $enddatetime 消息展示结束时间(格式yyyy-MM-dd HH:mm:ss)
 * @param int $style 通知栏消息布局样式(0 系统样式 1 个推样式) 默认为0
 * @param object|null $smsMessage 如果需要在未发送成功时补发短信 就设置短信配置信息     SmsTemplate()
 * @return IGtLinkTemplate
 * @throws Exception
 */
function IGtLinkTemplateFun($title,$text,$url,$logo='',$logourl='',$smsMessage=null,$isRing=true,$isVibrate=true,$isClearable=true,$begdatetime='',$enddatetime='',$style=0)
{
    $template = new \IGtLinkTemplate();
    $template->set_appId(APPID);                            //应用appid
    $template->set_appkey(APPKEY);                          //应用appkey
    $template->set_title($title);                           //通知栏标题
    $template->set_text($text);                             //通知栏内容
    $template->set_logo($logo);                             //通知栏logo
    $template->set_logoURL($logourl);                       //通知栏logo链接
    $template->set_isRing($isRing);                         //是否响铃
    $template->set_isVibrate($isVibrate);                   //是否震动
    $template->set_isClearable($isClearable);               //通知栏是否可清除
    $template->set_url($url);                               //打开连接地址
    $template->set_notifyStyle($style);                     //通知栏消息布局样式(0 系统样式 1 个推样式) 默认为0
    if($begdatetime && $enddatetime){
        $template->set_duration($begdatetime,$enddatetime); //设置ANDROID客户端在此时间区间内展示消息
    }
    if($smsMessage){
        $template->setSmsInfo($smsMessage);                 //如果需要在未发送成功时补发短信 就设置短信配置信息
    }
    return $template;
}
/**
 * 点击通知弹框下载模板
 * @param string $title 40中/英字符 通知栏标题 本地或URL 与客服端开发对接(需要在客户端开发时嵌入)
 * @param string $text  600中/英字符	通知栏内容
 * @param string $popTitle 40中/英字符 弹出框标题
 * @param string $popContent 600中/英字符	弹出框内容
 * @param string $popImage 200中/英字符 弹出框图标 可以是URL或本地
 * @param string $loadTitle 40中/英字符 下载标题
 * @param string $loadIcon 40中/英字符 是 下载图标(本地的则需要加file://网络图标则直接输入网络url地址)
 * @param string $loadUrl 200中/英字符 下载地址
 * @param string $logo 40中/英字符 通知栏图标
 * @param object|null $smsMessage 如果需要在未发送成功时补发短信 就设置短信配置信息     SmsTemplate()
 * @param array $but 4中/英字符	弹出框左/右边按钮名称 $but=['left'=>'下载','reght'=>'取消']
 * @param bool $isAutoInstall 是否自动安装(默认否)
 * @param bool $isActived 安装完成后是否自动启动应用程序(默认否)
 * @param bool $isRing 收到通知是否响铃:true响铃,false不响铃
 * @param bool $isVibrate 收到通知是否振动:true振动,false不振动
 * @param bool $isClearable 通知是否可清除:true可清除,false不可清除
 * @param string $begdatetime 消息展示开始时间(格式yyyy-MM-dd HH:mm:ss)
 * @param string $enddatetime 消息展示结束时间(格式yyyy-MM-dd HH:mm:ss)
 * @param int $style 通知栏消息布局样式(0 系统样式 1 个推样式) 默认为0
 * @return IGtNotyPopLoadTemplate
 * @throws Exception
 */
function IGtNotyPopLoadTemplateFun($title,$text,$popTitle,$popContent,$popImage,$loadTitle,$loadIcon,$loadUrl,$logo='',$smsMessage=null,$but=['left'=>'下载','reght'=>'取消'],$isAutoInstall=false,$isActived=true,$isRing=true,$isVibrate=true,$isClearable=true,$begdatetime='',$enddatetime='',$style=0)
{
    $template = new \IGtNotyPopLoadTemplate();
    $template->set_appId(APPID);                                    //应用appid
    $template->set_appkey(APPKEY);                                  //应用appkey
    //通知栏
    $template->set_notyTitle($title);                               //通知栏标题
    $template->set_notyContent($text);                              //通知栏内容
    $template->set_notyIcon($logo);                                 //通知栏logo
    $template->set_isBelled($isRing);                               //是否响铃
    $template->set_isVibrationed($isVibrate);                       //是否震动
    $template->set_isCleared($isClearable);                         //通知栏是否可清除
    //弹框
    $template ->set_popTitle($popTitle);                            //弹框标题
    $template ->set_popContent($popContent);                        //弹框内容
    $template ->set_popImage($popImage);                            //弹框图片
    $template ->set_popButton1($but['left']);                       //左键
    $template ->set_popButton2($but['reght']);                      //右键
    //下载
    $template ->set_loadIcon($loadIcon);                            //下载图标
    $template ->set_loadTitle($loadTitle);                          //下载标题
    $template ->set_loadUrl($loadUrl);                              //下载地址
    $template ->set_isAutoInstall($isAutoInstall);                  //是否走动安装
    $template ->set_isActived($isActived);                          //是否自动启动
    $template->set_notifyStyle($style);                             //通知栏消息布局样式(0 系统样式 1 个推样式) 默认为0
    if($begdatetime && $enddatetime){
        $template->set_duration($begdatetime,$enddatetime);         //设置ANDROID客户端在此时间区间内展示消息
    }
    if($smsMessage){
        $template->setSmsInfo($smsMessage);                         //如果需要在未发送成功时补发短信 就设置短信配置信息
    }
    return $template;
}

/**
 * 普通透传(payload)数据经SDK传给您的客户端,由您写代码决定如何处理展现给用户
 * @param string $count 2048中/英字符 透传内容,不支持转义字符
 * @param int $transmissionType 收到消息是否立即启动应用,1为立即启动,2则广播等待客户端自启动
 * @param string $begdatetime 消息展示开始时间(格式yyyy-MM-dd HH:mm:ss)
 * @param string $enddatetime 消息展示结束时间(格式yyyy-MM-dd HH:mm:ss)
 * @param object|null $smsMessage 如果需要在未发送成功时补发短信 就设置短信配置信息     SmsTemplate()
 * @return IGtTransmissionTemplate
 * @throws Exception
 */
function IGtTransmissionTemplateFun($count,$transmissionType = 1,$smsMessage=null,$begdatetime='',$enddatetime='')
{
    $template = new \IGtTransmissionTemplate();
    $template->set_appId(APPID);                             //应用appid
    $template->set_appkey(APPKEY);                           //应用appkey
    $template->set_transmissionType($transmissionType);      //透传消息类型
    $template->set_transmissionContent($count);              //透传内容
    if($begdatetime && $enddatetime){
        $template->set_duration($begdatetime,$enddatetime);  //设置ANDROID客户端在此时间区间内展示消息
    }
    if($smsMessage){
        $template->setSmsInfo($smsMessage);                  //如果需要在未发送成功时补发短信 就设置短信配置信息
    }
    return $template;
}
/**
 * 设置短信补量的短信信息设置
 * @param string $SmsTemplateId 短信模板id
 * @param int $Offlinetime      离线多久补发短信 单位毫秒
 * @param array $smsContent     短信内容 为短信模板中的变量内容 示例:$smsContent['name'] = '张三';
 * @param bool $IsApplink       是否在短信中打开app true 打开
 * @param string $url           打开app链接 applink
 * @param string $Payload       自定义内容
 * @return SmsMessage
 */
function SmsTemplate($SmsTemplateId='',$Offlinetime=1000,$smsContent=[],$IsApplink=false,$url='',$Payload=''){
    //设置短信消息
    $smsMessage = new \SmsMessage();
    $smsMessage->setSmsTemplateId($SmsTemplateId);          //短信模板ID 需要在个推报备开通 才可使用
    $smsMessage->setOfflineSendtime($Offlinetime);          //多久后进行离线补发的时间
    $smsMessage->smsContent($smsContent);                   //注意当使用AppLink时,smsContent不能传值url
    $smsMessage->setIsApplink($IsApplink);                  //推送的短信模板中是否选用APPLink进行推送。
    $smsMessage->setUrl($url);                              //推送的短信模板中的APPLink链接地址
    $smsMessage->setPayload($Payload);                      //推送的短信模板中的APPLink自定义内容
    return $smsMessage;
}
/**
 * ios透传 APN简单推送模板
 * @param string $count 2048中/英字符 透传内容,不支持转义字符
 * @param string $alertmess 通知文本消息字符串
 * @param string $sound  通知铃声文件名 文件名称 "test1.wav"
 * @param string $category 在客户端通知栏触发特定的action和button显示 为此键提供表示通知类型的字符串值。此值对应于identifier您的某个应用注册类别的属性值
 * @param string $customMsgKey  自定义增加数据的键名
 * @param mixed|string $customMsgVal 自定义增加数据的键名
 * @param int $badge  应用icon上显示的数字
 * @param int $transmissionType 收到消息是否立即启动应用:1为立即启动,2则广播等待客户端自启动
 * @param string $begdatetime 消息展示开始时间(格式yyyy-MM-dd HH:mm:ss)
 * @param string $enddatetime 消息展示结束时间(格式yyyy-MM-dd HH:mm:ss)
 * @return IGtTransmissionTemplate
 * @throws Exception
 */
function IGtTransmissionTemplateiosapn($count,$alertmess,$category='NEW_MESSAGE_CATEGORY',$customMsgKey='key',$customMsgVal='',$badge=0,$sound='',$contentAvailable=1,$transmissionType = 1,$begdatetime='',$enddatetime='')
{
    $template = new \IGtTransmissionTemplate();
    $template->set_appId(APPID);                             //应用appid
    $template->set_appkey(APPKEY);                           //应用appkey
    $template->set_transmissionType($transmissionType);      //透传消息类型
    $template->set_transmissionContent($count);              //透传内容
    if($begdatetime && $enddatetime){
        $template->set_duration($begdatetime,$enddatetime);  //设置ANDROID客户端在此时间区间内展示消息
    }
    $alertmsg = new \SimpleAlertMsg();
    $alertmsg->alertMsg = $alertmess;                        //通知文本消息字符串
    $apn = new \IGtAPNPayload();
    $apn->alertMsg = $alertmsg;
    $apn->badge = $badge;                                    //应用icon上显示的数字 如果希望系统修改应用程序图标的徽章,请包含此字段。如果此字段未设置,则不会更改徽章。要删除徽章,请将此键的值设置为0。
    $apn->sound = $sound;                                    //通知铃声文件名 希望系统播放声音时设置此键。此键的值是应用程序主包中或Library/Sounds应用程序数据容器文件夹中声音文件的名称。如果找不到声音文件,或者您指定default了该值,系统将播放默认通知声音
    $apn->add_customMsg($customMsgKey,$customMsgVal);        //增加自定义的数据 第一个参数是自定义增加参数的key,第二个参数是自定义参数的值
    $apn->contentAvailable = $contentAvailable;              //推送直接带有透传数据 int 大于0的数字,意思是该推送直接带有透传数据 如果不带透传数据可以为0
    $apn->category = $category;                              //在客户端通知栏触发特定的action和button显示 为此键提供表示通知类型的字符串值。此值对应于identifier您的某个应用注册类别的属性值
    $template->set_apnInfo($apn);
    return $template;
}
/**
 * IOS语音推送模板 voip推送
 * @param string $count 2048中/英字符 透传内容,不支持转义字符
 * @param string $payload VoIP内容
 * @param int $transmissionType 收到消息是否立即启动应用:1为立即启动,2则广播等待客户端自启动
 * @param string $begdatetime 消息展示开始时间(格式yyyy-MM-dd HH:mm:ss)
 * @param string $enddatetime 消息展示结束时间(格式yyyy-MM-dd HH:mm:ss)
 * @return IGtTransmissionTemplate
 * @throws Exception
 */
function IGtTransmissionTemplateiosvoip($count, $payload, $transmissionType = 1, $begdatetime = '', $enddatetime = '')
{
    $template = new \IGtTransmissionTemplate();
    $template->set_appId(APPID);                             //应用appid
    $template->set_appkey(APPKEY);                           //应用appkey
    $template->set_transmissionType($transmissionType);      //透传消息类型
    $template->set_transmissionContent($count);              //透传内容
    if ($begdatetime && $enddatetime) {
        $template->set_duration($begdatetime, $enddatetime);  //设置ANDROID客户端在此时间区间内展示消息
    }
    //VOIP推送
    $voip = new VOIPPayload();
    $voip->setVoIPPayload($payload);                         //VoIP内容
    $template->set_apnInfo($voip);
    return $template;
}
/**
 * ios高级推送模板
 * @param string $count 透传内容 2048中/英字符
 * @param int $badeg 应用icon上显示的数字
 * @param string $sound 通知铃声文件名 铃声文件名称
 * @param array $setapnbody apn 主体信息设置 必须以此格式 $setapnbody = ['body'=>'','locKey'=>'','locArgs'=>[],'actionLocKey'=>'','launchImage'=>'']
 * @param array $media 多媒体消息设置 必须以此格式 $media= ['url'=>'','onlywifi'=false,'type'=>'pic'];
 * @param array $setapntitle 设置通知标题 必须以此格式 $setapntitle = ['title'=>'','titleLocKey'=>'','titleLocArg'=>[],'subtitle'=>'','subtitleLocKey'=>'',subtitleLocArgs=[]]
 * @param string $category  在客户端通知栏触发特定的action和button显示
 * @param int $voicePlayType 设置语音播报类型,int类型,0.不可用 1.播放body 2.播放自定义文本
 * @param string $voicePlayMessage 设置语音播报自定义内容 如果设置为自定义文本选项
 * @param array $customMsg 自定义增加数据,$customMsg=['key',''] 长度2,$customMsg[0] 键名称 $customMsg[1]值
 * @param int $contentAvailable 推送直接带有透传数据 int 大于0的数字,意思是该推送直接带有透传数据 如果不带透传数据可以为0
 * @param int $transmissionType 收到消息是否立即启动应用,1为立即启动,2则广播等待客户端自启动
 * @param string $begdatetime 消息展示开始时间(格式yyyy-MM-dd HH:mm:ss)
 * @param string $enddatetime 消息展示结束时间(格式yyyy-MM-dd HH:mm:ss)
 * @return IGtTransmissionTemplate
 * @throws Exception
 */
function IGtTransmissionTemplateios($count,$setapnbody = [],$badeg=0,$sound='',$media = [],$setapntitle=[],$category='',$voicePlayType=0,$voicePlayMessage='',$customMsg=['key',''],$contentAvailable=1,$transmissionType = 1,$begdatetime='',$enddatetime='')
{
    $template = new \IGtTransmissionTemplate();
    $template->set_appId(APPID);                             //应用appid
    $template->set_appkey(APPKEY);                           //应用appkey
    $template->set_transmissionType($transmissionType);      //透传消息类型
    $template->set_transmissionContent($count);              //透传内容
    if($begdatetime && $enddatetime){
        $template->set_duration($begdatetime,$enddatetime);  //设置ANDROID客户端在此时间区间内展示消息
    }

    //设置apn主体 $setapnbody = ['body'=>'','locKey'=>'','locArgs'=>[],'actionLocKey'=>'','launchImage'=>'']
    $alertmsg = new \DictionaryAlertMsg();
    $alertmsg->body    = $setapnbody['body'];                //通知文本消息字符串
    $alertmsg->locKey  = $setapnbody['locKey'];              //(用于多语言支持)指定Localizable.strings文件中相应的key 用于当前本地化的文件中的通知消息字符串的键(由用户的语言首选项设置)。可以使用n%@和说明符格式化键字符串,以获取数组中指定的变量 GAME_PLAY_REQUEST_FORMAT
    if(isset($setapnbody['locArgs']) && !empty($setapnbody['locArgs'])){
        $alertmsg->locArgs = $setapnbody['locArgs'];         //如果loc-key中使用的占位符,则在loc-args中指定各参数。
    }
    if(isset($setapnbody['actionLocKey']) && !empty($setapnbody['actionLocKey'])){
        $alertmsg->actionLocKey = $setapnbody['actionLocKey'];//系统将显示包含“关闭”和“查看”按钮的警报。该字符串用作在当前本地化中获取本地化字符串的键,用于右键的标题而不是“视图”。 PLAY
    }
    if(isset($setapnbody['launchImage']) && !empty($setapnbody['launchImage'])) {
        $alertmsg->launchImage = $setapnbody['launchImage']; //指定启动界面图片名 应用程序包中的图像文件的文件名,包含或不包含文件扩展名。当用户点击操作按钮或移动动作滑块时,图像将用作启动图像。如果未指定此属性,系统将使用上一个快照,使用UILaunchImageFile应用程序Info.plist文件中的键标识的图像,或者回退到Default.png。
    }

    //通知标题和设置 仅IOS8.2以上支持 $setapntitle = ['title'=>'','titleLocKey'=>'','titleLocArg'=>[],'subtitle'=>'','subtitleLocKey'=>'',subtitleLocArgs=[]]
    if(isset($setapntitle['title']) && !empty($setapntitle['title'])) {
        $alertmsg->title = $setapntitle['title'];             //通知标题 描述通知目的的短字符串
    }
    if(isset($setapntitle['titleLocKey']) && !empty($setapntitle['titleLocKey'])) {
        $alertmsg->titleLocKey = $setapntitle['titleLocKey'];  //(用于多语言支持)对于标题指定执行按钮所使用的Localizable.strings 当前本地化文件中 标题字符串的关键。可以使用n%@和说明符格式化键字符串,以获取数组中指定的变量
    }
    if(isset($setapntitle['titleLocArg']) && !empty($setapntitle['titleLocArg'])) {
        $alertmsg->titleLocArgs = $setapntitle['titleLocArg']; //对于标题, 如果ltitleLocKey中使用的占位符,则在titleLocArg中指定各参数
    }
    if(isset($setapntitle['subtitle']) && !empty($setapntitle['subtitle'])) {
        $alertmsg->subtitle = $setapntitle['subtitle'];       //设置子标题
    }
    if(isset($setapntitle['subtitleLocKey']) && !empty($setapntitle['subtitleLocKey'])) {
        $alertmsg->subtitleLocKey = $setapntitle['subtitleLocKey'];  //对于子标题指定执行按钮所使用的Localizable.strings 当前本地化文件中 标题字符串的关键。可以使用n%@和说明符格式化键字符串,以获取数组中指定的变量
    }
    if(isset($setapntitle['subtitleLocArgs']) && !empty($setapntitle['subtitleLocArgs'])) {
        $alertmsg->subtitleLocArgs = $setapntitle['subtitleLocArgs'];  //对于子标题, 如果subtitleLocKey中使用的占位符,则在subtitleLocKey中指定各参数
    }

    $apn = new \IGtAPNPayload();
    $apn->alertMsg = $alertmsg;
    $apn->badge = $badeg;                                   //应用icon上显示的数字 如果希望系统修改应用程序图标的徽章,请包含此字段。如果此字段未设置,则不会更改徽章。要删除徽章,请将此键的值设置为0。
    $apn->sound = $sound;                                   //通知铃声文件名 希望系统播放声音时设置此值。此键的值是应用程序主包中或Library/Sounds应用程序数据容器文件夹中声音文件的名称。如果找不到声音文件,或者您指定default了该值,系统将播放默认通知声音
    $apn->add_customMsg($customMsg[0],$customMsg[1]);       //增加自定义的数据 第一个参数是自定义增加参数的key,第二个参数是自定义参数的值

    $apn->voicePlayType = $voicePlayType;                   //设置语音播报类型,int类型,0.不可用 1.播放body 2.播放自定义文本
    if($voicePlayType == 2){
        $apn->voicePlayMessage = $voicePlayMessage;         //设置语音播报内容,String类型,非必须参数,用户自定义播放内容,仅在voicePlayMessage=2时生效 注:当"定义类型"=2, "定义内容"为空时则忽略不播放
    }

    $apn->contentAvailable = $contentAvailable;             //推送直接带有透传数据 int 大于0的数字,意思是该推送直接带有透传数据 如果不带透传数据可以为0
    $apn->category = $category;                             //在客户端通知栏触发特定的action和button显示 为此键提供表示通知类型的字符串值。此值对应于identifier您的某个应用注册类别的属性值

    // IOS多媒体消息处理设置  $media= ['url'=>'','onlywifi'=false,'type'=>'pic'];
    if(!empty($media)) {
        $media = new \IGtMultiMedia();
        $media->set_url($media['url']);                      //设置资源url
        if(!isset($media['onlywifi']) || empty($media['onlywifi'])){
            $media['onlywifi'] = false;
        }
        $media->set_onlywifi($media['onlywifi']);            //设置是否在WIFI下才展示多媒体消息,如果设置true但未使用WIFI时会展示成普通通知
        switch ($media['type']){
            case 'pic':
                $media['type'] = 1;
                break;
            case 'audio':
                $media['type'] = 2;
                break;
            case 'video':
                $media['type'] = 3;
                break;
        }
        $media->set_type($media['type']);                   //设置资源类型 pic 图片,audio 音频,video 视频
        $medias = array();
        $medias[] = $media;
        $apn->set_multiMedias($medias);
    }
    $template->set_apnInfo($apn);
    return $template;
}

/**
 * 第三方带通知推送模板
 * @param $title
 * @param $count
 * @param $payload
 * @param $intent
 * @param $url
 * @return IGtTransmissionTemplate
 * @throws Exception
 */
function IGtNotifyTemplate($title,$count,$payload,$intent,$url){
    //第三方厂商推送透传消息带通知处理
    $notify = new \IGtNotify();
    $notify -> set_title($title);                          //通知标题
    $notify -> set_content($count);                        //通知内容
    $notify -> set_type(\NotifyInfo_Type::_url);           //设置透传的类型 0 有效负载;1 意图; 2 打开链接;
    $notify -> set_payload($payload);                      //透传内容
    $notify -> set_intent($intent);                        //目的内容
    $notify -> set_url($url);                              //要打开的链接
    $template = new \IGtTransmissionTemplate();
    $template -> set3rdNotifyInfo($notify);
    return $template;
}

整理不易,整理作者:寻梦(e-mail:feiyudewo@126.com)
任何转载会引用请注明出处!

链接: 个推官方链接.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值