灵动岛/实时活动 启动成功后(.active)立即dismiss

2025-11-06  本文已影响0人  revolution丶

适用于:在开发 灵动岛/实时活动 时,监控到在成功创建(.active)后,几乎立刻取消(. dismissed)的bug

先上代码

//一个灵动岛实例
let activityInstance = try Activity<MBSNIsLandAttributes>.request(
                        attributes: staticAttributes,
                        content: .init(state: initialContentState, staleDate: endTime),
                        pushType: .token)
//给该实例加个状态监听
Task {  @MainActor in
    for await state in activityInstance.activityStateUpdates {
            switch state {
            case .active: 
                  print("Live Activity 正在运行")
            case .ended:
                  print("Live Activity 已结束或过期")
            case .dismissed:
                  print("Live Activity 被用户手动关闭")
            case .stale: break
            case .pending:
                  print("Live Activity 被用户pending")
            @unknown default:
                   break
          }
      }
}
print("灵动岛activity id -> \(activityInstance.id)")

这是新建了一个灵动岛实例activityInstance,然后给他加上了状态监听。正常创建成功后,监听会打印“Live Activity 正在运行”,然后显示灵动岛/实时活动。但是笔者在开发过程遇到了:

先打印“Live Activity 正在运行”,甚至成功打印了activityInstance的id
然后立刻打印“Live Activity 被用户手动关闭”这样的情况,
然后灵动岛/实时活动并没有被创建出来,
当然现实中也没有人操作。

经过AI的帮助,这种情况的原因可能是,创建成功后,灵动岛在渲染的过程中失败。从而导致系统取消。
具体到本人, 笔者在新建的过程中传入的初始化实例initialContentState中的某个参数有问题,这个参数是一个json字符串,而这个json字符串在灵动岛的swiftUI中,拼接到了一个URL上,从而导致URL失败,从而导致加载URL的LINK失败,从而导致灵动岛渲染失败。

泛化到所有:

希望对你有帮助。

如有错误,恳请斧正

上一篇 下一篇

猜你喜欢

热点阅读