设备SDK使用说明(Android)

IoT平台Android设备端SDK,基于IoT平台原生代码进行交叉编译,功能包括设备动态注册和IoT平台的上下行消息通信

1 使用入门

  1. IoT平台账号创建产品,用于注册设备。
  2. Manifest中添加IotServices,指定独立process
<manifest
    ...
    <application
        ...
          <service
            android:name="com.seewo.iotsdk.core.IotService"
            android:process=":iot" />
    </application>
</manifest>
  1. Application中配置IotSDK, 由于iot服务在独立进程中,Application onCreate会执行两次,需在对应进程中执行如下代码
RegisterConfig registerConfig = new RegisterConfig.Builder()
        .setUrl(xxx)
        .setProductKey(xxx)
        .setProductSecret(xxx)
        .setDeviceIdType(xxx)
        .setDeviceIdValues(xxx)
        .build();
//设置产品配置,用于设备注册
IotSDK.INSTANCE.setupRegisterConfig(registerConfig);
//开启日志
IotSDK.INSTANCE.setLog(true);
...
  1. 在应用的Service中实例化IotClient,以保证应用退出到后台可以继续保持长连接
//实例化IotClient,传入Broker地址
mIotClient = new IotClient(mContext, mBrokerUrl);
mIotClient.setCallback(new IotCallback() {
    @Override
    public void onConnectCompleted(DeviceAuth deviceAuth) {
        //完成连接
    }

    @Override
    public void onConnectFailed(IotException iotException) {
        //连接失败, IotSDK默认会进行重试,应用可自行配置失败重试
    }

    @Override
    public void onConnectionLost() {
        //连接断开,IotSDK native层内部会进行断线重连
    }
});

if (!mIotClient.isConnected()) {
    mIotClient.connect();
}

2 具体用法

IotSDK 备注
void setLog(boolean isDebug) 开启日志
void setupRegisterConfig(RegisterConfig registerConfig) 设置设备注册配置
RegisterConfig.Builder 备注
setUrl(String url) 设备注册地址
setProductKey(String productKey) 产品认证信息之产品key
setProductSecret(String productSecret) 产品认证信息之密钥
setDeviceIdType(String deviceIdType) 设备唯一标识符类型,可自定义如uid
setDeviceIdValues(ArrayList<String> deviceIdValues) 设备唯一标识符值集(有多个时,如mac列表)
IotClient 备注
IotClient(Context context, String url) 构造方法
IotClient(Context context, jString url, DeviceAuth deviceAuth) 构造方法
void setCallback(IotCallback iotCallback) 设置回调
void connect() MQTT建立连接
boolean isConnected() 是否连接
void close() 关闭MQTT连接并释放资源
void setPropertyGetCallback(OnTslDownCallback onTslDownCallback) 设置获取属性回调
void setPropertySetCallback(OnTslDownCallback onTslDownCallback) 设置设置属性回调
void setServiceCallback(OnTslDownCallback onTslDownCallback) 设置服务调用回调
void subscribeCustom(String topic, OnCustomTopicCallback onCustomTopicCallback) 订阅自定义主题
void postEvent(String method, IotUpPO params) 事件上报
void postProperty(String method, IotUpPO params, boolean isPostNow) 属性上报
<T> void getProperty(String method, IotUpPO params, OnTslUpCallback<T> callback) 上行属性获取
<T> void callService(String method, IotUpPO params, OnTslUpCallback<T> callback) 上行服务调用
void callService(String method, IotUpPO params) 上行服务调用
void callService(String method) 上行服务调用
void publishCustom(String topic, IotUpPO params) 发布自定义主题
void setDeviceAuth(DeviceAuth deviceAuth) 自定义设备三元组
void setRetryConfig(RetryConfig retryConfig) 自定义失败重试机制
RetryConfig.Builder 备注
setRetryCount(int retryCount) 设置失败重试次数(-1表示无限重试),默认为-1
setDelayMaxSecond(int delayMaxSecond) 设置最大的重试时间间隔,默认为60s
setDelayBaseNum(int delayBaseNum) 设置重试时间间隔的底数,默认为2,即时间间隔为2^n,n为当前重试次数

3 更多说明

  1. 设备连接到iot需要先注册,第一种是通过配置RegisterConfig进行注册,另一种途径是交由业务的服务端进行注册来获取设备三元组,再通过setupDeviceAuth()配置。
  2. 失败重试是指Iot注册或者连接过程中失败的重试,IotSDK使用指数退避算法进行重试,具体的重试配置由应用业务决定
  3. 执行Iot连接会启动一个Iot进程Service。Iot进程只负责Iot通信,不处理保活,如果主进程销毁, Iot进程也会销毁,应用根据需要对主进程进行保活
  4. Iot上行下行通信中的请求参数params是key-value形式,符合TSL物模型,因此不可以直接传递List数据,需要包装成key-value形式

4 使用示例

sample