免开发UI业务包,请查收:群组管理和设备控制

Posted IoT砖家涂拉拉

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了免开发UI业务包,请查收:群组管理和设备控制相关的知识,希望对你有一定的参考价值。

设备群组UI业务包

涂鸦设备群组 UI 业务包功能封装了群组业务逻辑和 UI 界面,包括 创建群组 和 编辑群组

功能说明

涂鸦支持根据用户设备的不同类型来创建群组,创建群组成功就可以达到群控的目的。

目前支持创建群组的设备有:

  • 普通 Wi-Fi 设备
  • 标准 Wi-Fi 设备

接入组件

创建工程

android Studio 中建立工程,接入智能生活 App SDK 并完成业务包。

集成业务包

在 Module 的 build.gradle 中配置:

dependencies 
   implementation 'com.tuya.smart:tuyasmart-bizbundle-groupmanager:3.34.5-9'

功能调用

创建群组

接口说明

GroupState TuyaGroupManager.getInstance().createGroup(Activity activity,String devId);

参数说明

参数说明
activityActivity 对象
devId设备 ID

GroupState 返回值

说明
SUPPORT设备支持创建群组
NOT_SUPPORT设备不支持创建群组
NONE设备不存在

编辑群组

接口说明

GroupState  TuyaGroupManager.getInstance().editGroup(Activity activity,long groupId);

参数说明

参数说明
activityActivity 对象
groupId群组 ID

GroupState 返回值

说明
SUPPORT支持编辑群组
NONE群组不存在

群组控制

群组的控制需要进入群组面板。进入群组面板的示例,请查看下面的设备控制 UI 业务包的打开群组面板部分。

设备控制 UI 业务包

设备控制 UI 业务包是涂鸦智能设备控制面板的免开发维护、且具备动态更新的面板控制解决方案。在涂鸦安卓版 智能生活 App SDK 的基础上,该 UI 业务包 提供一套完整的 RN 面板的加载展示、设备控制的能力。大家无需额外开发,接入 UI 业务包即可使用。

接入指南

前置条件

在 Android Studio 中建立工程,接入 智能生活 App SDK 和添加 UI 业务包框架。

另外,还可以直接下载 UI 业务包的 Demo,修改 Demo 中的 Panel 模块的依赖来调试设备控制 UI 业务包。

业务包功能配置

必选配置

dependencies 
    implementation 'com.tuya.smart:tuyasmart-bizbundle-panel:4.2.0-22'

可选配置

  • 地图相关依赖项

    设备控制 UI 业务包中包含地图能力相关 API,底层通过接入第三库方来实现。中国大陆业务依赖高德地图,中国大陆以外业务依赖谷歌地图。高德地图在中国大陆以外无法使用,谷歌地图在中国大陆功能受限。因此,基于设备控制 UI 业务包开发的 App,如果需要发布在中国大陆应用市场,请选择依赖高德地图,如果需要发布在谷歌市场,请选择依赖谷歌地图。二者选一,不要同时依赖。

  • 高德地图依赖项

      implementation 'com.tuya.smart:tuyasmart-react-native-amap:3.35.5-rc.4'
      implementation 'com.amap.api:search:7.9.0'
      implementation 'com.amap.api:navi-3dmap:8.0.0_3dmap8.0.0'
    

    谷歌地图依赖项

      implementation 'com.tuya.smart:tuyasmart-react-native-googlemap:3.35.5-rc.2'
      implementation 'com.google.android.gms:play-services-maps:17.0.0'
    
  • IPC 面板相关依赖项

    此依赖包含加载 IPC 面板所需的所有相关依赖。如无需 IPC 面板,不建议添加此依赖。如非必要而引入,会增加资源冲突的风险,同时也会增大 APK 包的体积。

     implementation 'com.tuya.smart:tuyasmart-bizbundle-camera_panel:4.2.0-22'
    

业务包环境配置

混淆配置

在项目的 proguard-rules.pro 文件中,请配置设备控制 UI 业务包混淆信息,以确保其能正常运行。

# react-native
-keep,allowobfuscation @interface com.facebook.common.internal.DoNotStrip
-keep,allowobfuscation @interface com.facebook.proguard.annotations.DoNotStrip
-keep,allowobfuscation @interface com.facebook.proguard.annotations.KeepGettersAndSetters
# Do not strip any method/class that is annotated with @DoNotStrip
-keep @com.facebook.proguard.annotations.DoNotStrip class *
-keep @com.facebook.common.internal.DoNotStrip class *
-keepclassmembers class * 
    @com.facebook.proguard.annotations.DoNotStrip *;
    @com.facebook.common.internal.DoNotStrip *;

