imSiLop

立即使用

getCountryList setCountry setLanguage phoneRegister emailRegister presentLogin logout getUser updateAccountProfile startDiscovery getLanDevices stopDiscovery setAliProvisionMode setDevice startAddDevice toggleProvision stopAddDevice getDeviceToken

概述

封装了阿里云的配网sdk

使用此模块之前需先配置 config.xml 文件,方法如下

  • 配置示例:
  1. <feature name="imSiLop">
  2. <param name="regionType" value=""/>
  3. <param name="appType" value=""/>
  4. </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.jpgyw_1222_china_production.jpg
国际版yw_1222_oversea_develop.jpgyw_1222_oversea_production.jpg

集成方法如下:

下载 imSiLopAppendix 模块 zip 包并解压,把 zip 包内 target 目录下的 yw_1222_china_develop.jpg 文件替换为自己从自有品牌App页面下载的文件。然后重新压缩为 zip 包文件上传自定义模块,云编译时勾选该模块。

模块接口

getCountryList

查询可用的国家(地区)列表,根据当前语言设置优先从本地缓存读取数据,本地没有有效缓存则从云端拉数据

getCountryList(callback(ret))

callback(ret)

ret:

  • 类型:JSON 对象
  • 内部字段:
  1. {
  2. countrys:[{
  3. areaName:'', //字符串类型,国家(地区)名称
  4. code:'', //字符串类型,国家(地区)区号
  5. pinyin:'', //国家(地区)名称的拼音
  6. isoCode:'', //字符串类型,ISO Country Code - 标准国家码
  7. domainAbbreviation:'',//字符串类型,标准国家码简写
  8. }]
  9. }

示例代码

  1. var imSiLop= api.require('imSiLop');
  2. imSiLop.getCountryList(function(ret) {
  3. alert(JSON.stringify(ret));
  4. });

可用性

iOS、Android系统

可提供的1.0.0及更高版本

setCountry

用户选中某个国家(地区)后,调用这个接口设置国家(地区),sdk内部会持久化保存设置,无需每次重启app都做设置

setCountry({params},callback(ret))

params

country:

  • 类型:json对象类型
  • 描述:国家(地区)信息
  • 内部字段:
  1. {
  2. areaName:'', //字符串类型,国家(地区)名称
  3. code:'', //字符串类型,国家(地区)区号
  4. pinyin:'', //国家(地区)名称的拼音
  5. isoCode:'', //字符串类型,ISO Country Code - 标准国家码
  6. domainAbbreviation:'',//字符串类型,标准国家码简写
  7. }

callback(ret)

ret:

  • 类型:JSON 对象
  • 内部字段:
  1. {
  2. needRestartApp:true, //布尔类型,中国大陆与其他区域的切换是否需要重启app
  3. }

示例代码

  1. var imSiLop= api.require('imSiLop');
  2. imSiLop.setCountry({
  3. country:{
  4. areaName:'', //字符串类型,国家(地区)名称
  5. code:'', //字符串类型,国家(地区)区号
  6. pinyin:'', //国家(地区)名称的拼音
  7. isoCode:'', //字符串类型,ISO Country Code - 标准国家码
  8. domainAbbreviation:'',//字符串类型,标准国家码简写
  9. }
  10. },callback(ret){
  11. alert(JSON.stringify(ret));
  12. });

可用性

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’

示例代码

  1. var imSiLop= api.require('imSiLop');
  2. imSiLop.setLanguage({
  3. language:''
  4. });

可用性

iOS、Android系统

可提供的1.0.0及更高版本

phoneRegister

显示手机注册页面

phoneRegister(callback(ret,err))

callback(ret)

ret:

  • 类型:JSON 对象
  • 内部字段:
  1. {
  2. status:true, //布尔类型,true:注册成功,false:用户取消注册
  3. }

示例代码

  1. var imSiLop= api.require('imSiLop');
  2. imSiLop.phoneRegister(function(ret) {
  3. alert(JSON.stringify(ret));
  4. });

