PHP SDK 开发文档

概述

本SDK是为方便PHP开发者在服务端调用百度云推送服务而提供的PHP语言开发工具包。

环境依赖

  • PHP 5.2及更高版本
  • PHPUnit 4及更高版本 [可选]
  • 所依赖 PHP extensions*:
    • cUrl (编译时,使用 --with-curl={curl_dir} 选项)
  • Windows,Linux/Unix 等可编译安装php的操作系统。

快速入门

PHP SDK快速入门指南

配置选项

开发者可以通过修改sdk根目录中的configure.php对SDK进行配置。

  • HOST:string,rest api的调用位置。默认为 "http://api.tuisong.baidu.com/rest/3.0/" ,正常情况不应修改该项;
  • default_apiKey:string,默认的apikey,当创建sdk对象时未指定apikey时,将默认使用该apikey;
  • default_secretkey:string,默认的secretkey,当创建sdk对象时未指定secretkey,将默认使用该secretkey;
  • default_devicetype:int,默认发送的device_type,关于device_type的说明,请参见 device_type说明
  • test_channel_id:string,配置接收测试消息的设备channelID,用于检测sdk及推送功能是否正常。请参考 quick start中使用PHP SDK推送一条测试消息
  • LOG_LEVEL:int,日志输出级别;
  • LOG_OUTPUT:string,日志输出方式;
    • page 打印到页面中;
    • stdout 默认,即向标准输出打印log;
    • {fpath} 目标一个文件位置;
  • SUPPRESS_EXCPTION:boolean 用于控制当服务端返回错误时,是否抛出异常;
    • true 即不抛出异常,使用getLastError及getLaseErrorCode获取错误信息;
    • false 有异常即直接抛出;
  • SIGN_EXPIRES:int,签名过期时长,单位为秒。SIGN_EXPIRES <= 0 表示为由服务端自动处理;

SDK业务方法的返回值说明

大部分业务方法在调用成功时直接返回 key => value 形式的数组。在失败时则根据SUPPRESS_EXCPTION的配置不同,将返回false或抛出异常。在返回false的时候,使用getLastError及getLaseErrorCode获取错误信息。具体错误信息可参见:云推送服务端API错误码

关于数据项中的 -1: 在一些数据统计接口中,鉴于0存在统计上的数值意义,为保证类型上的统一,所以使用了特殊的值 -1,用于表示该统计项不被支持尚未有统计数据产生

以下文档如无特殊说明,只描述正确返回格式。

SDK常用字段取值说明

msg_type API中出现的msg_type,用于表示消息的内容类型,可能的值有以下几种:

  • 0:透传消息
  • 1:通知

range_type API中出现的range_type,用于表示消息的推送范围类型,可能的值有以下几种:

  • 0:tag组播
  • 1:广播
  • 2:批量单播
  • 3:组合运算
  • 4:精准推送
  • 5:LBS推送
  • 6:系统预留
  • 7:单播

消息格式 在推送通知消息时,对于消息的格式存在一定要的结构性要求,并且不同平台存在差异,具体可参见 消息格式说明

关于双文本的使用说明

如果之前推送是透传消息,即msg_type字段值是0,此时,如果要兼容各大厂商代理的推送,需要使用双文本的消息进行推送,这样保证不支持厂商推送的透传消息正常下发,如果一直是通知消息或者新接入的app可以忽略双文本消息,直接进行msg_type为1的通知推送。具体可参见 消息格式说明中的双文本消息的说明

关于device_type参数使用说明

3.0版本的云推送服务,为了更好的统计数据及简化使用,对应用的支持平台进行区分,每个应用仅支持一个平台,2.0版本中的每个应用在升级至3.0后,将拆分为两个相同appid的应用,所以需要在使用SDK的过程中设置 device_type 参数指定操作那一个平台的应用,device_type 的取值有以下两种:

  • 3:android
  • 4:iOS

API Documents

