在阅读并尝试了几种解决方案(例如启用僵尸、添加异常断点等)后,我并没有找到崩溃的实际原因。下面是崩溃的堆栈跟踪。 在我的应用程序中,我将登陆页面作为生物识别验证,如果用户进入后台并再次从后台返回,则会发生生物识别验证。所以我使用了 appstate 作为环境变量。 所以当我打开应用程序时,它显示生物识别屏幕 - >成功 - >仪表板 - >背景 - >网络关闭 - >打开应用程序 - >崩溃。
如果这个流程总是在正常流程中无缝运行的地方崩溃。
class NetworkMonitor: ObservableObject {
private let networkMonitor = NWPathMonitor()
private let workerQueue = DispatchQueue(label: "Monitor")
var isConnected = false
var isNotConnected = false
init() {
networkMonitor.pathUpdateHandler = { path in
self.isConnected = path.status == .satisfied
self.isNotConnected = path.status == .unsatisfied
Task {
await MainActor.run {
self.objectWillChange.send()
}
}
}
networkMonitor.start(queue: workerQueue)
}
}
这是检查互联网连接的代码,在第二个登录选项(PIN 验证)中它也可以正常工作而不会崩溃。所以我怀疑这次崩溃只是在生物识别类别中。
已经为此投入了 2 天。寻求您的支持。
启用僵尸,添加异常断点,分析crashlytics的堆栈跟踪
要在 SwiftUI 中使用 async/await,它是 .task,例如像这样的东西
@State var isConnected = false
@State var isNotConnected = false
...
.task {
let monitor = NWPathMonitor()
for await path in monitor {
isConnected = path.status == .satisfied
isNotConnected = path.status == .unsatisfied
}
}