从重置密码邮件 ios 重定向时重定向到特定的 viewcontroller

Redirect to a particular viewcontroller when redirecting from reset password mail ios

在我的应用程序中,我有一个主页 viewcontroller,用户可以从中登录、重设密码并跳至其他页面。

如果我点击 "Forgot password",我会收到一封可以重设密码的邮件。当我从电子邮件重定向回来时,我希望该应用程序留在同一个主页 viewcontroller。

如果我的流程是:在主页点击 "Forgot password" viewcontroller -> 然后转到忘记密码 viewcontrollers -> 退出应用程序 -> 然后转到我的邮件并重置password ,即使这样我也希望应用程序在前台打开时在主页本身中打开,而不是在我退出应用程序或最小化应用程序的任何其他 viewcontrollers 上打开。

我该怎么做?谢谢

你可以在修改密码后通过管理标志来完成,然后在后台运行应用程序。

让我解释一下,在 AppDelegate 中取一个全局 var isChangedPwd = false。当最终使用将进入重置密码屏幕并成功重置密码时,您需要制作 isChangedPwd = true 然后在 applicationDidEnterBackground 中管理标志,如下所示

func applicationDidEnterBackground(_ application: UIApplication) {
     if isChangedPwd {
        exit(0)
     }
}

这意味着当您的 isChangedPwdtrue 并且应用程序将进入后台时,您的应用程序将退出并在初始级别启动。

注意: 如果您不想使用 exit(0) 并且不想在初始级别启动应用程序,那么您可以重定向通过以下代码转到主页

func applicationDidEnterBackground(_ application: UIApplication) {
         if isChangedPwd {
            for viewCon in (self.navigationController?.viewControllers)! {
              if viewCon is HomePageViewController {
                self.navigationController?.popToViewController(viewCon, animated: true)
                break
              }
            }
        }
    }

据我了解你的问题: 您希望每当用户点击主屏幕上的 "Forgot password" 时,用户将被定向到 ForgotPasswordScreen,然后用户会收到一封邮件(带有 link 以重置密码 [所有这些都由您的服务器完成])。回到应用程序,应该向用户显示主屏幕,无论是启动应用程序还是已经在后台。

如果是上述情况,那么我想您正在执行一项额外的任务。

我建议不需要 ForgotPasswordScreen,只需显示带有文本字段的警报,让用户输入电子邮件 ID 以向其发送密码重置邮件。

你应该只设置一个标志 isLoggedIn

If isLoggedIn == true 然后加载你的其他 viewControllers。

isLoggedIn 必须是一个全局变量,只应在成功时设置 login/logout