DemoApp主要展示生活领域的完整业务,包括设备配网,设备绑定,用户设备的获取,用户设备状态的获取和控制,且展示各个SDK模块的使用。

下载

参见DemoApp下载

使用方式

介绍通过Android Studio导入的使用方式。

  1. 打开Android Studio,创建一个新工程。
    需要修改Project目录的build.gradle中打包插件版本为3.0.0,修改如下com.android.tools.build:gradle:3.0.0
  2. 把Demo APP源码作为Module导入。
    导入方式:File > New > Import Module
  3. 创建一个移动App。
    请参见创建自有App
  4. 替换安全图片。
    请参见集成安全图片
  5. 各功能模块的服务已默认开通,可参考各 SDK 使用到的官方服务列表对应关系。
    SDK 名称 服务名称
    API 通道 官方基础服务
    长连接通道 应用与插件服务 长连接推送服务
    用户及账号 用户服务
    移动应用推送 移动应用推送服务
    BoneMobile 容器 应用与插件服务
    用户认证SDK 用户服务

构建APK

在Demo App目录下,执行以下命令。

./gradlew clean build -u
说明
  • 请配置JDK为1.8版本。
  • 3.0.0版本的打包插件,需要 Android Studio 3.0以上的版本支持。
  • 3.0.0版本的打包插件,目前需要访问Google的仓库,请注意网络环境。

DemoApp 源码结构说明


Demo App源码结构

代码结构分为SDK初始化模块(aep.sdk)和业务逻辑模块(ilop),图中显示为主界面实现MainActivity。SDK初始化模块包括:APIClient、OA、RN、Push、长链接、设备模型、配网等SDK。其中,长链接、RN容器、配网sdk、设备模型SDK的初始化在sdk_config.json文件中配置,启动aplication时会自动初始化。


初始化代码
  • APIGatewaySDKDelegate: APISDK初始化,用于请求 IoT 接口业务使用
  • OpenAccountSDKDelegate:OA初始化,提供账号登录,登出
  • RNContainerComponentDelegate:RN容器初始化,用于展示容器的能力和接口使用
  • PushManager:Push初始化,展示通知信息的提交
  • DownstreamConnectorSDKDelegate:演示订阅/发送消息等功能
  • ThingModuleSDKDelegate:配网SDK

调试界面说明


调试页面

ebugTabFragment调试界面,调用com.aliyun.iot.ilop.demo.view.DebugLayout布局,提供以下功能。

  • API通道:API网管调试
  • 长链接通道:长链接通道调试
  • 账号和用户:登录、退出
  • 移动推送SDK:可以查看AppKey、ClientID、DeviceID等信息

BoneMobile插件调试分为:

  • 开发环境、生产环境切换
  • 本地调试

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

默认Demo App配置为官方项目和默认支持的几类设备。

  1. 账号注册或登录。
    App启动后会显示如下登录页界面。
    1. 单击免费注册,弹出注册方式。
    2. 输入要注册的手机号码或邮箱,并单击下方发送短信校验码。
    3. 输入收到的校验码,单击下一步
    4. 设置密码完成登录。
    • “忘记密码”功能选择区号

      在OALoginActivity的OnCreate方法里面添加以下代码可以显示区号选择。

      OpenAccountUIConfigs.AccountPasswordLoginFlow.supportForeignMobileNumbers=true;
      OpenAccountUIConfigs.MobileResetPasswordLoginFlow.supportForeignMobileNumbers=true;
    • 隐藏右侧的下拉框历史记录
      this.findViewById("input_history").setVisibility(View.GONE);
              this.loginIdEdit.getEditText().addTextChangedListener(new TextWatcher() {
                  public void afterTextChanged(Editable s) {
                      OALoginActivity.this.loginIdEdit.showInputHistory(OALoginActivity.this.loginIdEdit,false);
                  }
      
                  public void beforeTextChanged(CharSequence s, int start, int count, int after) {
                  }
      
                  public void onTextChanged(CharSequence s, int start, int before, int count) {
                  }
              });
  2. 设备控制。
    进入主界面,如下图所示。
    1. 进入主界面。

      添加设备主页面

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

    2. 单击任意一个设备,进入相应的设备面板界面。

      设备面板
  3. 添加设备。
    1. 点击首页右上角新增按钮添加设备。

      添加设备
    2. 选择添加设备,进入添加设备界面。

      添加设备

      添加设备支持以下两种方式。

      • 通过产品列表的形式进行配置(如上图支持添加的设备)
      • 通过本地网络发现的设备,或者有支持零配配网方案的设备,如上图本地发现设备,如果能发现到本地设备,则会显示出来。
      说明 通过产品列表添加需要使用官方项目对应的接入产品,这一步目前并没有真实设备可以使用;如果想体验这个流程,建议通过自主研发App的形式来完成。

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

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

自有App需要在demo源码HomeTabFragment.java中将下图选中的产品productKey,替换为自己项目的产品productKey。替换完成后,重新登录App即可。


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

设备PK