可用性

iOS、Android系统

可提供的1.0.0及更高版本

emailRegister

显示邮箱注册页面

emailRegister(callback(ret,err))

callback(ret)

ret:

  • 类型:JSON 对象
  • 内部字段:
  1. {
  2. status:true, //布尔类型,true:注册成功,false:用户取消注册
  3. }

示例代码

  1. var imSiLop= api.require('imSiLop');
  2. imSiLop.emailRegister(function(ret) {
  3. alert(JSON.stringify(ret));
  4. });

可用性

iOS、Android系统

可提供的1.0.0及更高版本

presentLogin

显示登录页面

presentLogin(callback(ret,err))

callback(ret,err)

ret:

  • 类型:JSON 对象
  • 内部字段:
  1. {
  2. status:true, //布尔类型,是否登陆成功
  3. }

err:

  • 类型:JSON 对象
  • 描述:登录失败对应的错误;取消登录同样会返回一个错误码
  • 内部字段:
  1. {
  2. code:, //数字类型;错误码
  3. msg:'', //字符串类型;错误信息
  4. }

示例代码

  1. var imSiLop= api.require('imSiLop');
  2. imSiLop.presentLogin(function(ret,err) {
  3. if (ret) {
  4. alert(JSON.stringify(ret));
  5. } else {
  6. alert(JSON.stringify(err));
  7. }
  8. });

可用性

iOS、Android系统

可提供的1.0.0及更高版本

getUser

获取已经登录的帐号信息

getUser(callback(ret))

callback(ret)

ret:

  • 类型:JSON 对象
  • 内部字段:
  1. {
  2. accountId:'', //字符串类型,accountId
  3. displayName:'', //字符串类型,名称
  4. avatarUrl:'', //字符串类型,头像url地址
  5. mobile:'', //字符串类型,mobile
  6. mobileLocationCode:'', //字符串类型,mobileLocationCode
  7. hasPassword:true, //布尔类型,是否设置了密码
  8. openId:'', //字符串类型,如果使用三方授权登录,第三方账号的 id 信息
  9. extInfos:'', //字符串类型,扩展信息
  10. openaccountInfoDict:'', //json对象,服务端返回的所有account数据都在这里面
  11. oauthInfoDict:'', //json对象,使用三方授权登录时返回的三方账号数据,包含id,nick,avatarUrl,gender(0: 未知, 1:男, 2:女)
  12. }

示例代码

  1. var imSiLop= api.require('imSiLop');
  2. imSiLop.presentLogin(function(ret) {
  3. alert(JSON.stringify(ret));
  4. });

可用性

iOS、Android系统

可提供的1.0.0及更高版本

updateAccountProfile

更新用户信息(修改头像需要先将头像图片存储到云端,获取该图片的URL)

updateAccountProfile({params},callback(ret,err))

params

accountProfile:

  • 类型:json对象类型
  • 描述:用户信息
  • 示例:{‘displayName’:’name1’,’avatarUrl’:’url’}

callback(ret,err)

ret:

  • 类型:JSON 对象
  • 内部字段:
  1. {
  2. status:true, //布尔类型,是否更新成功
  3. }

err:

  • 类型:JSON 对象
  • 内部字段:
  1. {
  2. code:, //数字类型;错误码
  3. msg:'', //字符串类型;错误信息
  4. }

示例代码

  1. var imSiLop= api.require('imSiLop');
  2. imSiLop.updateAccountProfile({
  3. accountProfile:{}
  4. },callback(ret,err){
  5. if (ret) {
  6. alert(JSON.stringify(ret));
  7. } else {
  8. alert(JSON.stringify(err));
  9. }
  10. });

可用性

iOS、Android系统

可提供的1.0.0及更高版本

logout

退出登陆

logout()

示例代码

  1. var imSiLop= api.require('imSiLop');
  2. imSiLop.logout();

