SwiftUI应用兼容Mac时如何仅为iOS保留ActivityKit扩展?
解决ITMS-90863报错:仅为iOS保留ActivityKit Widget且保留Mac支持
核心思路
ActivityKit框架仅在iOS/iPadOS平台提供,因此只需让Widget扩展仅针对iOS/iPadOS编译,主App仍保留Mac平台支持,即可避免链接不存在的框架。
具体操作步骤
1. 限制Widget扩展的部署平台
- 在Xcode中选中你的Widget扩展目标(例如
YourAppWidgetExtension) - 切换到General标签页,找到Deployment Info区域
- 取消勾选macOS选项,仅保留iOS(默认iOS已包含iPadOS支持)
2. 配置主App的框架链接(若主App引用了ActivityKit)
如果主App代码里也调用了ActivityKit相关逻辑,需做以下处理:
- 选中主App目标,进入Build Phases -> Link Binary With Libraries
- 找到
ActivityKit.framework,将其Status从Required修改为Optional - 在调用ActivityKit的代码前添加平台判断:
import ActivityKit if #available(iOS 16.1, *) { // 此处编写ActivityKit相关逻辑,例如创建Live Activity }
3. 验证与打包
- 执行
Cmd + Shift + K清理项目后重新编译 - 尝试打包提交App Store,确认报错不再出现
额外注意事项
- 检查Widget扩展的
Info.plist,确保没有包含Mac相关的配置项,比如NSExtension的属性中不要添加Mac适配设置 - 分别在iOS和Mac设备上测试主App功能,确保Mac端功能不受影响
内容的提问来源于stack exchange,提问作者alionthego
相关产品推荐
相关产品推荐

