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
- 在控制台上创建自有App并下载demo App,详细请参见创建自有App。
- 集成安全图片。详细请参见集成安全图片。
说明 安全图片请勿重命名,否则会导致SDK初始化失败。请您下载后直接放到App代码工程下。
- 在xcode里编译并运行Demo App。
Demo App运行后,会显示国家/区域选择页面,请根据实际情况选择国家/地区后,进入登录App界面。
Demo App业务逻辑介绍
- 登录自有App。
- 启动App,选择国家/区域。
- 选择一个国家/区域后,进入登录界面。
- 单击免费注册,进入注册页面。
- 输入要注册的手机号码,并单击下方发送短信校验码。
- 在短信校验码区域输入收到的校验码,单击下一步。
- 设置登录密码,并完成登录。
- 设置调试界面。
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 |
移动应用推送 |
- 控制默认的虚拟设备。
- 进入主页面,如下图所示。
上面显示的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 = @[];
}
- 单击任意一个设备,进入该设备的面板页面。
- 添加设备。
- 单击首页右上角加号,并选择添加设备。
- 选择添加设备,进入添加设备页面。
通过产品列表添加需要使用官方项目对应的接入产品,这一步目前并没有真实设备可以使用;如果想体验这个流程,建议通过自主研发App的形式来完成。
添加设备支持两种形式。
- 通过产品列表的形式进行配置,如上图支持添加的设备。
- 支持零配配网方案的设备,发现到本地设备则会显示出来,如上图本地发现设备。
虚拟创建产品的设备
在没有真实设备可以走通链路的情况下,可以使用虚拟设备进行体验和开发。下面介绍如何为您创建的产品虚拟设备。
- 在LinkViewController.m中将产品对应的productKey,替换为自己项目的产品productKey。
self.supportVirtualList = @[@"axxxxeW",@"axxxxNe"];
说明 每个产品可以申请1个虚拟设备。多个产品productKey之间用逗号间隔。例如:self.supportVirtualList = @[@"a14btFiDNeW", @"a1PCB67lxlP"];
。
- 在xcode里编译并运行App。
如果工程的localMsg中提示“此路由不存在,请与小二确认”,则需要在产品-人机交互中配置设备的面板。
- 重新登录App,即可使用虚拟设备体验您创建的产品的控制。