You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Swift中为HKWorkout添加自定义图片?

如何在Swift中为HKWorkout添加自定义图片?

嘿,这个问题我之前做健身App的时候踩过坑!其实Apple Fitness里显示的自定义Workout图标,是靠两个关键步骤实现的——在App Store Connect配置专属健身图标,再在代码里给HKWorkout加上正确的元数据关联,跟你提到的Matrix App是同一个逻辑。

第一步:在App Store Connect配置健身图标

这是很多人容易忽略的环节,Apple Fitness的图标不是直接复用你的App主图标,需要单独配置:

  • 登录App Store Connect,找到你的目标App,进入「App信息」页面
  • 往下滚动找到「健身」板块(如果没看到,可能需要先在App的功能声明里勾选健康相关权限)
  • 上传符合要求的图标:建议用1024x1024的透明背景PNG/SVG,Apple会自动适配各种显示尺寸
  • 保存配置,这个图标会被Apple服务器关联到你的App Bundle ID

第二步:在代码里给HKWorkout添加关联元数据

创建HKWorkout的时候,必须把你的App的Bundle ID作为元数据传入,对应HealthKit的HKWorkoutMetadataKeyAssociatedApplicationBundleIdentifier键:

// 1. 先配置Workout基础信息
let workoutConfig = HKWorkoutConfiguration()
workoutConfig.activityType = .strengthTraining // 根据你的App场景调整
workoutConfig.locationType = .indoor

// 2. 构建元数据字典,关联当前App的Bundle ID
var workoutMetadata = [HKMetadataKey: Any]()
if let bundleID = Bundle.main.bundleIdentifier {
    workoutMetadata[HKWorkoutMetadataKeyAssociatedApplicationBundleIdentifier] = bundleID
}

// 3. 创建HKWorkout实例
let workout = HKWorkout(
    activityType: workoutConfig.activityType,
    start: Date(), // 替换成你的实际开始时间
    end: Date().addingTimeInterval(3600), // 替换成实际结束时间
    workoutEvents: nil,
    totalEnergyBurned: HKQuantity(unit: .kilocalorie(), doubleValue: 350), // 替换成实际数据
    totalDistance: nil,
    metadata: workoutMetadata
)

// 4. 保存到HealthKit
let healthStore = HKHealthStore()
healthStore.save(workout) { success, error in
    if let error = error {
        print("Workout保存失败:\(error.localizedDescription)")
        return
    }
    print("Workout已成功关联App图标,稍后在Apple Fitness就能看到啦!")
}

几个注意事项

  • 图标不会实时显示,可能需要等Apple服务器同步(大概几十分钟到几小时),或者重启Apple Fitness App才能看到效果
  • 如果用TestFlight测试,记得TestFlight的App也需要在App Store Connect里配置健身图标,不然测试版本看不到
  • 确保你的App已经获得了HealthKit的读写权限,不然保存Workout会失败

备注:内容来源于stack exchange,提问作者justTil

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.23 14:04:05