ActivityKit|在 ViewModel 中统一管理灵动岛启动

问题场景说明

在取件喵 App 中,创建了一个 LiveActivityManager.shared.startPickupActivity() 方法用于启动灵动岛通知。

在项目中,我在两处分别调用了这个方法:

  1. 在 PickupViewMode 的 addPickup 方法中,如果添加取件码成功,则调用 startPickupActivity() 方法。
  2. 在 AnalyzeImageIntent 这个 Intent 中,我再次根据添加结果调用了 startPickupActivity() 方法。

这不仅导致重复的代码逻辑,而且在 AnalyzeImageIntent 中会启动两次灵动岛,导致灵动岛时不时出现异常。

最佳实践

在主 App 的 ViewModel 中统一管理灵动岛的启用逻辑,addPickup() 方法现在统一处理 Live Activity 启动。

在 Intent 中直接调用 ViewModel 中的方法即可。

注意:本地通知的降级方案也无需在 Intent 或 ViewModel 中处理,在 LiveActivityManager 中统一处理即可。