Class PushSDK extends BaseSDK

push服务的包装对象。包装rest api的业务方法。

Method PushSDK::__Constructor

Description: 创建一个PushSDK实例。

Parameters:

  • apiKey string [optional] 开发者apikey。

  • secretKey string [optional] 开发者当前secretKey,在应用重新生成secret key后,旧的secret key将失效。

  • curlopts array [optional] 用于cUrl::curl_setopt方法的控制参数。 @See curl_setopt相关内容

Example:

$ak = 'ak of your app';
$sk = 'sk of your app';
$sdk = new PushSdk($ak,$sk);

// to do something...

Method PushSDK::setApiKey

Description: 设置或变更 api key

Parameters:

  • apiKey string 开发者apikey。

Return value:

void


Method PushSDK::setSecretKey

Description: 设置或变更 secret key

Parameters:

  • secretKey string 设置开发者当前secretKey。

Return value:

void


Method PushSDK::setDeviceType

Description: 设置或变更 device key,关于device_type的的说明,请参见:关于device_type参数使用说明

Parameters:

  • secretKey string 设置开发者当前 device key。

Return value:

void


Method PushSDK::getRequestId

Description: 获得方法调用所生成的 RequestId

Parameters:

null

Return value:

int | null:成功调用服务端方法后,由服务端返回的RequestId。在追踪问题时。需要提供这个值。在产生SDK端异常时,返回null。

Example:

// get the sdk instance

$rs = $sdk -> pushAll('send the message and failed.');

// 当rs的返回值为false,则表示方法调用失败
if($rs === false){     
    $errMsg = $sdk -> getLastErrorMsg();
    $errCode = $sdk -> getLastErrorCode();
    $logId = $sdk -> getRequestId();
    // log the exception
    print_r("Call SDK Failed:[RequestId:$logId][error:$errCode,$errMsg];");
}

Method PushSDK::getLastErrorMsg

Description: 获得最后一次调用所产生的错误消息。

Parameters:

null

Return value:

String:调用失败的错误描述信息。


Method PushSDK::getLastErrorCode

Description: 获得最后一次调用所产生的错误码。

Parameters:

null

Return value:

int:调用失败原因的错误码


Method PushSDK::pushMsgToSingleDevice

Description: 根据channel_id,向单个设备推送消息。

Parameters:

  • channel_id string 与一台设备唯一对应,必须为端上初始化channel成功之后返回的channel_id
  • msg 消息内容,必选参数 array | string 消息内容可参见消息/通知数据格式,当消息体类型为一个array时,将自动调用json_encode方法来将array转换为一个string;
    • opts array [optional] 包含以下可选内容:
      • msg_type int 消息类型,1表示通知,0表示透传
      • msg_expires int 过期时间,默认 3600 x 5 秒(5小时),仅android有效
      • deploy_status int 可取值 1(开发状态)和 2(生产状态)仅iOS推送使用
  • extra_message 可选字段,消息内容 array | string 消息内容可参见消息/通知数据格式,当消息体类型为一个array时,将自动调用json_encode方法来将array转换为一个string;
    • opts array [optional] 包含以下可选内容:
      • msg_type int 消息类型,1表示通知,0表示透传
      • extra_msg_type int 消息类型,1表示通知,0表示透传
      • msg_expires int 过期时间,默认 3600 x 5 秒(5小时),仅android有效
      • deploy_status int 可取值 1(开发状态)和 2(生产状态)仅iOS推送使用
      • topic_id string 消息topic,可标识一批单设备推送
      • subscription_type string 业务自定义消息分类标识,可用于指定推送时使用的推送方式(长连接/代理)和通道类别(公信/私信);使用具体步骤:[1]厂商平台申请对应的channel或消息分类能力;[2]将申请的channel或消息分类能力信息保存到通道,使用账号登录百度云推送,点击"配置-应用配置"进行保存;[3]推送时指定对应的subscription_type。详细文档可参考2023年小米消息推送新规适配指南

