【发布时间】:2021-01-17 05:52:32
【问题描述】:
如果用户已经解除了 IOS 要求应用程序权限的第一个默认警报,那么将用户发送到设置以允许权限的正确方法是什么?
我使用以下代码将用户发送到设置并允许通知权限,这是在用户关闭第一个直接请求权限的默认对话框并由 IOS 完成的情况下完成的。 该应用使用 Core Data 作为本地数据库,使用 SwiftUI 建立 UI。
这是我用来将用户发送到设置以允许权限的代码:
UIApplication.shared.open(URL(string: UIApplication.openSettingsURLString)!)
但我在以下行中收到紫色警告(除其他外),以便在 Core Data 中创建新对象:
guard let appDelegate = UIApplication.shared.delegate as? AppDelegate else { return }
紫色警告:
UIApplication.delegate must be used from main thread only
我也收到以下紫色警告Publishing changes from background threads is not allowed; make sure to publish values from the main thread (via operators like receive(on:)) on model updates.
关于正在发布的并且我希望在运行时修改的已发布属性。
等等.. 处理核心数据数据库的问题。问题似乎很明显,将用户发送到设备设置部分的第一行代码导致应用程序无法像应有的那样在主线程上运行,因此出现错误。
在任何核心数据处理函数上添加DispatchQueue.main.async {} 对我来说似乎都不合适,我不确定它是否能解决所有问题。
如果用户已经关闭了 IOS 要求应用程序权限的第一个默认警报,那么将用户发送到设置以允许权限的正确方法是什么?
【问题讨论】:
标签: ios swift permissions swiftui