本地通信开发实践
更新时间:2019-01-14 00:52:24
1. 概述
1.1 背景
当APP和设备处于局域网环境中,未和外网连接,往往需要通过本地通信的方式,对设备进行控制和查询。阿里云IoT提供了一种本地通信方案,可以达到该目标。
设备端的Link Kit SDK中已内置本地通信功能(ALCS),这样集成Link Kit SDK的设备,即可使用本地通信能力。集成了ALCS client功能的android app、IOS app、边缘网关等终端都可以通过本地控制与芯片模组产品交互。
1.2 流程
1.2.1 APP端流程
第一次连接和认证阶段 APP 会和云端有一次数据交互来获取认证信息,连接认证成功之后会将认证数据保存在本地,后续的连接认证优先使用本地缓存的认证数据。
1.2.2 设备端流程
对于本地通信功能,设备端只需要使用IOT_RegisterCallback函数注册ITE_PROPERTY_GET事件,实现对应回调函数即可。
2. APP开发
2.1 IOS
iOS端开发依赖 IMSThingCapability.framework。其使用方法,请参见 设备模型 SDK
pod 'IMSThingCapability'
2.2 Android
安卓端开发请依赖 public-tmp-ext-boneplugin SDK 包。请参见 设备模型 SDK
版本号已最新发布的版本为准
3 设备端开发
对于本地通信功能,设备端只需要使用IOT_RegisterCallback函数注册ITE_PROPERTY_GET事件,实现对应回调函数即可。
当该事件被触发时,用户收到的payload格式为本地通信请求的设备属性列表,以json格式描述:
如:["property1","property2","property3"]
当用户回复该本地通信请求时,需按如下格式回复:
{"property1":...,"property2":...,"property3":...}
例:
property1为int型,property2为字符串类型,property3为复合类型,包含int型的item1和字符串类型的item2:
{"property1":23,"property2":"hello,world","property3":{"item1":23,"item2":"hello"}}
具体代码可参考SDK Example中的user_property_get_event_handler回调函数的实现: