API
云指令下发监听接口
/**
* 云指令push监听接口
*/
public abstract class IConchPushListener {
public int mErrorCode = 0;
/**
* 注册云指令服务收到的push的监听器的回调
* @param conchPushInfo 具体云指令信息,pull的情况下可能为null
*/
public abstract void onRecvPush(ConchPushInfo conchPushInfo);
}
示例:
public IConchService.IConchPushListener mConchListener = new IConchService.IConchPushListener() {
@Override
public void onRecvPush(IConchService.ConchPushInfo conchPushInfo) {
Log.i(TAG,"onRecvPush, conchPushInfo: " + conchPushInfo);
if(conchPushInfo == null) {
return;
}
try {
final StringBuilder builder = new StringBuilder();
builder.append("云指令的结果:\n");
builder.append("TaskId:" + conchPushInfo.mTaskId).append("\n");
builder.append("TaskSeqno:" + conchPushInfo.mTaskSeqno).append("\n");
builder.append("CmdId:" + conchPushInfo.mConch.cmdId).append("\n");
NewCommonConchArgs args = ConchService.getJceStruct(conchPushInfo, new NewCommonConchArgs(), false);
builder.append("Params:");
for (String arg : args.newParam) {
builder.append("\narg:" + arg);
}
Log.i(TAG, "[conch_debug]onRecvPush, " + builder.toString());
mResult.post(new Runnable() {
@Override
public void run() {
mResult.setText(builder.toString());
}
});
conchService.reportConchResult(conchPushInfo.mTaskId, conchPushInfo.mTaskSeqno, conchPushInfo.mConch.cmdId,
conchPushInfo.mConch.conchSeqno, EConchExecutePhase.ECEP_Phase_Execute, EResult.ER_Success);
} catch (Throwable e) {
e.printStackTrace();
}
}
};
云指令下发消息体
- ConchPushInfo
参数名称 | 参数类型 | 参数描述 |
---|---|---|
mTaskId | long | 任务 ID |
mTaskSeqno | long | 任务序列号 |
mConch | Conch | 云指令数据结构体 |
mRevokeInfo | RevokeTaskInfo | 默认为null,如果是撤销云指令,值为撤销云指令信息(从撤销云指令mConch的params中解析得到) |
- Conch
参数名称 | 参数类型 | 参数描述 |
---|---|---|
cmdId | Int | 云指令 ID |
params | byte[] | 云指令参数,根据相应 cmdId,解释成对应的结构 |
conchSeqno | int | 云指令序列号 |
time | TimeCtrl | 时机控制 |
tips | TipsInfo | 提示信息 |
- TimeCtrl
参数名称 | 参数类型 | 参数描述 |
---|---|---|
validEndTime | int | 指令有效的截止时间,绝对时间,以秒为单位 |
- TipsInfo
参数名称 | 参数类型 | 参数描述 |
---|---|---|
title | String | 标题 |
msg | String | 内容 |
type | int | 显示类型 |
askType | int | 响应关系 |
iconType | int | 图标类型,使用图标显示消息时有效 |
bgColor | int | 浮窗背景色,使用浮窗显示消息时有效 |
- RevokeTaskInfo
参数名称 | 参数类型 | 参数描述 |
---|---|---|
mRevokeCmdId | int | 要撤销的云指令 ID(也可以从 撤销云指令的 mConch 的 params 中解析出来) |
mRevokeConchSeqno | int | 要撤销的云指令序列号(也可以从 mConch 的 params 中解析出来) |
云指令参数数据结构解析
JceStructUtil 中
/**
* 解析结构
* @param data
* @param jceStruct
* @param newJce
* @return
*/
@SuppressWarnings("unchecked")
public static <T extends JceStruct> T getJceStruct(final byte [] data, final T jceStruct, boolean newJce)
云指令监听回调时,可使用本接口解析云指令数据,将回调的 ConchPushInfo 传入,并指明解析格式,即可解析出数据供使用。
参数名称 | 参数类型 | 参数描述 |
---|---|---|
conchPushInfo | ConchPushInfo | 监听到云指令 push 时回调的数据体 |
jceStruct | T | 需要解析的 jce 结构,默认结构可使用 new NewCommonConchArgs() 进行解析非默认结构时则按照与后台协议好的 jce 协议结构进行解析 |
newJce | boolean | 是否 new 一个 jce 实例用于解析 |
NewCommonConshArgs 结构体如下:
public final class NewCommonConchArgs extends com.qq.taf.jce.JceStruct{
public java.util.ArrayList<String> newParam = null;
public NewCommonConchArgs(){
}
public com.qq.taf.jce.JceStruct newInit(){
return new NewCommonConchArgs();
}
public void writeTo(com.qq.taf.jce.JceOutputStream _os){
if (null != newParam){
_os.write(newParam, 0);
}
}
static java.util.ArrayList<String> cache_newParam;
static {
cache_newParam = new java.util.ArrayList<String>();
String __var_1 = "";
((java.util.ArrayList<String>)cache_newParam).add(__var_1);
}
public void readFrom(com.qq.taf.jce.JceInputStream _is){
this.newParam = (java.util.ArrayList<String>) _is.read(cache_newParam, 0, false);
}
}
示例如下:
NewCommonConchArgs args = ConchService.getJceStruct(conchPushInfo, new NewCommonConchArgs(), false);
解析后通过args.newParam.get(i)
的方式获取该云指令传递的参数数据。