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)的方式获取该云指令传递的参数数据。

Copyright © 2013-2023 Tencent Cloud. all right reserved,powered by GitbookUpdate Time 2023-08-31 14:46:07

results matching ""

    No results matching ""