imSiLop
getCountryList setCountry setLanguage phoneRegister emailRegister presentLogin logout getUser updateAccountProfile startDiscovery getLanDevices stopDiscovery setAliProvisionMode setDevice startAddDevice toggleProvision stopAddDevice getDeviceToken
概述
封装了阿里云的配网sdk
使用此模块之前需先配置 config.xml 文件,方法如下
- 配置示例:
<feature name="imSiLop">
<param name="regionType" value=""/>
<param name="appType" value=""/>
</feature>
字段描述:
regionType:该字段用于确定app的使用范围,按飞燕平台设计,app跟设备分为国内跟海外两套环境,而且彼此隔离。如app连接国内服务器时,无法添加海外出货的设备,反之国内连接海外服务器时,国内出货的设备也无法添加。基于此,在app初始化IoT SDKs,需要明确app是只工作在国内还是会在国内跟海外之间进行切换。
- 取值范围: 0:前APP既支持连接中国大陆服务器,又支持连接海外服务器,海外连接哪个region,取决于 账号注册时所选国家。当未设置config时会默认使用此值 1:当前APP只支持连接中国大陆服务器
默认:0
appType:APP是测试版还是正式版。
取值范围: 0:正式版 1:测试版
默认:0
集成安全图片
安全图片是为应用程序提供基本安全性的图片加密软件。您在开发App应用程序时需要下载相应的安全图片,并将安全图片集成到App工程中。
从API Level 8开始,从平台下载的安全图片名称与站点(中国站/国际站)、版本(测试版/正式版)有关,如下表所示:
- | 测试版 | 正式版 |
---|---|---|
中国版 | yw_1222_china_develop.jpg | yw_1222_china_production.jpg |
国际版 | yw_1222_oversea_develop.jpg | yw_1222_oversea_production.jpg |
集成方法如下:
下载 imSiLopAppendix 模块 zip 包并解压,把 zip 包内 target 目录下的 yw_1222_china_develop.jpg 文件替换为自己从自有品牌App页面下载的文件。然后重新压缩为 zip 包文件上传自定义模块,云编译时勾选该模块。
模块接口
getCountryList
查询可用的国家(地区)列表,根据当前语言设置优先从本地缓存读取数据,本地没有有效缓存则从云端拉数据
getCountryList(callback(ret))
callback(ret)
ret:
- 类型:JSON 对象
- 内部字段:
{
countrys:[{
areaName:'', //字符串类型,国家(地区)名称
code:'', //字符串类型,国家(地区)区号
pinyin:'', //国家(地区)名称的拼音
isoCode:'', //字符串类型,ISO Country Code - 标准国家码
domainAbbreviation:'',//字符串类型,标准国家码简写
}]
}
示例代码
var imSiLop= api.require('imSiLop');
imSiLop.getCountryList(function(ret) {
alert(JSON.stringify(ret));
});
可用性
iOS、Android系统
可提供的1.0.0及更高版本
setCountry
用户选中某个国家(地区)后,调用这个接口设置国家(地区),sdk内部会持久化保存设置,无需每次重启app都做设置
setCountry({params},callback(ret))
params
country:
- 类型:json对象类型
- 描述:国家(地区)信息
- 内部字段:
{
areaName:'', //字符串类型,国家(地区)名称
code:'', //字符串类型,国家(地区)区号
pinyin:'', //国家(地区)名称的拼音
isoCode:'', //字符串类型,ISO Country Code - 标准国家码
domainAbbreviation:'',//字符串类型,标准国家码简写
}
callback(ret)
ret:
- 类型:JSON 对象
- 内部字段:
{
needRestartApp:true, //布尔类型,中国大陆与其他区域的切换是否需要重启app
}
示例代码
var imSiLop= api.require('imSiLop');
imSiLop.setCountry({
country:{
areaName:'', //字符串类型,国家(地区)名称
code:'', //字符串类型,国家(地区)区号
pinyin:'', //国家(地区)名称的拼音
isoCode:'', //字符串类型,ISO Country Code - 标准国家码
domainAbbreviation:'',//字符串类型,标准国家码简写
}
},callback(ret){
alert(JSON.stringify(ret));
});
可用性
iOS、Android系统
可提供的1.0.0及更高版本
setLanguage
当应用使用的语言变化时,调用此api设置IoT sdks使用的语言,当未设置过语言时,SDK默认取值是’跟随系统语言’。当调用此api设置过语言后,sdkl内部会固化保存,下次app启动,自动读取上次设置的语言
setLanguage({params},callback(ret))
params
language:
- 类型:字符串类型
- 描述:语言,目前支持:中文简体、英文、法语、德语、日语、韩语、西班牙语、俄语、印度语、意大利语。对应的取值:zh-CN、en-US、fr-FR、de-DE、ja-JP、ko-KR、es-ES、ru-RU、hi-IN、it-IT
- 默认:’zh-CN’
示例代码
var imSiLop= api.require('imSiLop');
imSiLop.setLanguage({
language:''
});
可用性
iOS、Android系统
可提供的1.0.0及更高版本
phoneRegister
显示手机注册页面
phoneRegister(callback(ret,err))
callback(ret)
ret:
- 类型:JSON 对象
- 内部字段:
{
status:true, //布尔类型,true:注册成功,false:用户取消注册
}
示例代码
var imSiLop= api.require('imSiLop');
imSiLop.phoneRegister(function(ret) {
alert(JSON.stringify(ret));
});
可用性
iOS、Android系统
可提供的1.0.0及更高版本
emailRegister
显示邮箱注册页面
emailRegister(callback(ret,err))
callback(ret)
ret:
- 类型:JSON 对象
- 内部字段:
{
status:true, //布尔类型,true:注册成功,false:用户取消注册
}
示例代码
var imSiLop= api.require('imSiLop');
imSiLop.emailRegister(function(ret) {
alert(JSON.stringify(ret));
});
可用性
iOS、Android系统
可提供的1.0.0及更高版本
presentLogin
显示登录页面
presentLogin(callback(ret,err))
callback(ret,err)
ret:
- 类型:JSON 对象
- 内部字段:
{
status:true, //布尔类型,是否登陆成功
}
err:
- 类型:JSON 对象
- 描述:登录失败对应的错误;取消登录同样会返回一个错误码
- 内部字段:
{
code:, //数字类型;错误码
msg:'', //字符串类型;错误信息
}
示例代码
var imSiLop= api.require('imSiLop');
imSiLop.presentLogin(function(ret,err) {
if (ret) {
alert(JSON.stringify(ret));
} else {
alert(JSON.stringify(err));
}
});
可用性
iOS、Android系统
可提供的1.0.0及更高版本
getUser
获取已经登录的帐号信息
getUser(callback(ret))
callback(ret)
ret:
- 类型:JSON 对象
- 内部字段:
{
accountId:'', //字符串类型,accountId
displayName:'', //字符串类型,名称
avatarUrl:'', //字符串类型,头像url地址
mobile:'', //字符串类型,mobile
mobileLocationCode:'', //字符串类型,mobileLocationCode
hasPassword:true, //布尔类型,是否设置了密码
openId:'', //字符串类型,如果使用三方授权登录,第三方账号的 id 信息
extInfos:'', //字符串类型,扩展信息
openaccountInfoDict:'', //json对象,服务端返回的所有account数据都在这里面
oauthInfoDict:'', //json对象,使用三方授权登录时返回的三方账号数据,包含id,nick,avatarUrl,gender(0: 未知, 1:男, 2:女)
}
示例代码
var imSiLop= api.require('imSiLop');
imSiLop.presentLogin(function(ret) {
alert(JSON.stringify(ret));
});
可用性
iOS、Android系统
可提供的1.0.0及更高版本
updateAccountProfile
更新用户信息(修改头像需要先将头像图片存储到云端,获取该图片的URL)
updateAccountProfile({params},callback(ret,err))
params
accountProfile:
- 类型:json对象类型
- 描述:用户信息
- 示例:{‘displayName’:’name1’,’avatarUrl’:’url’}
callback(ret,err)
ret:
- 类型:JSON 对象
- 内部字段:
{
status:true, //布尔类型,是否更新成功
}
err:
- 类型:JSON 对象
- 内部字段:
{
code:, //数字类型;错误码
msg:'', //字符串类型;错误信息
}
示例代码
var imSiLop= api.require('imSiLop');
imSiLop.updateAccountProfile({
accountProfile:{}
},callback(ret,err){
if (ret) {
alert(JSON.stringify(ret));
} else {
alert(JSON.stringify(err));
}
});
可用性
iOS、Android系统
可提供的1.0.0及更高版本
logout
退出登陆
logout()
示例代码
var imSiLop= api.require('imSiLop');
imSiLop.logout();
可用性
iOS、Android系统
可提供的1.0.0及更高版本
startDiscovery
启动发现设备流程,包括本地发现的设备以及云端待配网设备
startDiscovery(callback(ret,err))
callback(ret,err)
ret:
- 类型:JSON 对象
- 内部字段:
{
status:true, //布尔类型,是否成功
devices:[{ //Json数组类型;设备列表
productKey:'', //字符串类型;设备productKey
deviceName:'', //字符串类型;设备名称
mac:'', //字符串类型;设备Mac
ip:'', //字符串类型;设备IP
iotId:'', //字符串类型;设备iotID
devType:'', //字符串类型;待配网设备联网类型:0代表wifi设备;1代表ethernet设备(网线连接):2代表路由器 ; @"ble_subtype_2" 代表蓝牙辅助配网设备
token:'', //字符串类型;设备配网完成后得到的token,用于下一步绑定用
linkType:0, //数字类型,指定配网方式
//取值如下
//0:由native SDK自行决定在广播配网,热点配网,路由器配网,路由器配网中选择最优的配网方案
//1:设备路由器配网方案,在一般配网方案失败后,可切换到路由器方案
//2:设备广播配网方案,在一般配网方案失败后,可切换到广播配网方案
//3:手机热点配网方案,在一般配网方案失败后,可切换到手机热点方案
//4:设备热点配网方案
//5:设备广播配网方案,一对多配网模式
//6:蓝牙辅助配网方案,在一般配网方案失败后,可切换此方案
//7:二维码配网方案
//8:零配批量配网方案
regProductKey:'', //字符串类型;发现待配网设备的设备的productKey
regDeviceName:'', //字符串类型;发现待配网设备的设备的productNeme
addDeviceFrom:'', //字符串类型;云端返回待配网设备来源:“ROUTER”--代表路由器发现,“ZERO_DEVICE”代表零配发现
productEncryptKey:'', //字符串类型;产品加密密钥
securityRandom:'', //字符串类型;加密过程安全随机数因子
protocolVersion:'', //字符串类型;协议版本
traceId:'', //字符串类型;埋点ID Tracker
productId:'', //字符串类型;待配设备产品ID
softApSsidPrefix:'', //字符串类型;针对 linkType 为4,设备热点方案,自定义设备热点前缀
softApNoNeedSwitchBackRouter:'', //布尔类型;针对 linkType 为4,设备热点方案,是否不需要切换回原WiFi, true 则不强制切换回原WiFi
supportServices:[], //数组类型,设备配网完成后得到的设备服务信息,设备热点配网模式下可能返回
supportServicesVersion:{},//json对象类型;设备配网完成后得到的设备服务版本号,设备热点配网模式下可能返回
fwVersion:'' //字符串类型;设备固件版本
}]
}
err:
- 类型:JSON 对象
- 内部字段:
{
code:, //数字类型;错误码
msg:'', //字符串类型;错误信息
}
示例代码
var imSiLop= api.require('imSiLop');
imSiLop.startDiscovery(function(ret,err) {
if (ret) {
alert(JSON.stringify(ret));
} else {
alert(JSON.stringify(err));
}
});
可用性
iOS、Android系统
可提供的1.0.0及更高版本
getLanDevices
获取所有发现的设备:包括待配网、已配网待绑定、已绑定
getLanDevices()
callback(ret)
ret:
- 类型:JSON 对象
- 内部字段:
{
status:true, //布尔类型,是否成功
devices:[{ //Json数组类型;设备列表
productKey:'', //字符串类型;设备productKey
deviceName:'', //字符串类型;设备名称
mac:'', //字符串类型;设备Mac
ip:'', //字符串类型;设备IP
iotId:'', //字符串类型;设备iotID
devType:'', //字符串类型;待配网设备联网类型:0代表wifi设备;1代表ethernet设备(网线连接):2代表路由器 ; @"ble_subtype_2" 代表蓝牙辅助配网设备
token:'', //字符串类型;设备配网完成后得到的token,用于下一步绑定用
linkType:0, //数字类型,指定配网方式
//取值如下
//0:由native SDK自行决定在广播配网,热点配网,路由器配网,路由器配网中选择最优的配网方案
//1:设备路由器配网方案,在一般配网方案失败后,可切换到路由器方案
//2:设备广播配网方案,在一般配网方案失败后,可切换到广播配网方案
//3:手机热点配网方案,在一般配网方案失败后,可切换到手机热点方案
//4:设备热点配网方案
//5:设备广播配网方案,一对多配网模式
//6:蓝牙辅助配网方案,在一般配网方案失败后,可切换此方案
//7:二维码配网方案
//8:零配批量配网方案
regProductKey:'', //字符串类型;发现待配网设备的设备的productKey
regDeviceName:'', //字符串类型;发现待配网设备的设备的productNeme
addDeviceFrom:'', //字符串类型;云端返回待配网设备来源:“ROUTER”--代表路由器发现,“ZERO_DEVICE”代表零配发现
productEncryptKey:'', //字符串类型;产品加密密钥
securityRandom:'', //字符串类型;加密过程安全随机数因子
protocolVersion:'', //字符串类型;协议版本
traceId:'', //字符串类型;埋点ID Tracker
productId:'', //字符串类型;待配设备产品ID
softApSsidPrefix:'', //字符串类型;针对 linkType 为4,设备热点方案,自定义设备热点前缀
softApNoNeedSwitchBackRouter:'', //布尔类型;针对 linkType 为4,设备热点方案,是否不需要切换回原WiFi, true 则不强制切换回原WiFi
supportServices:[], //数组类型,设备配网完成后得到的设备服务信息,设备热点配网模式下可能返回
supportServicesVersion:{},//json对象类型;设备配网完成后得到的设备服务版本号,设备热点配网模式下可能返回
fwVersion:'' //字符串类型;设备固件版本
}]
}
示例代码
var imSiLop= api.require('imSiLop');
imSiLop.getLanDevices(function(ret) {
alert(JSON.stringify(ret));
});
可用性
iOS、Android系统
可提供的1.0.0及更高版本
stopDiscovery
停止发现设备流程
stopDiscovery()
示例代码
var imSiLop= api.require('imSiLop');
imSiLop.stopDiscovery();
可用性
iOS、Android系统
可提供的1.0.0及更高版本
setDevice
设置待添加的设备属性,在 startAddDevice 调用前传入相关信息,在同一时刻只能有一个待添加设备存在
setDevice({params})
params
device:
- 类型:json对象类型
- 描述:(可选项)设备的json对象,传入json对象必须和startDiscovery、getLanDevices接口获取的json对象一致
示例代码
var imSiLop= api.require('imSiLop');
imSiLop.setDevice({
device:{}
});
可用性
iOS、Android系统
可提供的1.0.0及更高版本
setAliProvisionMode
切换配网模式
setAliProvisionMode({params})
params
linkType:
- 类型:数字类型
- 描述:(可选项)配网模式
- 取值如下
- 0:由native SDK自行决定在广播配网,热点配网,路由器配网,路由器配网中选择最优的配网方案
- 1:设备路由器配网方案,在一般配网方案失败后,可切换到路由器方案
- 2:设备广播配网方案,在一般配网方案失败后,可切换到广播配网方案
- 3:手机热点配网方案,在一般配网方案失败后,可切换到手机热点方案
- 4:设备热点配网方案
- 5:设备广播配网方案,一对多配网模式
- 6:蓝牙辅助配网方案,在一般配网方案失败后,可切换此方案
- 7:二维码配网方案
- 8:零配批量配网方案
- 默认:0
示例代码
var imSiLop= api.require('imSiLop');
imSiLop.setAliProvisionMode({
linkType:0
});
可用性
iOS、Android系统
可提供的1.0.0及更高版本
startAddDevice
开始添加设备流程
startAddDevice()
callback(ret)
ret:
- 类型:JSON 对象
- 内部字段:
{
state:'', //字符串类型,返回类型
//取值如下:
//notifyPrecheck:配网预检查配网结果回调
//notifyProvisionPrepare:用户引导页(一键配网和热点配网会有相关回调,指引用户接入相关操作)
//notifyProvisioning:通知上层UI:正在进行配网
//notifyProvisioningNotice:手机热点配网状态回掉调,提示用户关闭热点并切回以前的wifi,optional
//notifyProvisioningNoticeForSoftAp:设备热点状态回调,status 状态码 1=提示应该切换到设备热点; 2=已经切换到设备热点 3=已发送数据(info里面会有"token") 4=应该切换回路由器 5=已经切换回路由器
//notifyProvisioningNoticeForQR:摄像头二维码配网模式相关回调
//notifyProvisionResult:通知上层UI:配网完成结果回调
guideCode:0, //数字类型;准备配网指导码,state == notifyProvisionPrepare时返回,1:一键配网对应页面流转:直接进入输入密码页,2:手机热点对应页面流转:用户引导开启热点页-》输入密码页,3:设备热点页面流转: e.g 引导切换热点页-》输入密码页,4:二维码配网页面流程
status:0, //数字类型,state == notifyProvisioningNoticeForSoftAp时返回,1=应该切换到设备热点,2=已经切换到设备热点,3=已发送数据。dic里面会有"token"、"service"等信息,可能支持的service:"ErrCode",@"OfflineOTA",@"OfflineLog",@"BatchEnrollee",4=应该切换回路由器 5=已经切换回路由器
info:{}, //json对象,state == notifyProvisioningNoticeForSoftAp时返回
qrcode:'', //字符串类型,需要UI展现的二维码内容,state == notifyProvisioningNoticeForQR时返回
device:{ //json对象,设备信息,state == notifyProvisionResult时返回
productKey:'', //字符串类型;设备productKey
deviceName:'', //字符串类型;设备名称
mac:'', //字符串类型;设备Mac
ip:'', //字符串类型;设备IP
iotId:'', //字符串类型;设备iotID
devType:'', //字符串类型;待配网设备联网类型:0代表wifi设备;1代表ethernet设备(网线连接):2代表路由器 ; @"ble_subtype_2" 代表蓝牙辅助配网设备
token:'', //字符串类型;设备配网完成后得到的token,用于下一步绑定用
linkType:0, //数字类型,指定配网方式
//取值如下
//0:由native SDK自行决定在广播配网,热点配网,路由器配网,路由器配网中选择最优的配网方案
//1:设备路由器配网方案,在一般配网方案失败后,可切换到路由器方案
//2:设备广播配网方案,在一般配网方案失败后,可切换到广播配网方案
//3:手机热点配网方案,在一般配网方案失败后,可切换到手机热点方案
//4:设备热点配网方案
//5:设备广播配网方案,一对多配网模式
//6:蓝牙辅助配网方案,在一般配网方案失败后,可切换此方案
//7:二维码配网方案
//8:零配批量配网方案
regProductKey:'', //字符串类型;发现待配网设备的设备的productKey
regDeviceName:'', //字符串类型;发现待配网设备的设备的productNeme
addDeviceFrom:'', //字符串类型;云端返回待配网设备来源:“ROUTER”--代表路由器发现,“ZERO_DEVICE”代表零配发现
productEncryptKey:'', //字符串类型;产品加密密钥
securityRandom:'', //字符串类型;加密过程安全随机数因子
protocolVersion:'', //字符串类型;协议版本
traceId:'', //字符串类型;埋点ID Tracker
productId:'', //字符串类型;待配设备产品ID
softApSsidPrefix:'', //字符串类型;针对 linkType 为4,设备热点方案,自定义设备热点前缀
softApNoNeedSwitchBackRouter:'', //布尔类型;针对 linkType 为4,设备热点方案,是否不需要切换回原WiFi, true 则不强制切换回原WiFi
supportServices:[], //数组类型,设备配网完成后得到的设备服务信息,设备热点配网模式下可能返回
supportServicesVersion:{},//json对象类型;设备配网完成后得到的设备服务版本号,设备热点配网模式下可能返回
fwVersion:'' //字符串类型;设备固件版本
},
err:{ //json对象,错误信息,state == notifyPrecheck、notifyProvisionResult时返回
code:, //数字类型;错误码
msg:'', //字符串类型;错误信息
}
}
}
示例代码
var imSiLop= api.require('imSiLop');
imSiLop.startAddDevice(function(ret) {
alert(JSON.stringify(ret));
});
可用性
iOS、Android系统
可提供的1.0.0及更高版本
toggleProvision
传入配网所需参数,UI 层在收到 notifyProvisionPrepare 事件,引导用户输入
toggleProvision({params})
params
ssid:
- 类型:字符串类型
- 描述:路由器 wifi 名称
password:
- 类型:字符串类型
- 描述:路由器 wifi 密码
timeout:
- 类型:数字类型
- 描述:(可选项)配网过程超时时间,以秒为单位
- 默认:60
示例代码
var imSiLop= api.require('imSiLop');
imSiLop.toggleProvision({
ssid:'',
password:'',
timeout:60
});
可用性
iOS、Android系统
可提供的1.0.0及更高版本
stopAddDevice
中止添加设备配网流程
stopAddDevice()
示例代码
var imSiLop= api.require('imSiLop');
imSiLop.stopAddDevice();
可用性
iOS、Android系统
可提供的1.0.0及更高版本
getDeviceToken
获取已配网设备的token,用于设备绑定
getDeviceToken({params})
params
productKey:
- 类型:字符串类型
- 描述:产品类型
deviceName:
- 类型:字符串类型
- 描述:设备名称
timeout:
- 类型:数字类型
- 描述:(可选项)请求token超时时间
- 默认:60
callback(ret)
ret:
- 类型:JSON 对象
- 内部字段:
{
success:true, //布尔类型;是否成功
token:'' //字符串类型,token
}
示例代码
var imSiLop= api.require('imSiLop');
imSiLop.getDeviceToken({
ssid:'',
password:'',
timeout:60
},function(ret) {
alert(JSON.stringify(ret));
});
可用性
iOS、Android系统
可提供的1.0.0及更高版本