关于 ios-frameworks
ios-frameworks 是面向 iOS 开发的技能,涵盖 Apple 框架在数据存储、机器学习、AR、云同步和系统服务中的应用,适用于需要整合这些能力的应用开发。
主要功能
- 01CoreData 与 SwiftData 持久化
- 02CoreML 设备端推理
- 03ARKit 场景与对象追踪
- 04CloudKit 数据同步
- 05StoreKit 2、HealthKit 与 CoreLocation
- 06APNs 推送通知
适用场景
- 01构建本地数据待办应用
- 02在应用中添加 AR 对象识别
- 03同步用户数据至 iCloud
- 04开发健康、定位或内购功能
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ alphaonedev/ openclaw-graph --skill ios-frameworks安装后在 Claude Code 中输入/ios-frameworks确认已加载。
详细介绍
ios-frameworks
用途
此技能可帮助 AI 使用 Apple 的核心框架开发 iOS 应用,重点涵盖数据管理、ML 集成、AR 体验、云同步、App 内购买、健康追踪、位置服务和推送通知。
适用场景
当应用需要本地数据持久化(例如用户个人资料)、集成 ML 模型进行预测、构建 AR 叠加效果、将数据同步到 iCloud、处理购买、访问健康数据、追踪用户位置或发送推送通知时,请使用此技能。适用于带有支付功能的电商应用、健身追踪器或 AR 游戏等场景。
主要功能
- CoreData/SwiftData:管理持久化对象图;SwiftData 提供了现代化且适用于 SwiftUI 的数据建模与存储替代方案。
- CoreML:在设备上运行 ML 模型以执行图像识别等任务;支持来自 Create ML 或 TensorFlow 的模型。
- ARKit:利用设备的摄像头和传感器支持平面检测、对象追踪和世界映射等 AR 会话功能。
- CloudKit:通过 CKContainer 和 CKRecord 提供基于 iCloud 的存储和数据库,以便在多台设备间同步用户数据。
- StoreKit 2:使用 SKProduct 和 SKPayment API 处理 App 内购买和订阅,实现变现。
- HealthKit:通过 HKHealthStore 访问步数或心率等健康与健身数据,需要用户授权。
- CoreLocation:通过 CLLocationManager 提供位置更新和地理围栏功能,适用于需要实时定位的应用。
- APNs 推送:通过 Apple 推送通知服务,使用设备令牌和 APNs 提供商 API 发送远程通知。
使用模式
使用 CoreData 时,在 AppDelegate 中初始化持久化容器,并在视图控制器中执行提取。使用 ARKit 时,在 UIViewController 子类中启动 AR 会话并处理锚点更新。集成 CoreML 时,加载 .mlmodel 文件并根据用户输入运行预测。CloudKit 的使用模式:使用 CKDatabase 保存记录并订阅变更。对于 StoreKit 2,请求商品并在支付队列观察器中处理交易。访问 HealthKit 时,请求授权后查询 HKSampleType。使用 CoreLocation 时,配置 CLLocationManager 代理以接收更新。对于 APNs,请注册远程通知,并在 AppDelegate 中处理收到的有效负载。
常用命令/API
- CoreData 设置:在 AppDelegate.swift 中创建持久化容器:
let container = NSPersistentContainer(name: "MyApp")
container.loadPersistentStores { ... } - CoreML 预测:加载模型并执行预测:
let model = MyModel() let input = MyModelInput(...) let output = try model.prediction(input: input) - ARKit 会话:在视图控制器中:
let session = ARSession() session.delegate = self session.run(ARWorldTrackingConfiguration()) - CloudKit 记录保存:使用 CKDatabase:
let record = CKRecord(recordType: "MyType") record["field"] = "value" database.save(record) { ... } - StoreKit 2 购买:请求并购买:
let request = SKProductsRequest(productIdentifiers: ["com.example.product"]) request.start() // In delegate, handle products and SKPayment - HealthKit 查询:授权并查询:
healthStore.requestAuthorization { ... } let query = HKSampleQuery(sampleType: HKQuantityType(...), ...) { ... } - CoreLocation 更新:开始监控:
locationManager.requestWhenInUseAuthorization() locationManager.startUpdatingLocation() - APNs 注册:在 AppDelegate 中:
UNUserNotificationCenter.current().requestAuthorization { ... } application.registerForRemoteNotifications()
集成说明
通过 Xcode 添加框架:选择目标 > 通用 > 框架、库和嵌入内容,然后添加 CoreData.framework 等。对于权限,请更新 Info.plist(例如,为 CoreLocation 添加 NSLocationWhenInUseUsageDescription)。在脚本或配置中使用环境变量存储 $CLOUDKIT_API_KEY 等密钥。对于 CloudKit,请在 Xcode 中启用 iCloud 功能,并在开发者门户中设置容器。在代码中导入模块(例如,import CoreData)。对于 APNs,请在 Apple Developer 门户中生成证书,并将其用于你的服务。配置格式:在 entitlements 文件中,添加 com.apple.developer.icloud-container-identifiers 等 iCloud 功能。确保将目标设为 iOS 17+,以兼容 SwiftData。
错误处理
对于 CoreData,在设置期间捕获 NSPersistentStoreCoordinator 错误(例如,catch let error as NSError { print(error.localizedDescription) })。在 CoreML 中,使用 do { try model.prediction(...) } catch { print(error) } 处理预测错误。ARKit 会话可能会抛出 ARSession.RunOptions 错误;请在代理方法中检查会话状态。CloudKit 操作使用 CKError;使用 if case .partialFailure(let errors) = error { ... } 进行处理。StoreKit 的 SKPaymentTransaction 错误包含 .paymentCancelled 等代码;请观察队列以发现失败。HealthKit 授权失败需要通过 UI 提示;请检查 error as HKErrorCode。CoreLocation 错误通过代理的 didFailWithError 处理;使用错误代码进行调试。对于 APNs,请在 AppDelegate 的 didFailToRegisterForRemoteNotificationsWithError 中处理注册错误。
具体用法示例
-
示例:构建基于 CoreData 的待办事项应用
在新项目中设置 CoreData:在 Xcode 中创建数据模型,然后在 ViewController.swift 中通过以下代码获取项目:
let fetchRequest: NSFetchRequest<Item> = Item.fetchRequest() do { let items = try context.fetch(fetchRequest) } catch { ... }
保存新项目:let newItem = Item(context: context); newItem.name = "Task"; try context.save()。 -
示例:集成 ARKit 进行对象检测
在 ARViewController 中配置对象检测:
let configuration = ARWorldTrackingConfiguration() configuration.detectionImages = Set([ARReferenceImage(...)] ) session.run(configuration)
在session(_:didUpdate:)代理中处理检测结果,以叠加 UI 元素。
图关系
- 相关:移动端集群(例如,android-frameworks 可提供跨平台方面的见解)。
- 依赖:用于 APNs 和 CloudKit 的身份验证技能(使用 $APNS_TOKEN)。
- 集成:用于 CloudKit 同步的后端技能。
- 冲突:非 Apple 生态系统;但可链接到 web-api 技能以支持混合应用。