注意: 消息体大小,对于Android消息不大于4KB;iOS消息不大于2KB。在使用双文本推送时,建议推送通知类型消息,即msg_type = 0, extra_msg_type = 1;如果有长连接透传消息的请求建议使用双文本推送,msg_type = 1, extra_msg_type = 0。建议推送代理时,每次使用不同的topic,否则相同的设备推送多条相同消息时,端上只会收到一条消息。

Return value:

Array(key => value) 内容为服务端返回的array对象,包含以下内容。

  • msg_id string 服务端生成的消息id
  • send_time int 消息发送的服务端时间戳

Example:

// 创建消息内容
$msg = array(
    'description' => 'notice msg',
);    

// 消息控制选项。
$opts = array(
    'msg_type' => 1,
);

// 发送
$rs = $sdk -> pushMsgToSingleDevice('0001112223334445',$msg,$opts);

if($rs !== false){
    print_r($rs);    // 将打印出 msg_id 及 timestamp
}

Method PushSDK::pushMsgToAll

Description: 广播,向当前应用下所有设备发送一条消息

Parameters:

  • msg 消息内容,必须参数 array | string 消息内容可参见消息/通知数据格式,当消息体类型为一个array时,将自动调用json_encode方法来将array转换为一个string;
    • opts array [optional] 包含以下可选内容:
      • msg_type int 消息类型,1表示通知,0表示透传
      • msg_expires int 过期时间,默认 3600 x 5 秒(5小时),仅android有效
      • deploy_status int 可取值1(开发状态)和2(生产状态)仅iOS推送使用
      • send_time int 消息发送的时间,必须大于当前时间一分钟以上,指定该参数将会创建一个定时任务。
  • extra_message 消息内容,可选参数 array | string 消息内容可参见消息/通知数据格式,当消息体类型为一个array时,将自动调用json_encode方法来将array转换为一个string;
    • opts array [optional] 包含以下可选内容:
      • msg_type int 消息类型,1表示通知,0表示透传
      • extra_msg_type int 消息类型,1表示通知,0表示透传
      • msg_expires int 过期时间,默认 3600 x 5 秒(5小时),仅android有效
      • deploy_status int 可取值 1(开发状态)和 2(生产状态)仅iOS推送使用
      • topic_id string 消息topic,可标识一批单设备推送

注意: 消息体大小,对于Android消息不大于4KB;iOS消息不大于2KB。在使用双文本推送时,建议推送通知类型消息,即msg_type = 0, extra_msg_type = 1;如果有长连接透传消息的请求建议使用双文本推送,msg_type = 1, extra_msg_type = 0。建议推送代理时,每次使用不同的topic,否则相同的设备推送多条相同消息时,端上只会收到一条消息。

Return value:

Array(key => value) 内容为服务端返回的array对象,包含以下内容。

  • msg_id string 服务端生成的消息id
  • send_time int 消息发送的服务端时间戳
  • timer_id string 由服务端生成并返回的定时任务的id

Example:

// 创建消息内容
$msg = array(
    'description' => 'notice msg',
);    

// 消息控制选项。
$opts = array(
    'msg_type' => 1,
);

// 发送
$rs = $sdk -> pushMsgToAll($msg,$opts);

if($rs !== false){
    print_r($rs);    // 将打印出 msg_id 及 timestamp
}

Method PushSDK::pushMsgToTag

Description: 组播,向一个指定的组内的所有设备发送一条消息

