No meu aplicativo iOS, eu uso a forma típica de autenticação biométrica depois de voltar do segundo plano:
@main
struct MyApp: App {
@Environment(\.scenePhase) var phase
var body: some Scene {
WindowGroup {
MainView()
.onChange(of: phase) { (newPhase) in
switch newPhase {
case .active:
biometricsAuthentication()
case .inactive: print("App is inactive")
case .background: print("App is on background")
appBlocked = true
default: print("default")
}
}
}
}
Fazendo dessa forma tudo funciona bem, mas há um pequeno momento em que o MainView fica visível ANTES dos acionadores do método de autenticação, suponho que devido à fração de tempo que o aplicativo fica .inativo, após voltar de .background.
Na versão do aplicativo MacOS, eu chamo esse método de autenticação no método AppDelegate "applicationDidFinishLaunching" e nada é apresentado até que a autenticação seja concluída. Então, tentei emular isso no iOS, com um AppDelegate dedicado, e tentei alguns métodos, sem sucesso.
Esta é a maneira correta de fazer isso? Existe uma maneira de conseguir isso?