如果安装了应用程序,则重定向到应用程序,否则重定向到App Store。
如果您在电子邮件中链接到一个包含使用您的应用程序的自定义方案的iframe
的网页,iOS将自动重定向到该应用程序的位置。如果应用程序未安装,则不会发生任何操作。这使您可以在已安装应用程序中进行深层链接,或者如果未安装,则重定向到App Store。
例如,如果您已安装了Twitter应用程序,并导航到包含以下标记的网页,则会立即重定向到该应用程序。如果您未安装Twitter应用程序,则会看到文本“Twitter应用程序未安装”。
iOS Automatic Deep Linking The Twitter App is not installed
下面是一个更详细的示例,如果应用程序未安装,则重定向到App Store:
iOS Automatic Deep Linking Website content.
这是我们在Syfy.com上的做法。访问syfy.com/live,如果您已安装该应用程序,您将自动进入该应用程序。
这是问题的正确答案。我没有在页面本身中检测iOS,而是在get请求中检查用户代理标头,并提供重定向页面或要求用户在iOS设备上打开链接的页面。出于好奇,您是怎么知道iframe会以这种方式工作的?我在iframe的HTML文档中找不到相关信息。
谢谢!我不知道它会这样工作,我只是不断尝试不同的方法,直到它成功为止! 🙂
那真是太好了!不幸的是,这在iOS 8以后似乎不再起作用。您是否发现在iOS 8及更高版本中仍然有效?似乎与苹果阻止自动重定向到App Store有关。
因为直接从SVN存储库下载代码而被点踩。存储库所有者可以随时向存储库推送加密货币挖矿器。
问题出现的原因是无法直接检查应用是否安装,但是可以通过一个巧妙的解决方法来实现。具体思路如下:
1. 第一次打开应用时,从应用内部打开手机Safari浏览器,跳转到预定的服务器URL。
2. 在该URL上设置一个cookie,比如appInstalled,用于标记用户的Safari浏览器。
3. 然后通过应用注册的scheme将用户重新跳转回应用(类似Facebook的SSO)。
4. 所有的邮箱链接指向网站,在网站上检查浏览器是否为移动版Safari,并且检查是否存在appInstalled的cookie。
5. 如果浏览器不是移动版Safari或者不存在appInstalled的cookie,则重定向到App Store或者停留在网页上。
6. 如果满足第4步的条件,将用户重定向到应用,使用注册的scheme。
7. 如果应用被用户删除,自定义URL scheme无法打开应用,就会有一个备用的重定向到App Store。
最后两个步骤在这个Stack Overflow帖子中有详细解释。
需要注意的是,在第一步中,尝试使用应用内部的WebView替代Safari浏览器是行不通的,因为它们不共享同一个cookie存储。
不幸的是,这需要更新iOS客户端才能实现。
当用户从设置中清除网站数据时,这种方法将无法正常工作。
没有人说这是一个完美的解决方案,但在当时这是最好的选择。
现在仍然准确吗?有人知道吗?我看到像BOA和Medium这样的应用程序甚至在不尝试打开Safari的情况下就打开了!