我正在使用其第一个屏幕使用SFAuthenticationSession使用Web身份验证会话的应用程序
常规行为:应用启动后,它会以ios默认身份验证提示“我的应用xxx希望使用“ testauthentication.com”登录”提示我,并带有继续和取消选项。
此警报是iOS框架处理的默认弹出窗口
现在我的问题是:当应用启动并显示此警报时,如果我锁定屏幕并再次将其解锁-弹出窗口消失并且用户被阻止,前进的唯一方法是杀死并重新启动应用
我的问题是如何再次显示警报对话框,以便用户可以继续
我想到了当应用程序从后台来回移动到前景时重新加载视图。但是弹出窗口仅出现一次,但并非每次都出现。不确定这是否也是正确的方法。请指教
func applicationDidEnterBackground(_ application: UIApplication) {
AppHelper.sharedInstance.isAppLaunchedForFirstTime = false
}
func applicationDidBecomeActive(_ application: UIApplication) {
let isUserLoggedIn = AppHelper.sharedInstance.isUserLoggedIn ?? false
let appLaunchedForFirstTime = AppHelper.sharedInstance.isAppLaunchedForFirstTime ?? false
if !appLaunchedForFirstTime && !isUserLoggedIn {
if let viewController = UIApplication.shared.keyWindow!.rootViewController as? LoginViewController {
viewController.navigateToLogin(from: viewController)
}
}
}
因此,当锁定的applicationDidEnterBackground会被调用并将bool设置为false 当再次回到前台时,将调用applicationDidBecomeActive并执行viewController.navigateToLogin(from:viewController)。但这并不会每次都弹出
另一个问题是方法navigationToLogin(from:viewController)实际上将新的viewcontroller推入堆栈。因此,不是重新加载即时消息即可创建重复项,这是最糟糕的做法。但是我该如何处理这些情况。请指教