TL; DR
我正在尝试了解用户点击软件键盘上的“开始”按钮和点击身份验证网页上显示的“登录”按钮时使用SFSafariViewController
通过Azure或其他任何人对用户进行身份验证的区别OAuth提供商。
描述
Log In
按钮或iOS软件键盘上的Go
按钮Go
按钮,则不会通知应用程序有关重定向(通用链接逻辑不起作用),并且在SafariViewController中呈现重定向URL页面我们现在通过创建特殊的重定向页面来处理这种情况,该页面包含要点击的用户的特殊链接。类似于“如果您没有自动重定向回应用程序,请点击此处”。但我想知道是否有更好的解决方案,以及用户点击软件键盘按钮和HTML页面元素之间的操作系统/浏览器视角有何不同。
答案 0 :(得分:1)
这是因为iOS上的Universal Links无法以编程方式打开。当您单击“开始”按钮时,您实际上是以编程方式提交输入表单(您可以通过在Safari栏中输入Universal链接并单击go来自行重新创建,应用程序将无法打开)。只有当用户有意点击链接本身或重定向到通用链接的链接时,才能打开通用链接。
答案 1 :(得分:1)
您的解决方法似乎很合理。
关于当用户从键盘导航时激活通用链接:这种情况似乎类似于用户在浏览器的地址栏中键入一些URL并点击GO时的情况。如果用户这样做,那么用户意图就是留在浏览器中,而不是去App。因此,不参与Universal Links是合乎逻辑的。
为此案例提供更好的体验的另一种方法: 如果用户导航到"特殊重定向页面"在iPhone上,尝试导航到应用程序的customURLScheme URL。此时您已经知道该应用程序已安装在此设备上。 尝试导航到customURLScheme URL将显示iOS系统对话框,例如"您要打开XYZ App吗?"。如果你没有自动重定向回应用程序"那么这似乎比#34;点击这里好一点。
可能你已经发现"特殊的重定向页面"应该位于不同的域而不是#34; Universal Links enabled domain"。在同一域内导航不会使用Universal Links。作为参考,我们拥有的App Preview page基本上与您的目的相同"特殊重定向页面"。
答案 2 :(得分:0)
假设您可以控制OAuth表单,我发现以下技术可以提供相当不错的体验:
<button type="submit"
style="visibility:hidden; height: 0; margin: 0; padding: 0;"
onclick="document.activeElement.blur(); return false;">
</button>
在表单上所有其他提交按钮上方添加此隐藏按钮。当按下“执行”按钮时,我观察到它“单击”了表单上的第一个提交按钮。该按钮可以捕捉到该单击,使当前输入模糊,从而使键盘消失,然后取消表单提交。然后,用户可以点击表单上的可见按钮以正确完成该过程。不需要两个流程。
这还允许使用相同OAuth表单的台式机用户按Enter提交表单或单击按钮。