Demo App主要介绍App的开发流程,以及App的业务逻辑。在您开发自己的App前,建议您按照本文档完成Demo App的操作。

前提条件

  • 已在生活物联网平台创建了对应的产品,并完成产品功能定义、配置App等相关操作。
  • 已在生活物联网平台创建了一个自有品牌App,并完成Demo App的源码下载。详细操作请参见创建自有App

使用方式

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

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

DemoApp源码结构说明

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

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

SDK的初始化采用统一接口,详细介绍请参见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 App

  1. 在控制台上创建自有App并下载demo App,详细请参见创建自有App
  2. 集成安全图片。详细请参见集成安全图片
    说明 安全图片请勿重命名,否则会导致SDK初始化失败。请您下载后直接放到App代码工程下。
  3. 在xcode里编译并运行Demo App。
    Demo App运行后,会显示国家/区域选择页面,请根据实际情况选择国家/地区后,进入登录App界面。

Demo App业务逻辑介绍

  1. 登录自有App。
    1. 启动App,选择国家/区域。
    2. 选择一个国家/区域后,进入登录界面。
    3. 单击免费注册,进入注册页面。
    4. 输入要注册的手机号码,并单击下方发送短信校验码
    5. 在短信校验码区域输入收到的校验码,单击下一步
    6. 设置登录密码,并完成登录。
  2. 设置调试界面。

    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 移动应用推送
  3. 控制默认的虚拟设备。
    1. 进入主页面,如下图所示。
      demo产品页面

      上面显示的4个虚拟设备,并不是默认创建的,需要自己更改代码,在LinkViewController.m里面,将自己项目内创建的产品productKey填入下面的supportVirtualList变量中,再编译运行,才可以创建和体验虚拟设备。

      - (void)viewDidLoad {
          [super viewDidLoad];
          self.view.backgroundColor = [UIColor ims_backgroundColor];
          
          self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc]initWithImage:[UIImage bundleImageNamed:@"bar_add"] style:UIBarButtonItemStylePlain target:self action:@selector(addButtonItemDidClicked)];
          
          // 用户在控制台创建设备后,可以把productKey列表设置进入,会自动生成虚拟设备
          // 例如:@[a1B6cFQldpm, a1AzoSi5TMc, a1nZ7Kq7AG1, a1XoFUJWkPr]
          self.supportVirtualList = @[];
      }
    2. 单击任意一个设备,进入该设备的面板页面。
      demo产品页面
  4. 添加设备。
    1. 单击首页右上角加号,并选择添加设备
      添加设备
    2. 选择添加设备,进入添加设备页面。
      选择设备

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

      添加设备支持两种形式。

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

虚拟创建产品的设备

在没有真实设备可以走通链路的情况下,可以使用虚拟设备进行体验和开发。下面介绍如何为您创建的产品虚拟设备。

  1. LinkViewController.m中将产品对应的productKey,替换为自己项目的产品productKey。
    self.supportVirtualList = @[@"axxxxeW",@"axxxxNe"];
    设备PK
    说明 每个产品可以申请1个虚拟设备。多个产品productKey之间用逗号间隔。例如:self.supportVirtualList = @[@"a14btFiDNeW", @"a1PCB67lxlP"];
  2. 在xcode里编译并运行App。

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

  3. 重新登录App,即可使用虚拟设备体验您创建的产品的控制。