在移动应用内浏览器中打开时,iOS 中的魔术链接出现问题

Posted

技术标签:

【中文标题】在移动应用内浏览器中打开时,iOS 中的魔术链接出现问题【英文标题】:Problem with magic link in iOS when opening within mobile in-app browser 【发布时间】:2020-01-25 05:09:42 【问题描述】:

所以魔术链接的通常流程是:

    用户点击其电子邮件中的链接(例如 www.domain.com/auth/:token) 页面已在电子邮件的应用内浏览器中打开。 令牌存储在应用内浏览器的本地存储中,令牌从 URL 中删除(通过重定向或其他方法)。 用户已登录(在应用内浏览器中)。

如果用户随后在移动设备的应用内浏览器中单击“在 Safari 中打开此应用”(或其他浏览器),就会出现问题。用户将被注销,因为本地存储状态没有被继承,并且令牌已经从 URL 参数中删除。除非令牌作为查询/参数出现在每个页面 URL 上,这是不安全的并且违背了使用本地存储的目的。

在不提供典型登录流程(用户名/密码)的情况下,此用例的最佳解决方案是什么? (或者这是唯一的方法?)似乎您无法通过实际的浏览器应用程序使用魔术链接浏览 ios 中的任何应用程序,因为魔术链接将始终来自您的电子邮件应用程序(因此,将始终使用 in-应用浏览器)。

【问题讨论】:

在您的情况下,电子邮件的应用内浏览器是什么? 您是否在服务器和应用程序之间设置了Universal Links? 【参考方案1】:

我与我们的 web 应用程序的无密码登录身份验证在同一条船上。您最终是否使用 Universal Links 成功解决了这个问题?

【讨论】:

【参考方案2】:

要使用魔术链接从单击到电子邮件客户端的锚点打开您的应用程序,您肯定需要设置Universal Links。

也就是说,事情并不总是那么简单。在某些情况下,Universal Links 将不起作用,而是直接在某些应用内浏览器中打开,而不是打开您的应用,正如您所注意到的,这种情况有时会在 SafariViewController 嵌入到电子邮件客户端时发生。

那么如何让它在所有情况下都能正常工作?

如您所知,如果安装了通用链接,它应该会打开您的应用,但它应该在您的应用无法打开的任何其他情况下打开后备网页。这是您将使其防弹的地方:在后备网页上确保您放置一个带有“安全”第二/备用通用链接的明显按钮,它将在您的应用程序中执行完全相同的操作。

它会起作用,因为如果您的通用链接无法直接从电子邮件客户端打开并错误地打开浏览器窗口,那么它很可能会在从应用内浏览器后备网页触发时打开您的应用。

最后,您可能想要集中精力并付出额外的努力,为您的后备网页设置一个非常漂亮的设计,使其看起来像您的应用程序,以提供良好的用户体验,这样您的用户甚至可能不会注意到他们走了一个额外的步骤……

【讨论】:

以上是关于在移动应用内浏览器中打开时,iOS 中的魔术链接出现问题的主要内容,如果未能解决你的问题,请参考以下文章

在移动设备中打开时将链接转换为幻灯片过渡

从 Documents 目录在 UIWebview 中打开时,ios-css 和 js 无法在 html 文件中链接

.NEW MVC 在传递参数并在新选项卡中打开时忽略弹出窗口的大小

如何处理后退按钮android以退出应用程序并在首页中打开时关闭本机导航侧菜单

当我的网站在多个窗口中打开时,在实时事件中打开 window.open(使用 socket.io)

从应用内打开时,阻止 Firebase 动态链接重定向到浏览器