无法实时获取Live Activity权限变更,activityEnablementUpdates使用求助
Live Activity权限状态监听不触发的解决方法
你的代码核心问题是每次循环迭代时都新建了ActivityAuthorizationInfo实例,activityEnablementUpdates的订阅是和实例绑定的,频繁创建新实例会导致监听链路断裂,权限变更时自然无法触发handleLiveActivityStateChange。
修正步骤如下:
- 先在类的全局作用域保存一个
ActivityAuthorizationInfo的持久实例:
private let liveActivityAuthInfo = ActivityAuthorizationInfo()
- 复用这个实例启动监听,不要在循环内重复创建:
Task { for await enabled in liveActivityAuthInfo.activityEnablementUpdates { self.handleLiveActivityStateChange(enabled) } }
额外注意事项:
- 控制监听Task的生命周期,比如在页面出现时启动监听,消失时调用
Task.cancel()取消订阅,避免不必要的资源占用和内存泄漏。 - 测试时确认是修改系统设置中当前应用的Live Activity权限开关,不要误操作其他权限项。
内容的提问来源于stack exchange,提问作者li chuanshi
相关产品推荐
相关产品推荐

