高级功能 UI 业务包

更新时间:2025-11-18 03:29:12下载pdf

概述

高级功能 UI 业务包提供了承载 App 高级功能 增值服务的 Android 容器。

开通服务

当前开通服务无需额外费用。在您开通服务后,相关涂鸦业务人员会收到通知并进行处理。您将会收到合约签署的通知,请耐心等待。

以下是支持开通的服务:

  • 短信通知服务:当设备联动或警报触发时,启用短信通知功能。
  • 电话通知服务:当设备联动或警报触发时,启用电话语音通知功能。
  • 节能低碳:监测家庭智能设备的能耗状况,并获取专业的节能建议。

集成业务包

创建工程

在 Android Studio 中建立您的工程,接入智能生活 App SDK,并完成业务包。详情请参考 接入安卓版智能生活 App SDK 业务包框架

配置 build.gradle

   
   dependencies {
       api enforcedPlatform("com.thingclips.smart:thingsmart-BizBundlesBom:${biz_bom_version}")
       implementation 'com.thingclips.smart:thingsmart-bizbundle-third_service'
       api "com.thingclips.smart:thingsmart:${sdk_version}}"
   }
   
   

注意事项

如果您集成的高级功能业务包涉及应用内支付业务,且需要在 Google Store 发布上架,则您还需要继承 Google IAP 相关业务包组件:


dependencies {
    api enforcedPlatform("com.thingclips.smart:thingsmart-BizBundlesBom:${biz_bom_version}")
    implementation 'com.thingclips.smart:thingsmart-bizbundle-google_pay'
}

同时,需要覆写以下资源,设置为 True

  • 是否支持 Google IAP:

    <bool name="is_support_google_iap">true</bool>
    
  • 是否支持备选结算,可参考 备选结算 API

    <bool name="enableUserChoiceBillingg">true</bool>
    

混淆配置

# 应配置 build.gradle 里所有三方依赖混淆

# fastJson
-keep class com.alibaba.fastjson.**{*;}
-dontwarn com.alibaba.fastjson.**

-keep class com.squareup.okhttp.** { *; }
-keep interface com.squareup.okhttp.** { *; }
-dontwarn com.squareup.okhttp.**

-keep class okio.** { *; }
-dontwarn okio.**

-keep class com.thingclips.**{*;}
-dontwarn com.thingclips.**

小程序方案

概述

小程序方案从 v6.11 版本 SDK 开始支持,提供统一的 API 获取并打开各类智能小程序,支持更多增值服务,建议优先使用。

支持的服务:

  • 短信通知服务
  • 电话通知服务
  • 节能低碳
  • 更多增值服务…

快速接入

  1. 创建回调接口。首先,需要实现 IDataIntelligenceCallback 接口:

    private val intelligenceCallback = object : IDataIntelligenceCallback {
        override fun onSuccess(data: ArrayList<IntelligenceOpenBean>) {
            // 处理成功获取的数据
            data.forEach { bean ->
                println("小程序名称: ${bean.name}")
                println("小程序描述: ${bean.desc}")
                println("图标URL: ${bean.picture}")
                println("跳转链接: ${bean.link}")
            }
        }
    
        override fun onError(code: String, message: String) {
            // 处理错误情况
            println("错误码: $code, 错误信息: $message")
        }
    }
    
  2. 获取智能小程序数据。调用管理器方法获取数据:

    ThingSmartIntelligenceManager.getIntelligenceOpenData(intelligenceCallback)
    
  3. 打开智能小程序。小程序 SDK 相关的集成,请参考 MiniApp SDK 集成指南

    • 通过小程序 ID 打开:

      ThingMiniAppClient
          .coreClient()
          .openMiniAppByAppId(context, entranceMark, null, null)
      
    • 通过小程序链接打开:

      ThingMiniAppClient
          .coreClient()
          .openMiniAppByUrl(context, link, null)
      