Parameters:

  • tagName string 组的名称,长度限制1 ~ 128字符
  • msg 消息内容,必传参数 array | string 消息内容可参见消息/通知数据格式,当消息体类型为一个array时,将自动调用json_encode方法来将array转换为一个string;
    • opts array [optional] 包含以下可选内容:
      • msg_type int 消息类型,1表示通知,0表示透传
      • msg_expires int 过期时间,默认 3600 x 5 秒(5小时) 仅android有效
      • deploy_status int 可取值1(开发状态)和2(生产状态)仅iOS推送使用
      • send_time int 消息发送的时间,必须大于当前时间一分钟以上,指定该参数将会创建一个定时任务。
  • extra_message 消息内容,可选参数 array | string 消息内容可参见消息/通知数据格式,当消息体类型为一个array时,将自动调用json_encode方法来将array转换为一个string;
    • opts array [optional] 包含以下可选内容:
      • msg_type int 消息类型,1表示通知,0表示透传
      • extra_msg_type int 消息类型,1表示通知,0表示透传
      • msg_expires int 过期时间,默认 3600 x 5 秒(5小时),仅android有效
      • deploy_status int 可取值 1(开发状态)和 2(生产状态)仅iOS推送使用
      • topic_id string 消息topic,可标识一批单设备推送

注意: 消息体大小,对于Android消息不大于4KB;iOS消息不大于2KB。在使用双文本推送时,建议推送通知类型消息,即msg_type = 0, extra_msg_type = 1;如果有长连接透传消息的请求建议使用双文本推送,msg_type = 1, extra_msg_type = 0。建议推送代理时,每次使用不同的topic,否则相同的设备推送多条相同消息时,端上只会收到一条消息。

Return value:

Array(key => value) 内容为服务端返回的array对象,包含以下内容。

  • msg_id string 服务端生成的消息id
  • send_time int 消息发送的服务端时间戳
  • timer_id string 由服务端生成并返回的定时任务的id

Example:

// 创建消息内容
$msg = array(
    'description' => 'notice msg',
);    

// 消息控制选项。
$opts = array(
    'msg_type' => 1,
);

// 发送
$rs = $sdk -> pushMsgToTag('MyTagName',$msg,$opts);

if($rs !== false){
    print_r($rs);    // 将打印出 msg_id 及 send_time
}

Method PushSDK::pushBatchUniMsg

Description: 批量单播,向一组指定的设备(channel_id),发送一条消息

Parameters:

  • Ids array 多个设备的channel_id,每个ID为一个string,最多一万个。
  • msg array | string 消息内容可参见消息/通知数据格式,当消息体类型为一个array时,将自动调用json_encode方法来将array转换为一个string;
  • opts array [optional] 包含以下可选内容:
    • msg_type int 消息类型,1表示通知,0表示透传
    • msg_expires int 过期时间,默认 3600 x 5 秒(5小时),仅android有效
    • deploy_status int 可取值 1(开发状态)和 2 (生产态),仅iOS推送使用
    • topic_id string 消息的topic,长度限制为 1-128个长度的字母和数字组合。
  • extra_message 消息内容,可选参数 array | string 消息内容可参见消息/通知数据格式,当消息体类型为一个array时,将自动调用json_encode方法来将array转换为一个string;
    • opts array [optional] 包含以下可选内容:
      • msg_type int 消息类型,1表示通知,0表示透传
      • extra_msg_type int 消息类型,1表示通知,0表示透传
      • msg_expires int 过期时间,默认 3600 x 5 秒(5小时),仅android有效
      • deploy_status int 可取值 1(开发状态)和 2(生产状态)仅iOS推送使用
      • topic_id string 消息topic,可标识一批单设备推送
      • subscription_type string 业务自定义消息分类标识,可用于指定推送时使用的推送方式(长连接/代理)和通道类别(公信/私信);使用具体步骤:[1]厂商平台申请对应的channel或消息分类能力;[2]将申请的channel或消息分类能力信息保存到通道,使用账号登录百度云推送,点击"配置-应用配置"进行保存;[3]推送时指定对应的subscription_type。详细文档可参考2023年小米消息推送新规适配指南

