2017-11-14 2 views
2

In meiner App habe ich einen Home-Viewcontroller von wo Benutzer anmelden, Passwort zurücksetzen und zu anderen Seiten überspringen können.Umleiten zu einem bestimmten Viewcontroller beim Umleiten von Reset-Passwort mail ios

Wenn ich auf "Passwort vergessen" klicke, erhalte ich eine Mail mit der ich das Passwort zurücksetzen kann. Wenn ich von einer E-Mail zurückleite, möchte ich, dass die App im selben Home-Viewcontroller bleibt.

Wenn mein Fluss ist: klicke auf "Passwort vergessen" von home viewcontroller -> dann zu ForgotPassword viewcontrollers gehen -> App verlassen -> dann zu meiner Mail gehen und Passwort zurücksetzen, auch dann möchte ich die App in öffnen die Startseite selbst wenn es um Vordergrund geht, nicht um irgendwelche anderen Viewcontroller von wo ich die App verlasse oder die App minimiert habe.

Wie kann ich das tun? Danke

+0

Ich nehme an, Sie URL-Schema eingerichtet für die Navigation zurück auf die App aus der Mail haben in In diesem Fall verwenden Sie das URL-Schema, um zum Startbildschirm zu navigieren, indem Sie etwas haben. 'yourapp-schema: // home' Wenn Sie mit URL-Schemata in der iOS-App nicht vertraut sind, empfehle ich Ihnen, über sie zu lesen. – carbonr

Antwort

1

Sie können es tun, indem Sie Flagge nach Passwort ändern und App im Hintergrund gehen.

Lassen Sie mich erklären, in der AppDelegate nehmen Sie eine globale var isChangedPwd = false. Wenn Endanwendung zurückgesetzt Passwort-Bildschirm weitergehen und erfolgreich Passwort zurücksetzen, dann müssen Sie isChangedPwd = true machen und dann Flagge verwalten in applicationDidEnterBackground wie unten

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

Es bedeutet, wenn Ihre isChangedPwdwahr sein wird und App geht, wird im Hintergrund Dann wird Ihre App beendet und auf der Ausgangsebene gestartet.

HINWEIS: Wenn Sie nicht Ausgang verwenden möchten (0) und nicht die App bei der ersten Stufe beginnen, dann können Sie auf Startseite von unten Code umleiten.

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

Ich glaube nicht, dass es eine großartige Benutzererfahrung ist, die App zu beenden, anstatt die Benutzer-Navigation zu verwalten.Es ist ein Workaround eher eine gute Lösung – carbonr

+0

@carbonr Ja, Sie haben Recht, ich denke das gleiche, warum ich mit der zweiten Lösung aktualisiert habe. – iPatel

+0

@iPatel zweite Methode arbeitete für mich .. – vensM

0

Soweit ich verstehe Ihre Frage: Sie wollen, dass, wenn Benutzer „Passwort vergessen“ auf auf Homescreen tippt, wird der Benutzer zu ForgotPasswordScreen gerichtet wird und dann ein Mail-Benutzer erhalten (mit einem Link zum Zurücksetzen des Kennworts [all dies von Ihrem Server getan]). Zurück zur App, sollte dem Benutzer HomeScreen angezeigt werden, egal ob er die App startet oder bereits im Hintergrund.

Wenn oben ist das Szenario, dann denke ich, es gibt eine zusätzliche Aufgabe, die Sie ausführen.

Ich würde vorschlagen, dass ForgotPasswordScreen nicht erforderlich ist, zeigen Sie einfach eine Warnung mit einem Textfeld an, damit Benutzer die E-Mail-ID eingeben können, um eine E-Mail zum Zurücksetzen des Kennworts zu senden.

Und Sie sollten nur eine Flagge isLoggedIn gesetzt

Wenn isLoggedIn == true nur dann anderen Viewcontrollers laden.

isLoggedIn hat eine globale Variable sein, die nur zum Zeitpunkt der erfolgreichen Anmeldung festgelegt werden sollten/Logout

Verwandte Themen