0

TL; DRWas ist der Unterschied zwischen tippen Tastatur ist Schaltfläche „Go“ und Web-Seite-Taste

Ich versuche, den Unterschied zwischen Benutzer zu verstehen, was „Go“ -Taste auf Software-Tastatur tippen und Klopfen " Schaltfläche "Anmelden" auf der Authentifizierungswebseite gerendert, wenn SFSafariViewController verwendet wird, um Benutzer über Azure oder einen anderen OAuth-Anbieter zu authentifizieren.

Beschreibung

  • Wir verwenden verschiedene OAuth-Anbieter (Azure, Keycloack ein paar zu nennen) Benutzer auf unsere nativen iOS-Anwendung zu authentifizieren.
  • Wir einen Benutzer präsentieren, Browser-Instanz (SFSafariViewController) mit Login-Seite
  • Diese Seite enthält Benutzername, Passwort Felder und eine Schaltfläche zur Anmeldung
  • Wenn Benutzer das Passwort eingeben - er/sie entweder Log In verwenden kann Schaltfläche auf der Seite oder Go-Taste auf der Tastatur iOS Software
  • In beiden Fällen Verfahren ausgelöst werden einloggen und Benutzer der richtige URL
  • jedoch umgeleitet werden zurück, wenn der Benutzer Go Taste auf der Software-Tastatur tippt, ist die Anwendung nicht über Redirect benachrichtigt werden (Universal Link Logic Doesn ' t Arbeit) und umleiten URL-Seite wird innerhalb SafariViewController gemacht
  • Es in verschiedenen OAuth-Anbieter geschieht und kann nur auf iOS reproduziert werden (wenn Android Software-Tastatur-Taste, Universal-Link verhält sich fein)

Wir sind Diese Situation wird jetzt durch Erstellen einer speziellen Redirect-Seite behandelt, die eine spezielle Verknüpfung zu einem Benutzer enthält, auf den zugegriffen werden soll. Etwas wie "Tippen Sie hier, wenn Sie nicht automatisch zurück zur Anwendung weitergeleitet werden". Aber ich frage mich, ob es eine bessere Lösung dafür gibt und was ist der Unterschied zwischen der OS/Browser-Perspektive zwischen der Tastatur-Schaltfläche der Benutzer-Tapping-Software und dem HTML-Seitenelement.

Antwort

1

Dies liegt daran, Universal Links auf iOS kann nicht programmgesteuert geöffnet werden. Wenn Sie auf die Schaltfläche "Los" klicken, senden Sie im Wesentlichen programmgesteuert das Eingabeformular (Sie können es selbst erstellen, indem Sie den Universal-Link in die Safari-Leiste eingeben und auf "Los" klicken, die App wird nicht geöffnet). Ein Universal Link kann nur geöffnet werden, wenn ein Benutzer absichtlich auf den Link selbst oder auf einen Link klickt, der zum Universal Link umleitet.

+0

Benutzer gibt das Passwort in das Webformularfeld ein. Die Umleitung geschieht nicht, indem der Benutzer auf die Schaltfläche klickt, sondern indem das Server-Back-End das Formular empfängt, eine Authentifizierung durchführt und dann die Webseite auf eine andere URL umleitet. Haben Sie Links zu Dokumentationen oder Artikeln, die dieses Verhalten erklären? – sha

+1

Ich habe aktiv nach dieser Dokumentation in Apple gesucht, aber seit iOS 10 verfolgen sie den Tipp auf den ** ursprünglichen ** Link und wenn diese Domain eine Weiterleitung zu einer Universal Link Domain durchführt, wird Safari dies weiterhin als Benutzer tap b/registrieren c Der ursprüngliche Link wurde angezapft. Alles hängt von der Interaktion mit der ersten Verbindung ab. Ich sage, dass, wenn Sie "programmatisch" diesen originalen Link auswählen (Apple qualifiziert "Go" Button als programmatisch) und dann zum UL umleitet, wird Apple dies NICHT als Linkklick registrieren. Ich habe das nur durch meine eigenen Tests entdeckt. Apple hat keine Dokumente darauf :( – clayjones94

+0

Gibt es Möglichkeit, das 'Go' Button-Verhalten anpassen? Wie die Tastatur anstelle von "programmatisch" das Senden des Formulars? – sha

1

Ihr Workaround scheint vernünftig.

Über das Aktivieren von Universal Links, wenn Benutzer von der Tastatur aus navigieren: Dieser Fall scheint der Situation ähnlich zu sein, wenn der Benutzer eine URL in die Adresszeile des Browsers eintippt und auf GO klickt. Wenn Benutzer dies tun, als die Absicht des Benutzers, im Browser zu bleiben, nicht zur App gehen. Daher ist es logisch, Universal Links nicht zu verwenden.

Ein weiterer Weg, um eine bessere Erfahrung für diesen Fall zu machen: Wenn Benutzer navigiert zu "spezielle Redirect-Seite" auf dem iPhone, versuchen Sie zu benutzerdefinierten URL-URL Ihrer App zu navigieren. An dieser Stelle wissen Sie bereits, dass die App auf diesem Gerät installiert ist. Wenn Sie versuchen, zur URL customURLScheme zu navigieren, wird der iOS-Systemdialog angezeigt, z. B. "Möchten Sie die XYZ-App öffnen?". Dennoch scheint dies ein bisschen besser als "Tippen Sie hier, wenn Sie nicht automatisch zurück zur Anwendung weitergeleitet werden".

Wahrscheinlich haben Sie bereits herausgefunden, dass die "spezielle Redirect-Seite" auf einer anderen Domain als "Universal Links enabled domain" liegen sollte. Durch das Navigieren in derselben Domain werden keine Universal Links aktiviert. Als Referenz, App Preview page, die wir haben, dient im Wesentlichen den gleichen Zweck wie Ihre "spezielle Redirect-Seite".

+0

Vielen Dank. Leider können wir benutzerdefinierte URI-Schemata nicht verwenden und müssen normale HTTPS-Links über Universal Link-Ansatz behandeln Ja, wir haben im Wesentlichen zwei benutzerdefinierte Domains für eine spezielle Redirect-Seite und einige JS-Logins, um sicherzustellen, dass Link-User-Klicks zu einer anderen Domain führen, so dass eine universelle Link-Handhabung ausgelöst wird Tinten für OAuth scheint ein sehr generisches Problem zu sein, ich kann nicht glauben, dass dies nicht besser gelöst wurde. – sha

+0

Es gibt Auswirkungen auf die Privatsphäre, um Weiterleitungen/App-Öffnen ohne Zustimmung des Benutzers zuzulassen. Denken Sie über die gemeinsame Nutzung von Cookies zwischen Safari und SFSafariViewController nach. Diese Freigabe wurde von Apple in iOS 11 aus einem guten Grund getötet. Viele dubiose Spieler kümmern sich viel mehr um Profit als um die Privatsphäre der Nutzer. Natürlich werden auch legitime Anwendungsfälle wie OAuth verletzt. –

Verwandte Themen