注意: 消息体大小,对于Android消息不大于4KB;iOS消息不大于2KB。在使用双文本推送时,建议推送通知类型消息,即msg_type = 0, extra_msg_type = 1;如果有长连接透传消息的请求建议使用双文本推送,msg_type = 1, extra_msg_type = 0。建议推送代理时,每次使用不同的topic,否则相同的设备推送多条相同消息时,端上只会收到一条消息。

Return value:

Array(key => value) 内容为服务端返回的array对象,包含以下内容。

  • msg_id string 服务端生成的消息id
  • send_time int 消息发送的服务端时间戳
// 创建消息内容
$msg = array(
    'description' => 'notice msg',
);    

// 消息控制选项。
$opts = array(
    'msg_type' => 1,
);

// 发送给以下五个设备,每个设备ID应与终端设备上产生的 channel_id 一一对应。
$idArr = array(
    '000000000000001',
    '000000000000002',
    '000000000000003',
    '000000000000004',
    '000000000000005',
);

// 发送
$rs = $sdk -> pushBatchUniMsg($idArr,$msg,$opts);

if($rs !== false){
    print_r($rs);    // 将打印出 msg_id 及 send_time
}

Method PushSDK::queryMsgStatus

Description: 根据 msg_id,查询消息推送状态,到达数,预计数等信息。

Parameters:

  • msg_id string 由服务端生成并返回的消息id。

Return value:

Array(key => value) 内容为服务端返回的array对象,包含以下内容。

  • msg_id string 服务端生成的消息id
  • status int,发送状态,0:已发送,1:未发送,2:正在发送,3:失败
  • send_time int 消息发送的服务端时间戳
  • success int 成功到达数
  • total_num int 共需发送数,暂不支持

Example:

// 发送一条广播消息,并在二分钟后查看消息状态。

// 创建消息内容
$msg = array(
    'description' => 'notice msg',
);    

// 消息控制选项。
$opts = array(
    'msg_type' => 1,
);

// 发送
$rs = $sdk -> pushMsgToAll($msg,$opts);

if($rs !== false){
    print_r($rs);    // 将打印出 msg_id 及 timestamp
    $msg_id = $rs['msg_id'];
    sleep(120);            // 延时二分钟,用于消息下发及数据统计。
    $info = $sdk -> queryMsgStatus($msg_id);
    print_r($info);
}

Method PushSDK::queryTimerRecords

Description: 根据 timer_id,获取一个定时或周期任务的消息推送记录。

Parameters:

  • timer_id string 由服务端生成并返回的timer_id。
  • opts array [optional] 包含以下可选内容:
    • start int 32位整数,默认为0 起始索引位置
    • limit int 整数:[1,100],默认100 一次查询的记录条数
    • range_start int 指定查询起始时间范围,以消息记录中send_time为准,默认为最近七天的0点开始。
    • range_end int 指定最终查询时间范围,以消息记录中send_time为准,默认为当前时间。

Return value:

Array(key => value) 内容为服务端返回的array对象,包含以下内容。

  • timer_id string 由服务端生成并返回的timer_id。
  • result array,每个内容为当前timer产生的一条消息,包含以下内容。
    • msg_id string 服务端生成的消息id
    • status int,发送状态,0:已发送,1:未发送,2:正在发送,3:失败
    • send_time int 消息发送的服务端时间戳

Example:

// 发送一条5分钟后的定时广播消息,并在10分钟后查看消息状态。

// 创建消息内容
$msg = array(
    'description' => 'notice msg',
);    

// 消息控制选项。
$opts = array(
    'msg_type' => 1,
    'send_time' => time() + 5 * 60
);

// 发送
$rs = $sdk -> pushMsgToAll($msg,$opts);

if($rs !== false){
    print_r($rs);    // 将打印出 msg_id 及 timestamp    
    $timer_id = $rs['timer_id'];
    // 延时10分钟,用于消息下发及数据统计。
    sleep(60 * 10);
    // 取得发送记录。
    $record = $sdk -> queryTimerRecords($timer_id);
    if($record !== false && count($record['result']) > 0){
         // 查询发送状态
         print_r($sdk -> queryMsgStatus($record['result'][0]['msg_id']));
    }   
}

