Demo App主要展示生活领域的完整业务,包括设备配网,设备绑定,用户设备的获取,用户设备状态的获取和控制。另外还展示了各个SDK模块如何使用。

使用方式

整个Demo App使用Cocoapods管理依赖库和模块,目前支持Cocoapods 1.2.0版本。

源码下载完成后,解压缩后进入源码目录,执行pod update。安装完成,通过Xcode打开IMSAppDemo.xcworkspace文件,然后编译运行。

DemoApp源码结构说明

整个Demo App结构上采用CocoaPods管理业务模块,主工程有安全图片,启动页面和AppDelegate实现,如下图所示。

主工程

yw_1222_07e8.jpg为安全图片,可以从生活物联网平台下载。Launch Screen.storyboard为启动页面,AppDelegate主要为SDK的配置,主页面的切换实现(登录/主页面),还有移动推送逻辑的处理。

Demo App整个UI以tab形式组织,主要由Pods中的IMSLife和IMSLink库实现。

  • IMSLife是业务生活Demo对应的功能演示,包含整个App的主框架。支持设备发现、设备配网、设备绑定和设备状态的获取和控制功能。
  • IMSLink则以基础SDK为主,主要为tab中间页- 调试页面的实现。
  • 其余Pod库为SDK代码示例如下。
    • IMSAccountDemo:账号相关的Demo,提供账号登录、登出等。
    • IMSApiClientDemo:API通道的Demo,用于请求IoT接口业务。
    • IMSBoneKitDemo:BoneMobile容器使用的Demo,用于展示容器的能力和接口。
    • IMSLogDemo:演示日志。
    • IMSMobileChannelDemo:长连接通道的Demo,演示订阅/发送消息等功能。
    • IMSPushDemo:移动推送的Demo,展示通知信息的提交。
    Demo代码展示

调试页面说明

IMSSDKEntryProtocol是各SDK模块展现入口协议,这些SDK的使用示例均遵循了该展现入口协议。例如:@interface SDKEntryApiClient () <IMSSDKEntryProtocol>,是API通道SDK的Demo示例。

Demo工程启动后getAllClasses方法会查找遵循了@protocol IMSSDKEntryProtocol协议的类,然后依据其getSDKDisplayConfig中的DisplayLevel按照顺序在首页展示,各个SDK模块示例源码统一放到LocalPods目录。为了便于示例源码学习,可以依据如下子模块源码文件名与展示名称对应进行查找。

文件名 界面展示名
SDKEntryBoneKit Bone Mobile 容器 SDK
SDKEntryApiClient API 通道
SDKEntryMobileChannel 长连接通道
SDKEntryAccount 账号和用户
SDKEntryPush 移动应用推送

下载Demo App

在已创建的自有品牌App右侧,Demo App对应的查看中,单击Demo App源码下载

下载Demo

运行Demo App

  1. 创建自有App。
  2. 获取安全图片。
    获取安全图片
    1. 下载安全图片,文件名为yw_1222_07e8.jpg
    2. 将安全图片放到工程根目录中。安全图片位置ios
    3. 打开xcode工具,将安全图片拖至xcodeproj根目录下。安全图片目录
    4. iOS端为了安全性,工程的Bundle Identifier与创建自有App时输入的bundleID(包名)要保持一致。 bundleID包名
  3. 选择关联产品。

    需要先在项目中创建产品,此处才可以进行关联。创建产品的操作参见新建产品

    选择关联产品
  4. 配置用户账号。
    设置账号体系

    用户账号支持两种账号体系:内置账号体系和自有账号体系。

    • 如果开发者没有自己的账号体系,可以采用内置账号体系,内置账号体系无需配置,已经内置在SDK套餐包中,提供文档调用方法。
    • 如果开发者有自己的账号体系,可以采用自有账号体系,若勾选自有账号体系,则必须填写页面中的配置信息,否则自有账号将无法正常使用。

    本示例选用内置账号体系。

  5. 在xcode里编译并运行Demo App。
    Demo App运行后,会显示登录页面。登录首页
  6. 使用虚拟设备体验设备控制。
    在没有真实设备可以走通链路的情况下,也可以使用虚拟设备进行体验和开发。

    如果工程的localMsg中提示“此路由不存在,请与小二确认”,则需要在产品-人机交互中配置设备的面板。

    1. LinkViewController.m中将产品对应的productKey,替换为自己项目的产品productKey。
      self.supportVirtualList = @[@"a14btFiDNeW",@"a14btFiDNe"];
    2. 重新登录App。
      重新登录后,系统会检查当前用户是否存在虚拟设备,没有则会注册并绑定虚拟设备。生成虚拟设备后,如果无法进入面板,参考上面提到的集成界面部分进行配置。

使用虚拟设备体验设备控制

在没有真实设备可以走通链路的情况下,也可以使用虚拟设备进行体验和开发。

自有App需要在demo源码LinkViewController中将self.supportVirtualList对应的产品productKey,替换为自己项目的产品productKey。替换完成后,重新登录App即可。

使用虚拟设备
说明 每个产品可以申请1个虚拟设备。多个产品productKey之间用逗号间隔。例如:self.supportVirtualList = @[@"a14btFiDNeW", @"a1PCB67lxlP"];
设备PK

使用Demo App体验完整业务逻辑

  1. 登录自有App。
    1. 启动App,显示登录页面。
      登录首页
    2. 单击免费注册进入注册页面。
    3. 输入要注册的手机号码,并单击下方发送短信校验码
      发送短信验证码
    4. 在短信校验码区域输入收到的校验码,单击下一步
    5. 设置登录密码,并完成登录。
  2. 控制设备。
    1. 进入主页面,如下图。
      demo产品页面

      页面显示默认已经存在四个虚拟设备,分别对应插座-Demo,风扇-Demo,灯-Demo和加湿器-Demo。

    2. 单击任意一个设备,进入该设备的面板页面。
      demo产品页面
  3. 添加设备。
    1. 单击首页右上角加号,并选择添加设备
      添加设备
    2. 选择添加设备,进入添加设备页面。
      选择设备

      通过产品列表添加需要使用官方项目对应的接入产品,这一步目前并没有真实设备可以使用;如果想体验这个流程,建议通过自主研发App的形式来完成。

      添加设备支持两种形式。

      • 通过产品列表的形式进行配置,如上图支持添加的设备。
      • 支持零配配网方案的设备,发现到本地设备则会显示出来,如上图本地发现设备。