配置 Widget 工程

更新时间:2025-03-10 06:25:08下载pdf

创建 Widget

  1. 完成 Widget 工程创建。自 Xcode 16(iOS 18 SDK)发布以来,仅支持基于 WidgetKit 的 Widget 项目。SDK Demo 即采用 WidgetKit 实现。
  2. 设置 App Groups 相关配置:
    1. 启用 App Groups 权限。确保 WidgetExtension 项目与 App 项目中的 App Group 信息一致。 配置 Widget 工程
    2. 将您从涂鸦开发者平台获取的安全图片、AppKey、AppSecret 初始化 SDK。在用 AppKey 初始化 SDK 前,您需要设置 APP_GROUP_NAME。确保 WidgetExtension 项目中 APP_GROUP_NAME 和 App 项目中的 APP_GROUP_NAME 保持一致。只有这样,才能确保 WidgetExtension 能够正确读取 App 中的用户信息。
      [ThingSmartSDK sharedInstance].appGroupId = APP_GROUP_NAME;
      [[ThingSmartSDK sharedInstance] startWithAppKey:SDK_APPKEY secretKey:SDK_APPSECRET];
      

使用 SDK

  • 在 App 工程中设置当前家庭 ID(homeId)。
  • 在 WidgetExtension 工程中使用 ThingSmartDeviceModel.switchDp 判断设备是否支持快捷开关。
  • 在 WidgetExtension 工程中使用 ThingSmartDevice.publishDps 修改设备 DP 状态。
let smartDevice = ThingSmartDevice(deviceId: devId)
if let switchStatus {
    // Toggle the switchStatus value
    let status = !switchStatus
    // Prepare a dictionary to store the DP updates
    var dps: [String: Any] = [:]

    // Iterate over switchDps and set each data point ID to the toggled status
    smartDevice?.deviceModel.switchDps?.forEach({ dpId in
        dps[dpId.stringValue] = status
    })
    
    // Publish the DP updates using internet mode
    smartDevice?.publishDps(dps, mode: ThingDevicePublishModeInternet) {
        continuation.resume() // Resume on success
    } failure: { error in
        continuation.resume() // Resume on failure
    }
}