Method PushSDK::queryTimerList

Description: 查询尚未完成的定时推送任务信息列表。

Parameters:

  • opts array [optional] 包含以下可选内容:
    • timer_id string 由服务端生成并返回的定时任务的id,如果指定timer_id,将仅查询目标定时任务的相关信息。
    • start int 32位整数,默认为0 起始索引位置
    • limit int 整数:[1,100],默认100 一次查询的记录条数

Return value:

Array(key => value) 内容为服务端返回的array对象,包含以下内容。

  • total_num 返回记录集条数。
  • result array,每个内容为一个定时任务的相关信息。包含以下内容。
    • timer_id string 由服务端生成并返回的定时任务的id
    • msg string 消息体内容。
    • send_time int 消息发送的服务端时间戳
    • msg_type int 消息类型,1表示通知,0表示透传
    • range_type int 发送范围,可能的值为 0 ~ 7,参见 SDK常用字段取值说明

Example:

// 发送一条5分钟后的定时广播消息. 并即时查看任务状态。

// 创建消息内容
$msg = array(
    'description' => 'notice msg',
);    

// 消息控制选项。
$opts = array(
    'msg_type' => 1,
    'send_time' => time() + 5 * 60
);

// 发送
$rs = $sdk -> pushMsgToAll($msg,$opts);

if($rs !== false){
    print_r($rs);    // 将打印出 msg_id,timer_id 及 timestamp
    $timer_id = $rs['timer_id'];
    $list = $sdk -> queryTimerList();

    if($list !== false && $list -> total_num > 0){
        foreach($list as $item){
            if($item['timer_id'] === $timer_id)){
                print_r($item);  //将打印相关信息。
            }
        }
    }
}

Method PushSDK::queryTopicRecords

Description: 根据 topic_id,获取该分类主题的消息推送记录。

Parameters:

  • topic_id string 在发送消息时指定的分类主题名称
  • opts array [optional] 包含以下可选内容:
    • start int 32位整数,默认为0 起始索引位置
    • limit int 整数:[1,100],默认100一次查询的记录条数
    • range_start int 指定查询起始时间范围,以消息记录中send_time为准,默认为最近七天的0点开始。
    • range_end int 指定最终查询时间范围,以消息记录中send_time为准,默认为当前时间。

Return value:

Array(key => value) 内容为服务端返回的array对象,包含以下内容。

  • topic_id string 在发送消息时指定的分类主题名称,原样带回。
  • result array,每个内容为当前timer产生的一条消息,包含以下内容。
    • msg_id string 服务端生成的消息id
    • status int,发送状态,0:已发送,1:未发送,2:正在发送,3:失败
    • send_time int 消息发送的服务端时间戳

Example:

// 创建消息内容
$msg = array(
    'description' => 'notice msg',
);    

// 消息控制选项。
$opts = array(
    'msg_type' => 1,
    'topic_id' => 'topic1',//为批量单播消息指定topic
);

// 发送给以下五个设备,每个设备ID应与终端设备上产生的 channel_id 一一对应。
$idArr = array(
    '000000000000001',
    '000000000000002',
    '000000000000003',
    '000000000000004',
    '000000000000005',
);

// 发送
$rs = $sdk -> pushBatchUniMsg($idArr,$msg,$opts);

if($rs !== false){
    print_r($rs);    // 将打印出 msg_id 及 send_time
    $msg_id = $rs['msg_id'];
    $list = $sdk -> queryTopicRecords('topic1');

    if($list !== false && $list -> total_num > 0){
        foreach($item as $list){
            if($item['msg_id'] === $msg_id)){
                print_r($item);  //将打印相关信息。
            }
        }
    }
}

Method PushSDK::queryTopicList

