本SDK是为方便Python开发者在服务端调用百度云推送服务而提供的Python语言开发工具包。
开发者可以通过修改sdk根目录中的sdk.conf对SDK进行配置。
大部分业务方法在调用成功时直接返回 dict 形式的值。在失败时则抛出ChannelException异常,捕获异常后使用getLastErrorCode及getLastErrorMsg获取错误信息。具体错误信息可参见:云推送服务端API错误码。
关于数据项中的 -1: 在一些数据统计接口中,鉴于0存在统计上的数值意义,为保证类型上的统一,所以使用了特殊的值 -1,用于表示该统计项不被支持或尚未有统计数据产生。
以下文档如无特殊说明,只描述正确返回格式。
msg_type API中出现的msg_type,用于表示消息的内容类型,可能的值有以下几种:
消息格式 在推送通知消息时,对于消息的格式存在一定要的结构性要求,并且不同平台存在差异,具体可参见 消息格式说明
3.0版本的云推送服务,为了更好的统计数据及简化使用,对应用的支持平台进行区分,每个应用仅支持一个平台,2.0版本中的每个应用在升级至3.0后,将拆分为两个相同appid的应用,所以需要在使用SDK的过程中设置 device_type 参数指定操作那一个平台的应用,device_type 的取值有以下两种:
Description: 设置或变更 api key
Parameters:
Return value:
void
Description: 设置或变更 secret key
Parameters:
Return value:
void
Description: 获得方法调用所生成的 RequestId
Parameters:
null
Return value:
int | None:成功调用服务端方法后,由服务端返回的RequestId。在追踪问题时。需要提供这个值。在产生SDK端异常时,返回None。
Example:
# 创建消息内容
msg = 'msg to single device'
# 消息控制选项。
opts = {'msg_type':0, 'expires':300}
# 服务端唯一分配的channel id
channel_id = '0000000000000000001'
# 实例化
c = Channel()
try:
ret = c.pushMsgToSingleDevice(channel_id, msg, opts)
except ChannelException as e:
errLog = 'Call SDK Failed: [RequestId: %d] [ErrorCode:%s, %s]'\
%(c.getRequestId(), e.getLastErrorCode(), e.getLastErrorMsg())
print errLog
Description: 获得最后一次调用所产生的错误消息。
Parameters:
null
Return value:
String:调用失败的错误描述信息。
Description: 获得最后一次调用所产生的错误码。
Parameters:
null
Return value:
int:调用失败原因的错误码。
Description: 根据channel_id,向单个设备推送消息。
Parameters:
注意: 消息体尺寸,对于Android消息不大于4KB;iOS消息为了兼容iOS7.0及以下系统,不大于256B(建议msg字段不超过224B)
Return value:
为服务端返回的dict对象,包含以下内容。
Example:
# 创建消息内容
msg = 'msg to single device'
# 消息控制选项。
opts = {'msg_type':0, 'expires':300}
# 服务端唯一分配的channel id
channel_id = '0000000000000000001'
c = Channel()
# 发送
try:
ret = c.pushMsgToSingleDevice(channel_id, msg, opts)
print ret # 将打印出 msg_id 及 send_time 的 timestamp
except ChannelException as e:
print e.getLastErrorMsg()
Description: 广播,向当前应用下所有设备发送一条消息
Parameters:
注意: 消息体尺寸,对于Android消息不大于4KB;iOS消息为了兼容iOS7.0及以下系统,不大于256B(建议msg字段不超过224B)
Return value:
为服务端返回的dict对象,包含以下内容。
Example:
# 创建消息内容
msg = 'msg to all'
# 消息控制选项。
opts = {'msg_type':0, 'expires':300}
c = Channel()
# 发送
try:
ret = c.pushMsgToAll(msg, opts)
print ret # 将打印出 msg_id 及 send_time 的 timestamp
except ChannelException as e:
print e.getLastErrorMsg()
Description: 组播,向一个指定的组内的所有设备发送一条消息
Parameters:
注意: 消息体尺寸,对于Android消息不大于4KB;iOS消息为了兼容iOS7.0及以下系统,不大于256B(建议msg字段不超过224B)
Return value:
为服务端返回的array对象,包含以下内容。
Example:
# 创建消息内容
msg = 'msg to tag'
# 消息控制选项
opts = {'msg_type':0, 'expires':300}
c = Channel()
# 发送
try:
ret = c.pushMsgToTag('tag_name', msg, 1,opts)
print ret # 将打印出 msg_id 及 send_time 的 timestamp
except ChannelException as e:
print e.getLastErrorMsg()
Description: 批量单播,向一组指定的设备(channel_id),发送一条消息
Parameters:
注意: 消息体尺寸,对于Android消息不大于4KB;iOS消息为了兼容iOS7.0及以下系统,不大于256B(建议msg字段不超过224B)
Return value:
为服务端返回的dict对象,包含以下内容:
# 创建消息内容
msg = 'msg to batch devices'
# channel_id列表
channel_ids = ["3973380163216521844", "3973380163216521843"]
# 消息控制选项
opts = {'msg_type':0, 'expires':300}
c = Channel()
# 发送
try:
ret = c.pushBatchUniMsg(channel_ids, msg, opts)
print ret # 将打印出 msg_id 及 send_time 的 timestamp
except ChannelException as e:
print e.getLastErrorMsg()
Description: 根据 msg_id,查询消息推送状态,到达数,预计数等信息。
Parameters:
Return value:
为服务端返回的dict对象,包含以下内容:
Example:
#广播之后120s查询消息状态
# 创建消息内容
msg = 'msg to all'
# 消息控制选项
opts = {'msg_type':0, 'expires':300}
c = Channel()
# 发送
try:
ret = c.pushMsgToAll(msg, opts)
msg_id = ret['msg_id']
time.sleep(120)
ret_2 = c.queryMsgStatus(msg_id)
print ret_2 # 将打印出result中requestId所对应的所有状态信息
except ChannelException as e:
print e.getLastErrorMsg()
Description: 根据 timer_id,获取一个定时或周期任务的消息推送记录。
Parameters:
opts dict [optional] 包含以下可选内容:
Return value:
为服务端返回的dict对象,包含以下内容。
Example:
#发送一条70s后的定时广播消息,并在120s后查看消息状态。
# 创建消息内容
msg = 'msg to all'
# 消息控制选项,70s后发送
opts = {'msg_type':0, 'expires':300, 'send_time':int(time.time()) + 70}
c = Channel()
# 发送
try:
ret = c.pushMsgToAll(msg, opts)
timer_id = ret['timer_id']
time.sleep(120)
ret_2 = c.queryTimerRecords(timer_id)
print ret_2 # 将打印出此条定时信息的状态信息
except ChannelException as e:
print e.getLastErrorMsg()
Description: 查询尚未完成的定时推送任务信息列表。
Parameters:
Return value:
为服务端返回的dict对象,包含以下内容:
result list,每个内容为一个定时任务的相关信息。包含以下内容。
Example:
# 发送一条5分钟后的定时广播消息. 并即时查看任务状态。
# 创建消息内容
msg = 'msg to all'
# 消息控制选项,5min后发送
opts = {'msg_type':0, 'expires':300, 'send_time':int(time.time()) + 300}
c = Channel()
# 发送
try:
ret = c.pushMsgToAll(msg, opts)
timer_id = ret['timer_id']
ret_2 = c.queryTimerList()
print ret_2 # 将打印出默认筛选条件下的定时信息状态
except ChannelException as e:
print e.getLastErrorMsg()
Description: 根据 topic_id,获取该分类主题的消息推送记录。
Parameters:
opts dict [optional] 包含以下可选内容:
Return value:
为服务端返回的dict对象,包含以下内容。
result dict,每个内容为当前timer产生的一条消息,包含以下内容。
Example:
# 创建消息内容
msg = 'msg to all'
# 消息控制选项
opts = {'msg_type':0, 'topic_id':'topic_1'}
# 发送给以下2个设备,每个设备ID应与终端设备上产生的 channel_id 一一对应
channel_ids = ["3973380163216521844", "3973380163216521843"]
c = Channel()
# 发送
try:
ret = c.pushBatchUniMsg(channel_ids, msg, opts)
timer_id = ret['timer_id']
ret_2 = c.queryTopicRecords('topic_1')
print ret_2 # 将打印出相关信息
except ChannelException as e:
print e.getLastErrorMsg()
Description: 查询批量单播所使用过的分类主题及推送和到达的数据量
Parameters:
opts dict [optional] 包含以下可选内容:
Return value:
为服务端返回的dict对象,包含以下内容。
result dict,每个内容为当前timer产生的一条消息,包含以下内容。
Example:
# 查询所用到的分类主题列表,并配合queryTopicRecords查询最近推送过的10条消息
# 消息控制选项
opts = {'limit':10}
c = Channel()
# 发送
try:
# 拿到分类主题列表
ret = c.queryTopicList(opts)
for item in ret['result']:
# 查询推送记录
ret_2 = c.queryTopicRecords(item['topic_id'], opts)
print ret_2
except ChannelException as e:
print e.getLastErrorMsg()
Description: 创建一个标签组
Parameters:
Return value:
为服务端返回的dict对象,包含以下内容。
Description: 删除一个已存在的标签组
Parameters:
Return value:
为服务端返回的dict对象,包含以下内容。
Example:
# 创建一个组,随后删除。
c = Channel()
try:
ret = c.createTag('test_tag')
print ret
ret = c.deleteTag('test_tag')
print ret
except ChannelException as e:
print e.getLastErrorMsg()
Description: 查询已存在的标签组
Parameters:
opts dict [optional] 包含以下可选内容:
Return value:
为服务端返回的array对象,包含以下内容。
result dict,每项内容为当前当前app下的一个tag信息,包含以下内容。
Example:
opts = dict()
c = Channel()
try:
ret = c.queryTags(opts)
print ret
except ChannelException as e:
print e.getLastErrorMsg()
Description: 添加设备到已创建的标签组。
Parameters:
Return value:
为服务端返回的dict对象,包含以下内容:
result list,每项元素包含以下内容:
Example:
# 发送给以下2个设备,每个设备ID应与终端设备上产生的 channel_id 一一对应
channel_ids = ["0000000000000000001", "0000000000000000002"]
c = Channel()
# 发送
try:
ret = c.createTag('tag_new')
ret_2 = c.addDevicesToTag('tag_new', channel_ids)
print ret_2 # 将打印出相关信息
except ChannelException as e:
print e.getLastErrorMsg()
Description: 将添加到组的设备从组中移除。
Parameters:
Return value:
Array 内容为服务端返回的array对象,每个元素包含以下内容。
Description: 查询当前组内的设备数量。
Parameters:
Return value:
为服务端返回的array对象,包含以下内容:
Example
# 要向tag中添加的两个设备
channel_ids = ["0000000000000000001", "0000000000000000002"]
c = Channel()
try:
ret = c.createTag('tag_new')
ret_2 = c.addDevicesToTag('tag_new', channel_ids)
ret_3 = c.queryDeviceNumInTag('tag_new')
print ret_3 # 将打印出相关信息
except ChannelException as e:
print e.getLastErrorMsg()
Description: 取得当前APP的30天内的设备数统计
Parameters:
null
Return value:
为服务端返回的dict,包含以下内容:
result dict 统计结果,每项的key是一个每天的0点0分的时间戳,value 仍为一个dict对象,包含以下内容:
Description: 取得一个分类主题的30天内的消息统计
Parameters:
Return value:
为服务端返回的dict,包含以下内容:
result dict 统计结果,每项的key是一个每天的0点0分的时间戳,value 仍为一个dict对象,包含以下内容:
在SDK的使用过程中遇到的异常包括以下两类:
错误码 | 错误信息 |
---|---|
1 | SDK initialization error |
2 | SDK running error |
3 | SDK params error |
4 | http status is ok but result error |
5 | http status is error and result error |
服务端异常: 能成功与服务端交互,但由于业务功能,参数等内容产生的,由服务端下发的异常信息。