可用性

iOS、Android系统

可提供的1.0.0及更高版本

startDiscovery

启动发现设备流程,包括本地发现的设备以及云端待配网设备

startDiscovery(callback(ret,err))

callback(ret,err)

ret:

  • 类型:JSON 对象
  • 内部字段:
  1. {
  2. status:true, //布尔类型,是否成功
  3. devices:[{ //Json数组类型;设备列表
  4. productKey:'', //字符串类型;设备productKey
  5. deviceName:'', //字符串类型;设备名称
  6. mac:'', //字符串类型;设备Mac
  7. ip:'', //字符串类型;设备IP
  8. iotId:'', //字符串类型;设备iotID
  9. devType:'', //字符串类型;待配网设备联网类型:0代表wifi设备;1代表ethernet设备(网线连接):2代表路由器 ; @"ble_subtype_2" 代表蓝牙辅助配网设备
  10. token:'', //字符串类型;设备配网完成后得到的token,用于下一步绑定用
  11. linkType:0, //数字类型,指定配网方式
  12. //取值如下
  13. //0:由native SDK自行决定在广播配网,热点配网,路由器配网,路由器配网中选择最优的配网方案
  14. //1:设备路由器配网方案,在一般配网方案失败后,可切换到路由器方案
  15. //2:设备广播配网方案,在一般配网方案失败后,可切换到广播配网方案
  16. //3:手机热点配网方案,在一般配网方案失败后,可切换到手机热点方案
  17. //4:设备热点配网方案
  18. //5:设备广播配网方案,一对多配网模式
  19. //6:蓝牙辅助配网方案,在一般配网方案失败后,可切换此方案
  20. //7:二维码配网方案
  21. //8:零配批量配网方案
  22. regProductKey:'', //字符串类型;发现待配网设备的设备的productKey
  23. regDeviceName:'', //字符串类型;发现待配网设备的设备的productNeme
  24. addDeviceFrom:'', //字符串类型;云端返回待配网设备来源:“ROUTER”--代表路由器发现,“ZERO_DEVICE”代表零配发现
  25. productEncryptKey:'', //字符串类型;产品加密密钥
  26. securityRandom:'', //字符串类型;加密过程安全随机数因子
  27. protocolVersion:'', //字符串类型;协议版本
  28. traceId:'', //字符串类型;埋点ID Tracker
  29. productId:'', //字符串类型;待配设备产品ID
  30. softApSsidPrefix:'', //字符串类型;针对 linkType 为4,设备热点方案,自定义设备热点前缀
  31. softApNoNeedSwitchBackRouter:'', //布尔类型;针对 linkType 为4,设备热点方案,是否不需要切换回原WiFi, true 则不强制切换回原WiFi
  32. supportServices:[], //数组类型,设备配网完成后得到的设备服务信息,设备热点配网模式下可能返回
  33. supportServicesVersion:{},//json对象类型;设备配网完成后得到的设备服务版本号,设备热点配网模式下可能返回
  34. fwVersion:'' //字符串类型;设备固件版本
  35. }]
  36. }

err:

  • 类型:JSON 对象
  • 内部字段:
  1. {
  2. code:, //数字类型;错误码
  3. msg:'', //字符串类型;错误信息
  4. }

示例代码

  1. var imSiLop= api.require('imSiLop');
  2. imSiLop.startDiscovery(function(ret,err) {
  3. if (ret) {
  4. alert(JSON.stringify(ret));
  5. } else {
  6. alert(JSON.stringify(err));
  7. }
  8. });

可用性

iOS、Android系统

可提供的1.0.0及更高版本

getLanDevices

获取所有发现的设备:包括待配网、已配网待绑定、已绑定

getLanDevices()

callback(ret)