数据结构

IntelligenceOpenBean

字段 类型 说明
id String 小程序唯一标识
entranceMark String 小程序 AppID
name String 小程序名称
desc String 小程序描述
picture String 小程序图标 URL
link String 小程序跳转链接

完整示例

class MainActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        // 获取智能小程序数据
        ThingSmartIntelligenceManager.getIntelligenceOpenData(
            object : IDataIntelligenceCallback {
                override fun onSuccess(data: ArrayList<IntelligenceOpenBean>) {
                    runOnUiThread {
                        // 在 UI 线程中更新界面
                        updateUI(data)
                    }
                }

                override fun onError(code: String, message: String) {
                    runOnUiThread {
                        // 显示错误信息
                        Toast.makeText(
                            this@MainActivity,
                            "获取数据失败: $message",
                            Toast.LENGTH_SHORT
                        ).show()
                    }
                }
            }
        )
    }

    private fun updateUI(data: ArrayList<IntelligenceOpenBean>) {
        // 更新 UI 逻辑
        data.forEach { bean ->
            // 处理每个小程序数据
            // 例如:添加到列表、显示图标等
        }
    }

    /**
     * 打开指定的小程序
     */
    private fun openMiniApp(bean: IntelligenceOpenBean) {
        // 方式 1:通过 AppID 打开
        ThingMiniAppClient
            .coreClient()
            .openMiniAppByAppId(this, bean.entranceMark, null, null)

        // 方式 2:通过链接打开
        // ThingMiniAppClient
        //     .coreClient()
        //     .openMiniAppByUrl(this, bean.link, null)
    }
}

WebView 方案

概述

WebView 方案目前仅支持 电话通知短信通知 两种服务,建议使用小程序方案,可实现拓展更多的智能业务。

快速接入

  1. 枚举高级功能类型。

    public enum PersonalThirdServiceType {
        // 短信通知
        PUSH_SMS_SERVICE("personal_push_sms_service"),
        // 电话通知
        PUSH_CALL_SERVICE("personal_push_call_service");
    
        private final String type;
    
        PersonalThirdServiceType(String type) {
            this.type = type;
        }
    
        public String getType() {
            return type;
        }
    }
    
  2. 查询高级功能。根据高级功能类型查询高级功能。此接口为异步接口。

    • 接口说明

      void requestPersonalThirdService(long homeId, PersonalThirdServiceType type, IPersonalThirdServiceCallback callback)
      
    • 参数说明

      参数 说明
      HomeId 当前选中的家庭 ID
      PersonalThirdServiceType 高级功能类型
      IPersonalThirdServiceCallback 高级功能请求异步回调
    • 示例代码

      AbsPersonalThirdService thirdService = MicroContext.getServiceManager()
              .findServiceByInterface(AbsPersonalThirdService.class.getName());
      thirdService.requestPersonalThirdService(homeId, PersonalThirdServiceType.PUSH_SMS_SERVICE,
          new IPersonalThirdServiceCallback() {
              @Override
              public void onSuccess(ThirdIntegrationBean bean) {
                  String url = bean != null ? bean.getUrl() : null;
                  Log.i("third_service", "url = " + url);
              }
      
              @Override
              public void onError(String errorCode, String errorMessage) {
      
              }
          });
      
  3. 打开高级功能页面。高级功能展示页面支持 ActivityFragment。示例代码如下:

    • Activity

      Intent intent = new Intent(context, WebViewActivity.class);
      intent.putExtra("Uri", url);
      context.startActivity(intent);
      
    • Fragment

      WebViewFragment fragment = new WebViewFragment();
      Bundle args = new Bundle();
      args.putString("Uri", url);
      args.putBoolean("enableLeftArea", true);
      fragment.setArguments(args);
      getSupportFragmentManager().beginTransaction()
      .add(R.id.web_content, fragment, WebViewFragment.class.getSimpleName())
      .commit();