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

前提条件

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

DemoApp 源码结构说明

Demo源码

App模块负责应用的业务逻辑,其中包括了Demo对应的功能演示:设备本地发现、设备配网、设备绑定和设备状态的获取和控制功能。java/com/aliyun/iot的详细子目录介绍如下。

  • ilop/startpage: 演示了如何自定义国家选择页面
  • ilop/demo/SDKInitHelper.java:演示了使用统一接口初始化各种SDK
  • aep/oa:演示了如何自定义手机区域码选择页面
  • aep/sdk/receiver:演示了如何利用广播接收器处理推送消息和通知
  • ilop/demo/page/login3rd下
    • AuthCodeFragment.java:演示了如何用三方账号进行授权登录
    • OALoginActivity.java:演示了如何自定义登录页面

运行Demo App

介绍通过Android Studio导入Demo App,并构建APK的操作。

  1. 打开Android Studio,选择File > Open...,导入Demo App源码。
  2. 集成安全图片,操作请参见集成安全图片
    说明 安全图片请勿重命名,否则会导致SDK初始化失败。请您下载后直接放到App代码工程下。
  3. (可选)Demo App中添加摄像头设备。
    1. 打开Demo App工程,在build.gradle中找到dependencies,添加Link Visual面板的引用。
      implementation project(':ipcview')
    2. 解注释Link Visual面板初始化代码。

      src\main\java\com\aliyun\iot\ilop\demo\DemoApplication.java中,去掉以下代码前的注释符。

      IPCViewHelper.getInstance().init(this,"2.0.0");
    3. 解注释跳转Link Visual的代码。

      src\main\java\com\aliyun\iot\ilop\demo\page\ilopmain\HomeTabFragment.java中,去掉以下代码前的注释符。

      Intent intent = new Intent(getActivity(), IPCameraActivity.class);
      intent.putExtra("iotId", iotId);
      intent.putExtra("appKey", EnvConfigure.getEnvArg(EnvConfigure.KEY_APPKEY));
      startActivity(intent);
    4. 替换产品的ProductKey

      src\main\java\com\aliyun\iot\ilop\demo\page\ilopmain\HomeTabFragment.java中,示例ProductKey替换为自己产品的ProductKey

  4. 在Demo App目录下,执行以下命令构建APK。
    ./gradlew clean build
    说明
    • 请配置JDK为1.8版本。
    • 3.0.0版本的打包插件,需要 Android Studio 3.0以上的版本支持。
    • 3.0.0版本的打包插件,目前需要访问Google的仓库,请注意网络环境。

Demo App业务逻辑介绍

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

  1. 选择国家/地区。
    登录之前您须先选择登录国家/地区。
    选择国家/地区
    说明 如果您需要在国内/海外区域之间切换,切换后需重启App以生效。
  2. 注册或登录账号。
    App启动后会显示如下登录页界面。
    1. 单击免费注册,弹出注册方式。
    2. 输入要注册的手机号码或邮箱,并单击下方发送短信校验码。
    3. 输入收到的校验码,单击下一步
    4. 设置密码完成登录。
  3. 切换App的语言。
    我的 > 切换语言中切换App的语言,界面如下图所示。
    切换语言
    说明 切换App语言后将跳转到登录界面,用户需要重新登录后才生效。
  4. 设置调试界面。

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

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

    BoneMobile插件调试分为:

    • 开发环境、生产环境切换
    • 本地调试
    调试版App
  5. 控制虚拟设备。
    1. 进入主界面,如下图所示。
      Demo主界面

      如果直接扫码下载demoAPP体验,登录后会默认创建5个虚拟设备。

      如果是下载代码编译运行,上面显示的5个虚拟设备,并不是默认创建的,需要自己更改代码,在HomeTabFragment里面,将自己项目内创建的产品productKey填入下面的pks,再编译运行,才可以创建和体验虚拟设备。

      /**
       * 将自己项目内的pk填入,可以体验虚拟设备
       */
      //String[] pks = new String[]{"a1AzoSi5TMc", "a1B6cFQldpm", "a1XoFUJWkPr", "a1nZ7Kq7AG1", "a1OX20YJSLk"};
      String[] pks = new String[]{};
    2. 单击任意一个设备,进入相应的设备面板界面。
      面板界面
  6. 添加设备。
    1. 单击首页右上角加号。
    2. 选择待添加的设备,进入添加设备界面。
      添加设备界面

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

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

虚拟创建产品的设备

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

  1. 打开Demo工程com/aliyun/iot/ilop/demo/page/ilopmain/下的HomeTabFragment.java文件。
  2. 查找关键字 pks ,快速定位待修改的位置。
    //注册虚拟设备
    Set<String> set = new HashSet<String>();
    ArrayList<String> deviceStrList = new ArrayList<>();
    for (DeviceInfoBean deviceInfoBean : deviceInfoBeanList) {
        set.add(deviceInfoBean.getProductKey());
        deviceStrList.add(deviceInfoBean.getProductKey() + deviceInfoBean.getDeviceName());
    }
    mBundle.putStringArrayList("deviceList", deviceStrList);
    //noinspection MismatchedReadAndWriteOfArray
    String[] pks = new String[]{/*"a1xxxxc", "a1xxxxxm", "a1xxxxr", "a1xxxx1", "a1xxxxk"*/};
    mRegisterCount = 0;
    mVirtualCount = 0;
    //noinspection RedundantOperationOnEmptyContainer
    for (String pk : pks) {
        if (set.add(pk)) {
            mRegisterCount++;
            //registerVirtualDevice(pk);
            addVirtualDevice(pk);
        }
    }
  3. 在控制台上获取待体验产品的productKey
    设备PK
  4. 替换productKey
    String[] pks = new String[]{/*"a1xxxxc", "a1xxxxxm", "a1xxxxr", "a1xxxx1", "a1xxxxk"*/};中的默认的productKey替换为自己产品的productKey,示例如下。
    String[] pks = new String[]{/*"xxxx", "xxxxx"*/};
    说明 每个产品可以申请1个虚拟设备,多个产品productKey之间用逗号间隔。
  5. 重新登录App,即可使用虚拟设备体验您创建的产品的控制。