从浏览器以编程方式打开应用程序中的通用链接

问题描述 投票:0回答:1

是否可以通过通用链接以编程方式在 iOS 上打开移动应用程序,还是只能通过用户点击来打开?

我猜出于安全原因,这可能是不允许的。

流程:

  1. 用户安装了应用程序“myapp”。我有一个按钮/网址 用户收到的电子邮件。
  2. 用户单击按钮/网址将他们带到网页 https://action.mypage.app。 (网页网址实际上包裹在 发送网格网址)。
  3. https://action.mypage.app Angular 应用程序会记录以下操作: 用户已获取,然后打开另一个 URL,该 URL 是通用链接 它将在“myapp”中打开,例如https://open.myapp.app

结果: 我的测试设备上有多种结果。

  1. 不是打开移动应用程序,而是在移动浏览器中打开等效网页https://open.myapp.app。 顶部有横幅“在 myapp 应用程序中打开”,并带有应用程序图标。

  2. 与一相同,但根本没有获得横幅。

  3. 请注意,对于我使用的某些 iOS 设备,它不会在浏览器中打开,而是会弹出一条消息“在“myapp”中打开此页面?”取消打开。 如果我单击“打开”,它将在应用程序中打开,如果我单击“取消”,它将在浏览器中打开,如上所述。

期望的结果:

打开的是移动应用程序而不是网页。

使用“用户点击”:

如果我有一个网页有一个打开网址的按钮https://open.myapp.app,它就可以正常工作。 当用户单击按钮时,这将毫无问题地打开移动应用程序。

其他: 我确实注意到这篇文章,但是子域不一样。网页位于 https://action.mypage.app,通用网址为 https://open.myapp.app:

当用户在 Safari 中浏览您的网站并点击通用链接时 在同一域中,系统在 Safari 中打开该链接,尊重 用户最有可能在浏览器中继续使用的意图。如果 用户点击不同域中的通用链接,系统打开 您的应用程序中的链接。

更新:

我目前通过从电子邮件按钮/url 到 https://open.myapp.app 的直接链接来实现此功能,并且按预期在应用程序中打开。 我已经删除了 Sendgrid 跟踪和我正在执行的任何自定义操作日志记录。我想如果我想记录操作,我需要在移动应用程序打开时执行此操作。

ios safari ios-universal-links
1个回答
0
投票

Apple 在某些情况下限制通用链接:

  • 如果将链接粘贴到浏览器中,通用链接将不起作用 网址字段。
  • 通用链接不适用于用户驱动的元素单击同一域。例如,如果有 是 google.com 上的通用链接,指向不同的通用 google.com 上的链接,它不会打开该应用程序。
  • 通用链接不能 通过 Javascript 触发(在 window.onload 中或通过 .click() 调用 在元素上)除非它是用户操作的一部分。

https://help.branch.io/developers-hub/docs/ios-universal-links#appsbrowsers-that-support-universal-links

我想做的是添加一个 额外域 来托管按钮,并使用

window.location.href
而不是
a href

© www.soinside.com 2019 - 2024. All rights reserved.