ret:

  • 类型:JSON 对象
  • 内部字段:
  1. {
  2. status:true, //布尔类型,是否成功
  3. devices:[{ //Json数组类型;设备列表
  4. productKey:'', //字符串类型;设备productKey
  5. deviceName:'', //字符串类型;设备名称
  6. mac:'', //字符串类型;设备Mac
  7. ip:'', //字符串类型;设备IP
  8. iotId:'', //字符串类型;设备iotID
  9. devType:'', //字符串类型;待配网设备联网类型:0代表wifi设备;1代表ethernet设备(网线连接):2代表路由器 ; @"ble_subtype_2" 代表蓝牙辅助配网设备
  10. token:'', //字符串类型;设备配网完成后得到的token,用于下一步绑定用
  11. linkType:0, //数字类型,指定配网方式
  12. //取值如下
  13. //0:由native SDK自行决定在广播配网,热点配网,路由器配网,路由器配网中选择最优的配网方案
  14. //1:设备路由器配网方案,在一般配网方案失败后,可切换到路由器方案
  15. //2:设备广播配网方案,在一般配网方案失败后,可切换到广播配网方案
  16. //3:手机热点配网方案,在一般配网方案失败后,可切换到手机热点方案
  17. //4:设备热点配网方案
  18. //5:设备广播配网方案,一对多配网模式
  19. //6:蓝牙辅助配网方案,在一般配网方案失败后,可切换此方案
  20. //7:二维码配网方案
  21. //8:零配批量配网方案
  22. regProductKey:'', //字符串类型;发现待配网设备的设备的productKey
  23. regDeviceName:'', //字符串类型;发现待配网设备的设备的productNeme
  24. addDeviceFrom:'', //字符串类型;云端返回待配网设备来源:“ROUTER”--代表路由器发现,“ZERO_DEVICE”代表零配发现
  25. productEncryptKey:'', //字符串类型;产品加密密钥
  26. securityRandom:'', //字符串类型;加密过程安全随机数因子
  27. protocolVersion:'', //字符串类型;协议版本
  28. traceId:'', //字符串类型;埋点ID Tracker
  29. productId:'', //字符串类型;待配设备产品ID
  30. softApSsidPrefix:'', //字符串类型;针对 linkType 为4,设备热点方案,自定义设备热点前缀
  31. softApNoNeedSwitchBackRouter:'', //布尔类型;针对 linkType 为4,设备热点方案,是否不需要切换回原WiFi, true 则不强制切换回原WiFi
  32. supportServices:[], //数组类型,设备配网完成后得到的设备服务信息,设备热点配网模式下可能返回
  33. supportServicesVersion:{},//json对象类型;设备配网完成后得到的设备服务版本号,设备热点配网模式下可能返回
  34. fwVersion:'' //字符串类型;设备固件版本
  35. }]
  36. }

示例代码

  1. var imSiLop= api.require('imSiLop');
  2. imSiLop.getLanDevices(function(ret) {
  3. alert(JSON.stringify(ret));
  4. });

可用性

iOS、Android系统

可提供的1.0.0及更高版本

stopDiscovery

停止发现设备流程

stopDiscovery()

示例代码

  1. var imSiLop= api.require('imSiLop');
  2. imSiLop.stopDiscovery();

可用性

iOS、Android系统

可提供的1.0.0及更高版本

setDevice

设置待添加的设备属性,在 startAddDevice 调用前传入相关信息,在同一时刻只能有一个待添加设备存在

setDevice({params})

params

device:

  • 类型:json对象类型
  • 描述:(可选项)设备的json对象,传入json对象必须和startDiscovery、getLanDevices接口获取的json对象一致

示例代码

  1. var imSiLop= api.require('imSiLop');
  2. imSiLop.setDevice({
  3. device:{}
  4. });

可用性

iOS、Android系统

可提供的1.0.0及更高版本

setAliProvisionMode

切换配网模式

setAliProvisionMode({params})

params