-keepclassmembers @com.facebook.proguard.annotations.KeepGettersAndSetters class * 
    void set*(***);
    *** get*();

-keep class * extends com.facebook.react.bridge.javascriptModule  *; 
-keep class * extends com.facebook.react.bridge.NativeModule  *; 
-keepclassmembers,includedescriptorclasses class *  native <methods>; 
-keepclassmembers class *   @com.facebook.react.uimanager.UIProp <fields>; 
-keepclassmembers class *   @com.facebook.react.uimanager.annotations.ReactProp <methods>; 
-keepclassmembers class *   @com.facebook.react.uimanager.annotations.ReactPropGroup <methods>; 
-dontwarn com.facebook.react.**
-keep class com.facebook.**  *; 
-keep,includedescriptorclasses class com.facebook.react.bridge.**  *; 

# 高德地图
-dontwarn com.amap.**
-keep class com.amap.api.maps.**  *; 
-keep class com.autonavi.**  *; 
-keep class com.amap.api.trace.**  *; 
-keep class com.amap.api.navi.**  *; 
-keep class com.autonavi.**  *; 
-keep class com.amap.api.location.**  *; 
-keep class com.amap.api.fence.**  *; 
-keep class com.autonavi.aps.amapapi.model.**  *; 
-keep class com.amap.api.maps.model.**  *; 
-keep class com.amap.api.services.**  *; 

# Google Play Services
-keep class com.google.android.gms.common.** *;
-keep class com.google.android.gms.ads.identifier.** *;
-keepattributes Signature,*Annotation*,EnclosingMethod
-dontwarn com.google.android.gms.**

# MPAndroidChart
-keep class com.github.mikephil.charting.**  *; 
-dontwarn com.github.mikephil.charting.**

-keep class com.tuya.**.***;
-dontwarn com.tuya.**.**

-keep,includedescriptorclasses class com.facebook.v8.**  *; 

#TTT
-keep class * extends com.tuya.android.universal.base.TYBaseUniPlugin  *; 
-keep class com.tuya.smart.plugin.*.bean.** *; 

React Native 环境配置

涂鸦设备控制 UI 业务包包含开源框架React Native,版本为 0.59.10。

  • 若你的 Android 工程未集成 React Native,请按本文步骤集成设备控制 UI 业务包。

  • 若你的 Android 工程已集成 React Native,需按下面步骤操作,以确定是否可集成设备控制 UI 业务包:

    • 若已集成 React Native,且版本 > 0.59.10,因版本兼容性问题,则无法集成设备控制 UI 业务包。
    • 若已集成 React Native,且 0.59.10 ≥ 版本 > 0.51,因 React Native 库冲突,不保证能够正常接入涂鸦面板。按下面两种方式进行操作:
      1. 移除 Android 工程中的 React Native,使用设备控制 UI 业务包依赖的 React Native 0.59.10。
      2. 将 Android 工程中集成的 React Native 进行更名,从而避免与业务包集成的 React Native 冲突。

    若上述方式均无法集成 UI 业务包,则无法接入集成设备控制 UI 业务包。

使用指南

在使用设备控制 UI 业务包功能前,请确保已经按照接入框架中的内容完成相关资源的引入及初始化工作。否则,设备控制 UI 业务包无法正常使用。也可参考 UI 业务包 Demo 中 app 模块的配置。

打开面板

说明:此处只展示部分跳转面板的接口。更多的详细的接口,请查看 AbsPanelCallerService 类。

打开设备面板

  • 跳转设备面板,无提示

    接口说明

    跳转到设备面板。如果设备已不存在,不会弹出 Toast 提示,直接 return 返回。

      goPanel(Activity activity, DeviceBean deviceBean);
    

    参数说明

    参数说明
    activity当前页面 context
    deviceBean设备信息

    示例代码

      AbsPanelCallerService service = MicroContext.getServiceManager().findServiceByInterface(AbsPanelCallerService.class.getName());
      service.goPanel(PanelActivity.this, deviceBean);
    
  • 跳转设备面板,有提示

    接口说明

    跳转到设备面板,如果设备已不存在,会弹出 Toast 提示。

    goPanelWithCheckAndTip(Activity activity, String devId)
    

    参数说明

    参数说明
    activity当前页面 context
    devId设备 ID 通过 智能生活 App SDK 接口获取

    示例代码

      AbsPanelCallerService service = MicroContext.getServiceManager().findServiceByInterface(AbsPanelCallerService.class.getName());
      service.goPanelWithCheckAndTip(PanelActivity.this,devId);
    

