增值服务 2.0

更新时间:2026-07-01 09:14:27LLM 副本以 Markdown 格式查看下载 PDF

增值服务 UI 业务包提供 IPC 增值服务 v2.0 框架下的各类 IPC 增值服务,涵盖了 C 端用户在增值服务购买和使用过程中的全部功能,包括商品展示、下单购买、服务查询和订单展示等。

通过与 IPC 增值服务业务包的对接,您能够快速便捷地集成和应用多项增值服务,例如 IPC 云存储服务、托管服务、视频巡检服务、4G 流量服务以及 AI 事件服务等。

SDK 和 UI 业务包需要更新至 v5.17.0 及以上版本,才能使用增值服务 v2.0。

准备工作

在集成之前,请先熟悉 UI 业务包 的准备工作和接入流程。详情请参考 框架接入

接入组件

项目配置

在模块 build.gradle 中,配置 dependencies 依赖。

dependencies {
    api enforcedPlatform("com.thingclips.smart:thingsmart-BizBundlesBom:${biz_bom_version}")
    api "com.thingclips.smart:thingsmart-bizbundle-camera"
    api "com.thingclips.smart:thingsmart-bizbundle-miniapp"
    api "com.thingclips.smart:thingsmart-bizbundle-homekit"
    api "com.thingclips.smart:thingsmart-bizbundle-ipckit"
    api "com.thingclips.smart:thingsmart-ipcsdk:${ipc_sdk_version}}"
    // ... 小程序ui业务包需要集成bizkit
    api "com.thingclips.smart:thingsmart-bizbundle-bizkit"
     //... 其他配置
    api "com.thingclips.smart:thingsmart:${sdk_version}}"
}
  • 为了提升性能和用户体验,强烈建议使用小程序 UI 业务包。
  • H5 增值服务业务包不再迭代,请及时切换至小程序 UI 业务包。

注意事项

  • 调用接口之前,务必确认用户已登录。
  • 增值服务和平台配置相关,使用对应功能前,确认设备支持该增值服务。
  • 接口返回具体 URL,通过 UrlRouter.execute(urlBuilder) 进行页面跳转。
  • 分享设备不能购买增值服务。
  • 页面跳转时出现白屏可能是未依赖bizkit,注意使用小程序UI业务包需要先依赖bizkit。

增值服务首页

接口说明

 void fetchValueAddedServiceUrl(CameraVASParams params, OperationCallBack callback);
参数 类型 说明
params CameraVASParams 请求参数
callback OperationCallBack 回调

CameraVASParams

参数 类型 说明
devId String 设备 ID
spaceId String 空间 ID,传入 homeId
languageCode String 标准语言码
hybridType int 程序类型,ThingIPCConstant
categoryCode String 增值服务品类码,ThingIPCConstant
extInfo Object 扩展信息

增值服务品类码常量

ThingIPCConstant 常量 说明
ThingIPCConstant.CATEGORY_CODE_SECURITY_CLOUD_SERVICE 云存储服务
ThingIPCConstant.CATEGORY_CODE_AI_SERVICE AI 事件服务
ThingIPCConstant.CATEGORY_CODE_TRAFFIC_SERVICE 4G 流量充值服务
ThingIPCConstant.CATEGORY_CODE_AI_INSPECTION_SERVICE 巡检报告服务

程序类型常量

ThingIPCConstant 常量 说明
ThingIPCConstant.HYBRID_TYPE_H5 H5 页面
ThingIPCConstant.HYBRID_TYPE_MINI_APP 小程序

巡检报告页

接口说明

   void fetchInspectionDetailUrl(CameraVASInspectionParams params, OperationCallBack callback);

参数 类型 说明
params CameraVASInspectionParams 请求参数
callback OperationCallBack 回调

CameraVASInspectionParams

字段 类型 描述
spaceId String 空间 ID,传入 homeId
devId String 设备 ID
time long 时间,从 CameraMessageBean 中获取
reportId String 报告 ID,即 CameraMessageBeangetExtendParams 属性中的inspectionReportId
languageCode String 标准语言码
hybridType int 程序类型,ThingIPCConstant
extInfo Object 扩展信息

示例代码


