ActivityKit|在 ViewModel 中统一管理灵动岛启动
问题场景说明
在取件喵 App 中,创建了一个 LiveActivityManager.shared.startPickupActivity() 方法用于启动灵动岛通知。
在项目中,我在两处分别调用了这个方法:
- 在 PickupViewMode 的
addPickup方法中,如果添加取件码成功,则调用startPickupActivity()方法。 - 在 AnalyzeImageIntent 这个 Intent 中,我再次根据添加结果调用了
startPickupActivity()方法。
这不仅导致重复的代码逻辑,而且在 AnalyzeImageIntent 中会启动两次灵动岛,导致灵动岛时不时出现异常。
最佳实践
在主 App 的 ViewModel 中统一管理灵动岛的启用逻辑,addPickup() 方法现在统一处理 Live Activity 启动。
在 Intent 中直接调用 ViewModel 中的方法即可。

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