Description: 查询批量单播所使用过的分类主题及推送和到达的数据量

Parameters:

  • opts array [optional] 包含以下可选内容:
    • start int 32位整数,默认为0 起始索引位置
    • limit int 整数:[1,100],默认100一次查询的记录条数

Return value:

Array(key => value) 内容为服务端返回的array对象,包含以下内容。

  • total_num int 查询分类主题的结果集数量。
  • result array,每个内容为当前timer产生的一条消息,包含以下内容。
    • topic_id string 分类主题唯一标识
    • ctime int 第一次发送时间
    • mtime int 最后一次发送时间
    • push_cnt int 总的推送目标数
    • ack_cnt int 总的到达数,-1代表数据未ready

Example:

// 查询所用到的分类主题列表,并配合queryTopicRecords查询最近推送过的10条消息

//拿到分类主题列表。
$topicList = $sdk -> queryTopicList();

if($topicList !== false && $topicList -> total_num > 0){
    foreach($topicList['result'] as $item){
        // 查询推送记录
        $msgList = $sdk -> queryTopicRecords($item['topic_id'],array('limit' => 10));
        print_r($msgList);
    }
}

Method PushSDK::createTag

Description: 创建一个标签组

Parameters:

  • tagName string 组的名称,长度限制1 ~ 128字符

Return value:

Array(key => value) 内容为服务端返回的array对象,包含以下内容。

  • tagName string 在发送消息时指定的标签组名称,原样带回。
  • result int,0 成功,1失败。

Method PushSDK::deleteTag

Description: 删除一个已存在的标签组

Parameters:

  • tagName string 组的名称,长度限制1 ~ 128字符

Return value:

Array(key => value) 内容为服务端返回的array对象,包含以下内容。

  • tagName string 在发送消息时指定的标签组名称,原样带回。
  • result int,0 成功,1失败。

Example:

// 创建一个组,随后删除。
$rs = $sdk -> createTag('tmpTag');

if($rs !== false && $rs['result'] === 0){       //判断是否创建成功
    echo "create tag ok! \n";
    $delRs = $sdk->deleteTag('tmpTag');
    if($rs !== false && $rs['result'] === 0){       //判断是否删除成功
        echo "delete tag ok! \n";
    }
}

Method PushSDK::queryTags

Description: 查询已存在的标签组

Parameters:

  • tagName string 组的名称,长度限制1 ~ 128字符,如果指定则仅查询目标tag
  • opts array [optional] 包含以下可选内容:
    • start int 32位整数,默认为0 起始索引位置
    • limit int 整数:[1,100],默认100 一次查询的记录条数

Return value:

Array(key => value) 内容为服务端返回的array对象,包含以下内容。

  • total_num 返回tag的结集条数。
  • result array,每项内容为当前当前app下的一个tag信息,包含以下内容。
    • tid int 服务端生成的tag id
    • tag string 组的名称,长度限制1 ~ 128字符
    • info string [deprecated] 组的标识名,长度限制1 ~ 128字符
    • type int [deprecated] 组类型,长度限制1 ~ 128字符
    • create_time int 组创建时的服务端时间戳

Example:

$rs = $sdk->queryTags();

if($rs === false){    //确认返回。
    //get error。
    echo $sdk -> getLastErrorMsg();
    echo "/n";
}else if($rs['total_num'] > 0){
    foreach($rs['result'] as $item){
        extract($item);
        echo "tid:$tid; tagname:$tag,createTime:$create_time";
    }
}

Method PushSDK::addDevicesToTag

Description: 添加设备到已创建的标签组。

Parameters:

  • tagName string 组的名称,长度限制1 ~ 128字符,必须为一个已存在的tag名称
  • channel_ids array 待添加到目标组的设备id,每次最多10个。

Return value:

Array 内容为服务端返回的array对象,每个元素包含以下内容。

  • channel_id string 与传入的channel_id一一对应。
  • result int 指定该channel_id是否添加成功。状态 0:成功 1 失败

