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

SwiftUI中正常运行的Live Activity在UIKit中无提示失败

UIKit中Live Activity调用Activity.request()无响应的解决办法

1. 修正staleDate参数设置

你当前代码将staleDate设为.now,会导致Activity立即进入过期状态,系统大概率不会展示。需要设置一个未来的时间,比如1小时后过期:

try Activity<UploadingAttributes>.request(
    attributes: attributes,
    content: .init(state: state, staleDate: .now.addingTimeInterval(3600))
)

2. 检查Info.plist配置

确保主App和Widget Extension的Info.plist都完成正确配置:

  • 主App的Info.plist添加NSSupportsLiveActivities键,类型设为布尔值,值为YES
  • Widget Extension的Info.plist中,NSExtensionPrincipalClass要指向你的UploadingActivityLiveActivity类,NSExtensionActivationRule设为TRUEPREDICATE

3. 确认Target关联配置

  • Live Activity小组件必须是独立的Widget Extension Target,主App Target需要在General -> Frameworks, Libraries, and Embedded Content中添加该Extension,并设置为Embed & Sign
  • 若后续需要跨Target更新Activity状态,需为主App和Widget Extension开启相同的App Groups权限

4. 前置检查权限状态

调用request前先确认权限,避免因权限问题导致无响应:

@objc func startActivities(_ sender: Any?) {
    let attributes = UploadingAttributes()
    let state = UploadingAttributes.ContentState()
    
    switch ActivityAuthorizationInfo().authorizationStatus {
    case .authorized:
        do  {
            try Activity<UploadingAttributes>.request(
                attributes: attributes,
                content: .init(state: state, staleDate: .now.addingTimeInterval(3600))
            )
        } catch(let e) {
            print(e)
        }
    case .denied:
        print("用户已拒绝Live Activity权限")
    case .notDetermined:
        print("权限未确定,需引导用户开启")
    @unknown default:
        print("未知权限状态")
    }
}

5. 优化Live Activity视图渲染

锁屏界面的Rectangle无实际内容,可能导致系统无法正确识别渲染,建议补充基础内容:

ActivityConfiguration(for: UploadingAttributes.self) { context in
    VStack(spacing: 8) {
        Text("上传中")
            .font(.headline)
        ProgressView(value: context.state.progressValue)
            .progressViewStyle(.linear)
    }
    .padding()
    .background(Color.mint)
    .cornerRadius(12)
} dynamicIsland: { context in
    // 原dynamicIsland代码保持不变
}

6. 验证设备兼容性

Live Activity仅支持iOS 16.1及以上版本,Dynamic Island仅在iPhone 14 Pro系列及以上机型可用,确保测试设备符合要求。


内容的提问来源于stack exchange,提问作者Mehmet Karanlık

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 10:13:28