CameraVASParams cameraVASParams = new CameraVASParams();
cameraVASParams.devId = mDevId;
cameraVASParams.spaceId = FamilyManagerUtils.getCurrentHomeId()+"";
cameraVASParams.languageCode = "zh";
cameraVASParams.categoryCode = ThingIPCConstant.CATEGORY_CODE_AI_INSPECTION_SERVICE;
cameraVASParams.hybridType = ThingIPCConstant.HYBRID_TYPE_MINI_APP;
ThingIPCSdk.getIPCVAS().fetchValueAddedServiceUrl(cameraVASParams, new OperationCallBack(){

            @Override
            public void onSuccess(int sessionId, int requestId, String data, Object camera) {
                Bundle bundle = new Bundle();
                bundle.putString("url", data);
                UrlBuilder builder = new UrlBuilder(mContext, "miniApp").putExtras(bundle);
                UrlRouter.execute(builder);
            }

            @Override
            public void onFailure(int sessionId, int requestId, int errCode, Object camera) {

            }
        });

//巡检报告
CameraMessageBean *messageBean;
CameraVASInspectionParams params = new CameraVASInspectionParams();
params.devId = mDevId;
params.spaceId = FamilyManagerUtils.getCurrentHomeId()+"";
params.languageCode = "zh";
params.time = messageBean.getTime();
params.reportId = messageBean.getExtendParams() == null ? "" : String.valueOf(messageBean.getExtendParams().get("inspectionReportId"));
params.hybridType = ThingIPCConstant.HYBRID_TYPE_MINI_APP;

ThingIPCSdk.getIPCVAS().fetchInspectionDetailUrl(params, new OperationCallBack(){

    @Override
    public void onSuccess(int sessionId, int requestId, String data, Object camera) {
        Bundle bundle = new Bundle();
        bundle.putString("url", data);
        UrlBuilder builder = new UrlBuilder(mContext, "miniApp").putExtras(bundle);
        UrlRouter.execute(builder);
    }

    @Override
    public void onFailure(int sessionId, int requestId, int errCode, Object camera) {

    }
});

云存储

是否支持云存储

跳转云存储购买页前,请先确认设备是否支持云存储服务,可通过 支持云存储 进行判断。

查看和播放云存储视频

开通云存储服务后,可以查看和播放云存储视频。详细 API 请参考 云存储

获取增值服务页面(新)

IPC SDK 7.5.4 以上版本支持该接口。

提供 IPC 增值服务框架下的各类 IPC 增值服务页面跳转链接,在之前的基础上扩展到各类增值服务的首页、商品页、应用页、设置页、订单页、服务页、兑换码页。目前支持的页面如表所示。

服务大类 增值服务商城首页 增值服务商城商品页 应用页 设置页 我的服务 我的订单 兑换码
云存储 Yes Yes No Yes Yes Yes Yes
AI Alert Yes Yes Yes Yes
智能识鸟 Yes Yes No Yes
视频巡检 Yes Yes Yes Yes
精彩时刻 Yes Yes Yes Yes
宠物知道 Yes Yes Yes No
4G 流量充值 Yes Yes No No

接口说明

void fetchValueAddedServiceUrlV2(CameraVASParamsV2 params, OperationCallBack callback);
参数 类型 说明
params CameraVASParamsV2 请求参数
callback OperationCallBack 回调

请求参数 CameraVASParamsV2 说明

字段 类型 描述
homeId String 家庭 ID
devId String 设备 ID
sceneCode String 场景码
categoryCode String 品类码
params Map<String, String>? 额外参数

品类码

categoryCode 值 说明
security_cloud_service 云存储
ai_alert AI_ALERT
ai_service 智能识鸟
ai_inspection_service 视频巡检
ai_highlight_moments 精彩时刻
ai_pet_know 宠物知道
traffic_service 4G 流量充值

场景码

sceneCode 值 说明
homePage 首页
commodityPage 商品页
applicationPage 应用页
setupPage 设置页
servicePage 我的服务
orderPage 订单页
subscribePage 订阅页
redeemPage 兑换码

额外参数说明

除接口必传参数外,部分页面支持额外参数,需要将参数以键值对形式放 params 参数里传递。

目前,订单页支持 activityKey 参数:

参数 类型 说明
activityKey String order 表示选中订单 Tab,sub 表示选中订阅计划 Tab,不传时默认选中订单

接口调用示例

val requestParam = CameraVASParamsV2()
requestParam.homeId = homeId.toString()
requestParam.devId = deviceId
requestParam.sceneCode = "security_cloud_service"
requestParam.categoryCode = "homePage"
requestParam.params = mutableMapOf<String, String>()

ThingIPCSdk.getIPCVAS().fetchValueAddedServiceUrlV2(requestParam, object : OperationCallBack {
    override fun onSuccess(sessionId: Int, requestId: Int, data: String?, camera: Any?) {
        UrlRouter.execute(this, "thingSmart://miniApp?url=$data")
    }

    override fun onFailure(sessionId: Int, requestId: Int, errCode: Int, camera: Any?) {
        // 错误处理。
    }
})