linkType:

  • 类型:数字类型
  • 描述:(可选项)配网模式
  • 取值如下
    • 0:由native SDK自行决定在广播配网,热点配网,路由器配网,路由器配网中选择最优的配网方案
    • 1:设备路由器配网方案,在一般配网方案失败后,可切换到路由器方案
      • 2:设备广播配网方案,在一般配网方案失败后,可切换到广播配网方案
      • 3:手机热点配网方案,在一般配网方案失败后,可切换到手机热点方案
      • 4:设备热点配网方案
      • 5:设备广播配网方案,一对多配网模式
      • 6:蓝牙辅助配网方案,在一般配网方案失败后,可切换此方案
      • 7:二维码配网方案
      • 8:零配批量配网方案
  • 默认:0

示例代码

  1. var imSiLop= api.require('imSiLop');
  2. imSiLop.setAliProvisionMode({
  3. linkType:0
  4. });

可用性

iOS、Android系统

可提供的1.0.0及更高版本

startAddDevice

开始添加设备流程

startAddDevice()

callback(ret)

ret:

  • 类型:JSON 对象
  • 内部字段:
  1. {
  2. state:'', //字符串类型,返回类型
  3. //取值如下:
  4. //notifyPrecheck:配网预检查配网结果回调
  5. //notifyProvisionPrepare:用户引导页(一键配网和热点配网会有相关回调,指引用户接入相关操作)
  6. //notifyProvisioning:通知上层UI:正在进行配网
  7. //notifyProvisioningNotice:手机热点配网状态回掉调,提示用户关闭热点并切回以前的wifi,optional
  8. //notifyProvisioningNoticeForSoftAp:设备热点状态回调,status 状态码 1=提示应该切换到设备热点; 2=已经切换到设备热点 3=已发送数据(info里面会有"token") 4=应该切换回路由器 5=已经切换回路由器
  9. //notifyProvisioningNoticeForQR:摄像头二维码配网模式相关回调
  10. //notifyProvisionResult:通知上层UI:配网完成结果回调
  11. guideCode:0, //数字类型;准备配网指导码,state == notifyProvisionPrepare时返回,1:一键配网对应页面流转:直接进入输入密码页,2:手机热点对应页面流转:用户引导开启热点页-》输入密码页,3:设备热点页面流转: e.g 引导切换热点页-》输入密码页,4:二维码配网页面流程
  12. status:0, //数字类型,state == notifyProvisioningNoticeForSoftAp时返回,1=应该切换到设备热点,2=已经切换到设备热点,3=已发送数据。dic里面会有"token"、"service"等信息,可能支持的service:"ErrCode",@"OfflineOTA",@"OfflineLog",@"BatchEnrollee",4=应该切换回路由器 5=已经切换回路由器
  13. info:{}, //json对象,state == notifyProvisioningNoticeForSoftAp时返回
  14. qrcode:'', //字符串类型,需要UI展现的二维码内容,state == notifyProvisioningNoticeForQR时返回
  15. device:{ //json对象,设备信息,state == notifyProvisionResult时返回
  16. productKey:'', //字符串类型;设备productKey
  17. deviceName:'', //字符串类型;设备名称
  18. mac:'', //字符串类型;设备Mac
  19. ip:'', //字符串类型;设备IP
  20. iotId:'', //字符串类型;设备iotID
  21. devType:'', //字符串类型;待配网设备联网类型:0代表wifi设备;1代表ethernet设备(网线连接):2代表路由器 ; @"ble_subtype_2" 代表蓝牙辅助配网设备
  22. token:'', //字符串类型;设备配网完成后得到的token,用于下一步绑定用
  23. linkType:0, //数字类型,指定配网方式
  24. //取值如下
  25. //0:由native SDK自行决定在广播配网,热点配网,路由器配网,路由器配网中选择最优的配网方案
  26. //1:设备路由器配网方案,在一般配网方案失败后,可切换到路由器方案
  27. //2:设备广播配网方案,在一般配网方案失败后,可切换到广播配网方案
  28. //3:手机热点配网方案,在一般配网方案失败后,可切换到手机热点方案
  29. //4:设备热点配网方案
  30. //5:设备广播配网方案,一对多配网模式
  31. //6:蓝牙辅助配网方案,在一般配网方案失败后,可切换此方案
  32. //7:二维码配网方案
  33. //8:零配批量配网方案
  34. regProductKey:'', //字符串类型;发现待配网设备的设备的productKey
  35. regDeviceName:'', //字符串类型;发现待配网设备的设备的productNeme
  36. addDeviceFrom:'', //字符串类型;云端返回待配网设备来源:“ROUTER”--代表路由器发现,“ZERO_DEVICE”代表零配发现
  37. productEncryptKey:'', //字符串类型;产品加密密钥
  38. securityRandom:'', //字符串类型;加密过程安全随机数因子
  39. protocolVersion:'', //字符串类型;协议版本
  40. traceId:'', //字符串类型;埋点ID Tracker
  41. productId:'', //字符串类型;待配设备产品ID
  42. softApSsidPrefix:'', //字符串类型;针对 linkType 为4,设备热点方案,自定义设备热点前缀
  43. softApNoNeedSwitchBackRouter:'', //布尔类型;针对 linkType 为4,设备热点方案,是否不需要切换回原WiFi, true 则不强制切换回原WiFi
  44. supportServices:[], //数组类型,设备配网完成后得到的设备服务信息,设备热点配网模式下可能返回
  45. supportServicesVersion:{},//json对象类型;设备配网完成后得到的设备服务版本号,设备热点配网模式下可能返回
  46. fwVersion:'' //字符串类型;设备固件版本
  47. },
  48. err:{ //json对象,错误信息,state == notifyPrecheck、notifyProvisionResult时返回
  49. code:, //数字类型;错误码
  50. msg:'', //字符串类型;错误信息
  51. }
  52. }
  53. }

