增值服务

更新时间:2024-07-01 08:14:29下载pdf

对于出行产品而言,用户运营是强需求。出行产品提供非常丰富的高级能力,这些高级能力在行业里一般采用首年赠送,次年由 C 端用户自行选择续费,续费后则可享有全部功能。若不续费,则仅保留基础功能,双协议设备保留蓝牙相关的功能,单蜂窝协议禁用全部功能。

SDK 开发者可依据以下接口数据,校验相关增值服务逻辑。

C 端用户续费增值服务

类名(协议名) 说明
IODValueAddedServicesManager 增值服务相关服务
ODValueAddedServicesModel 增值服务模型

获取 C 端用户续费增值服务

判断设备的增值服务是否在服务中。若不在服务中,则禁用需要付费的高级增值服务并引导 C 端用户进行续费。

接口说明

    /**
     * Get value-added service information based on device ID
     *
     * @param devId device ID
     * @param listener callback
     */
    fun fetchValueAddedServicesWithDevID(
        devId: String,
        listener: IThingResultCallback<ODValueAddedServicesModel?>
    )

示例代码

OutdoorUtils.fetchValueAddedServicesWithDevID(deviceId, new IThingResultCallback<ODValueAddedServicesModel>() {
    @Override
    public void onSuccess(ODValueAddedServicesModel result) {
        showToast("success");
    }

    @Override
    public void onError(String errorCode, String errorMessage) {
        showToast("onError code=" + errorCode + " message=" + errorMessage);
    }
});

ODValueAddedServicesModel 数据模型

@Keep
data class ODValueAddedServicesModel(
    // 必有,设备 uuid
    val uuid: String,
    // 必有,设备 ID
    val devId: String,
    // 能力集合
    val abilityMap: Map<String, DeviceValuesAddStatusBean>? = mutableMapOf(),
)

@Keep
data class DeviceValuesAddStatusBean(
    // 必有,增值服务能力编码,描述见 新增常量
    val externalCode: String,
    // 必有,true 拥有出行或者导航增值服务高级能力,false 不拥有出行或者导航增值服务高级能力。当为 false 时,下方所有字段都为空
    val isPidHadVAS: Boolean?,
    // 非必有,增值服务购买链接
    val commodityUrl: String?,
    // 非必有,增值服务结束时间
    val effectiveEndDate: Long = -1,
    // 非必有,增值服务开始时间
    val effectiveStartDate: Long = -1,
    // 非必有,true 代表已弹窗,false 代表未弹窗。只有符合出行增值服务高级能力,并且有激活中的 B 端服务上架的服务才提示是否已经弹窗,导航增值服务无需关心此字段
    var hadPopup: Boolean = false,
    // 非必有,true 代表增值服务在服务中,false 代表不在服务中,例如增值服务已过期或未购买
    val inService: Boolean?,
    // 非必有,inService 为 true 时才有值,增值服务能力提供者,god 代表涂鸦,brand 代表品牌方
    val serviceProvider: String?
) {
    fun getIsPidHadVAS(): Boolean? {
        return isPidHadVAS
    }
}

返回参数示例

{
"abilityMap":  {
"outdoor_data_cloud_store":  {
  "commodityUrl":  "url",
  "effectiveEndDate":  12213213213,
  "effectiveStartDate":  12213213213,
  "externalCode":  "outdoor_data_cloud_store",
  "hadPopup":  false,
  "inService":  true,
  "isPidHadVAS":  true,
  "serviceProvider":  "brand"
},
"travel_mapbox":  {
  "commodityUrl":  "url",
  "effectiveEndDate":  12213213213,
  "effectiveStartDate":  12213213213,
  "externalCode":  "travel_mapbox",
  "hadPopup":  false,
  "inService":  true,
  "isPidHadVAS":  true,
  "serviceProvider":  "brand"
},
"outdoor_track_record_090_day":  {
  "commodityUrl":  "url",
  "effectiveEndDate":  12213213213,
  "effectiveStartDate":  12213213213,
  "externalCode":  "outdoor_track_record_090_day",
  "hadPopup":  false,
  "inService":  true,
  "isPidHadVAS":  true,
  "serviceProvider":  "brand"
}
},
"devId":  "1234",
"uuid":  "1234"
}

增值服务能力编码

增值服务能力编码为 externalCode

outdoor_data_cloud_store            数据云存
outdoor_track_record_007_day        轨迹记录循环存储 7 天
outdoor_track_record_030_day        轨迹记录循环存储 30 天
outdoor_track_record_090_day        轨迹记录循环存储 90 天
outdoor_track_record_180_day        轨迹记录循环存储 180 天
outdoor_track_record_365_day        轨迹记录循环存储 365 天
outdoor_riding_voice_broadcast      骑行播报

设置 C 端用户续费增值服务弹窗

增值服务权益激活弹窗是否弹出过。弹出后,单击关闭操作的回调中调用此接口,会更新 ODValueAddedServicesModel 模型中 hadPopup 字段。

接口说明

 /**
     * Set the status of the value-added service pop-up box
     *
     *
     * @param devId device ID
     * @param hadPopup Reset the pop-up status
     * @param listener callback
     */
    fun setValueAddedServicesPopWithDevID(devId: String,hadPopup:Boolean, listener: IThingResultCallback<Boolean?>)

示例代码

OutdoorUtils.setValueAddedServicesPopWithDevID(deviceId, true, new IThingResultCallback<Boolean>() {
  @Override
  public void onSuccess(Boolean result) {
    showToast("success");
  }

  @Override
  public void onError(String errorCode, String errorMessage) {
    showToast("onError code=" + errorCode + " message=" + errorMessage);
  }
});