Example:

/创建一个有五个设备的组,并向该组发送一条消息。


// 创建消息内容
$msg = array(
    'description' => 'notice msg',
);    

// 消息控制选项。
$opts = array(
    'msg_type' => 1
);

// 发送给以下五个设备,每个设备ID应与终端设备上产生的 channel_id 一一对应。
$idArr = array(
    '000000000000001',
    '000000000000002',
    '000000000000003',
    '000000000000004',
    '000000000000005',
);

$rs = $sdk->createTag('tag_new');

if($rs !== false){
    if($sdk -> addDevicesToTag('tag_new',$idArr) !== false){
        // 发送
        $rs = $sdk -> pushMsgToTag('tag_new',$msg,$opts);
        // check result and other something。
        // ....
    }
}

Method PushSDK::delDevicesFromTag

Description: 将添加到组的设备从组中移除。

Parameters:

  • tagName string 组的名称,长度限制1 ~ 128字符,必须为一个已存在的tag名称
  • channel_ids array 待从组中移除的设备id,每次最多10个。

Return value:

Array 内容为服务端返回的array对象,每个元素包含以下内容。

  • channel_id string 与传入的channel_id一一对应。
  • result int 指定该channel_id是否移除成功。状态 0:成功 1:失败

Method PushSDK::queryDeviceNumInTag

Description: 查询当前组内的设备数量。

Parameters:

  • tagName string 组的名称,长度限制1 ~ 128字符,必须为一个已存在的tag名称

Return value:

Array(key => value) 内容为服务端返回的array对象,包含以下内容。

  • device_num int 目标组的当前设备数量。

Example

// 添加以下五个设备,每个设备ID应与终端设备上产生的 channel_id 一一对应。
$idArr = array(
    '000000000000001',
    '000000000000002',
    '000000000000003',
    '000000000000004',
    '000000000000005',
);

$rs = $sdk->createTag('tag_new');

if($rs !== false){
    if($sdk -> addDevicesToTag('tag_new',$idArr) !== false){
        //查询设备数
        $rs = $sdk -> queryDeviceNumInTag('tag_new');
        // log
        print_r($rs);    // device_num is 5。
    }
}

Method PushSDK::queryStatisticDevice

Description: 取得当前APP的30天内的设备数统计

Parameters:

null

Return value:

array(key => value) 内容为服务端返回的array,包含以下内容:

  • total_num int 统计信息的结果条数。
  • result array(key => value) 统计结果,每项的key是一个每天的0点0分的时间戳,value 仍为一个array(key=>value)对象包含以下内容:
    • new_term int 新增终端数
    • del_term int 删除/解绑终端数
    • online_term int 在线终端数
    • addup_term int 累计终端数
    • total_term int 存量终端数

Method PushSDK::queryStatisticTopic

Description: 取得一个分类主题的30天内的消息统计

Parameters:

  • topic_id string 一个发送过的消息的分类主题的ID。

Return value:

array(key => value) 内容为服务端返回的array,包含以下内容:

  • total_num int 统计信息的结果条数。
  • result array(key => value) 统计结果,每项的key是一个每天的0点0分的时间戳,value 仍为一个array(key=>value)对象包含以下内容:
    • ack int 到达数

错误码

在SDK的使用过程中遇到的异常包括以下两类:

  • SDK端异常: 未能成功与服务器交互造成的错误,如:SDK参数不完整、网络错误、服务器的返回格式错误等,此类错误错误码介于1-100区间,以下简称SDK错误码
错误码 错误信息
1 SDK initialization error
2 SDK running error
3 SDK params missing
4 SDK params invalid
5 http status is ok,but REST returned invalid json string
  • 服务端异常: 能成功与服务端交互,但由于业务功能,参数等内容产生的,由服务端下发的异常信息。

    云推送服务端API错误码