打开群组面板

  • 跳转群组面板,无提示

    接口说明

    跳转到群组 默认存在防抖, 防抖阈值 1.5s。如果群组已不存在,不会弹出 Toast 提示。

      goPanel(Activity activity, GroupBean groupBean, boolean isAdmin);
    

    参数说明

    参数说明
    activity当前页面 context
    groupBean群组信息
    isAdmin是否是管理员。如果非管理员,当群组没有设备时,仅弹 Toast 提示;如果是管理员,会引导进入群组管理

    示例代码

      AbsPanelCallerService service = MicroContext.getServiceManager().findServiceByInterface(AbsPanelCallerService.class.getName());
      service.goPanel(PanelActivity.this, groupBean, false);
    
  • 跳转面板,有提示

    接口说明

    跳转到设备面板,如果设备已不存在,会弹出 Toast 提示。

      goPanelWithCheckAndTip(Activity activity, long groupId, boolean isAdmin);
    

    参数说明

    参数说明
    activity当前页面 context
    groupId设备 groupId 通过 智能生活 App SDK 接口获取
    isAdmin是否是管理员。如果非管理员,当群组没有设备时,仅弹 Toast 提示;如果是管理员,会引导进入群组管理

    示例代码

      AbsPanelCallerService service = MicroContext.getServiceManager().findServiceByInterface(AbsPanelCallerService.class.getName());
      service.goPanelWithCheckAndTip(PanelActivity.this, groupId,true);
    

关闭设备控制面板

TuyaSmartSdk.getEventBus().post(new PageCloseEventModel());

清除缓存

在加载面板过程中,会将面板文件会存放在当前 app 存储目录下。下次打开面板时,从缓存中加载该文件。如果面板文件包内容发生变更,需先清除缓存,再重新拉起新的面板文件包,变更内容才会生效。

⚠️注意:调用该接口会删除所有面板文件,加载面板时都将重新拉取文件。

示例代码

  ClearCacheService service = MicroContext.getServiceManager().findServiceByInterface(ClearCacheService.class.getName());
      if (service != null) 
        service.clearCache(PanelActivity.this);
      

常见问题

Q:打开设备面板时,提示 “当前版本不支持该设备,请至应用市场升级App”

检查项目的 module_app.json 文件中是否配置 com.tuya.smart.panel.base.RNVersionPipeLine

  • 如果未配置,请在 PIPE_LINE_BUSINESS_PIPELINE_APPLICATION_START 和 PIPE_LINE_APPLICATION_SYNC 下增加该 PipeLine 配置。

  • 如果已配置,请检查配置的位置是否正确。

    "PIPE_LINE_BUSINESS_PIPELINE_APPLICATION_START": [
        ...
        "com.tuya.smart.panel.base.RNVersionPipeLine"
    ],
    "PIPE_LINE_APPLICATION_SYNC": [
        "com.tuya.smart.panel.base.RNVersionPipeLine"
        ...
    ],
    

Q:设备面板中的 GIF 图无动效

可在项目中配置下列最新版本的依赖。

  implementation 'com.facebook.fresco:animated-drawable:2.6.0'
  implementation 'com.facebook.fresco:animated-webp:2.6.0'
  implementation 'com.facebook.fresco:animated-gif'

Q:Release 包的设备控制 UI 业务包部分功能无法使用

请先检查混淆是否正确配置。

Q:无法使用打开设备面板

接入设备控制 UI 业务包之后,必须实现家庭服务。否则,无法正常打开面板。

  AbsBizBundleFamilyService familyService = MicroServiceManager.getInstance().findServiceByInterface(AbsBizBundleFamilyService.class.getName());
  familyService.shiftCurrentFamily(homeBean.getHomeId(), homeBean.getName());

其他

下载完整示例代码

以上是关于免开发UI业务包,请查收:群组管理和设备控制的主要内容,如果未能解决你的问题,请参考以下文章

什么是安卓版 UI 业务包 SDK?如何接入?

WiFi 无线拉起执行 APP 稳定性 / 压力测试,免 USB 连线

助力企业战疫提效保质,腾讯wetest远程办公工具包请查收!

助力企业战疫提效保质,腾讯WeTest远程办公工具包请查收!

设备配网和通用配网 UI 业务包(内附代码段)

叮!“新鲜出炉”的数据结构与算法教程,请查收!