示例代码

  1. var imSiLop= api.require('imSiLop');
  2. imSiLop.startAddDevice(function(ret) {
  3. alert(JSON.stringify(ret));
  4. });

可用性

iOS、Android系统

可提供的1.0.0及更高版本

toggleProvision

传入配网所需参数,UI 层在收到 notifyProvisionPrepare 事件,引导用户输入

toggleProvision({params})

params

ssid:

  • 类型:字符串类型
  • 描述:路由器 wifi 名称

password:

  • 类型:字符串类型
  • 描述:路由器 wifi 密码

timeout:

  • 类型:数字类型
  • 描述:(可选项)配网过程超时时间,以秒为单位
  • 默认:60

示例代码

  1. var imSiLop= api.require('imSiLop');
  2. imSiLop.toggleProvision({
  3. ssid:'',
  4. password:'',
  5. timeout:60
  6. });

可用性

iOS、Android系统

可提供的1.0.0及更高版本

stopAddDevice

中止添加设备配网流程

stopAddDevice()

示例代码

  1. var imSiLop= api.require('imSiLop');
  2. imSiLop.stopAddDevice();

可用性

iOS、Android系统

可提供的1.0.0及更高版本

getDeviceToken

获取已配网设备的token,用于设备绑定

getDeviceToken({params})

params

productKey:

  • 类型:字符串类型
  • 描述:产品类型

deviceName:

  • 类型:字符串类型
  • 描述:设备名称

timeout:

  • 类型:数字类型
  • 描述:(可选项)请求token超时时间
  • 默认:60

callback(ret)

ret:

  • 类型:JSON 对象
  • 内部字段:
  1. {
  2. success:true, //布尔类型;是否成功
  3. token:'' //字符串类型,token
  4. }

示例代码

  1. var imSiLop= api.require('imSiLop');
  2. imSiLop.getDeviceToken({
  3. ssid:'',
  4. password:'',
  5. timeout:60
  6. },function(ret) {
  7. alert(JSON.stringify(ret));
  8. });

可用性

iOS、Android系统

可提供的1.0.0及更高版本