可以在iOS中处理您自己的http URL方案吗?


71

iOS上的iTunes,App Store和YouTube明确注册了http:// ... URL方案以打开其应用程序。

任何人都可以做到这一点,而不仅仅是您自己的协议?

我要这样做的原因是我正在为节日制作应用程序。我想“拦截”到网站上特定页面的链接,并启动该应用程序(如果已安装)。

到目前为止,我还没有很多运气

Answers:


61

您可以对“ http://” URL(以及我认为Apple和Spotify所做的)执行此操作的方法是:

  1. 像其他答案一样注册一个自定义URL方案。

  2. 设置您的HTTP URL指向真实的网页。

  3. 如果在iOS上,请在该页面上放置一个脚本以重定向到您的自定义URL。

例如,这是一个示例页面,根据您是在网络上还是在iOS设备上,它将带​​您进入特定用户的Twitter应用程序或Twitter网站:

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>Twitter</title>
</head>
<body>
    <script type="text/javascript">
        var username = document.location.search.substr(1);
        document.location.replace(
            "standalone" in window.navigator ?
            'twitter:@'+username :              // iOS
            'http://twitter.com/'+username);    // others
    </script>
</body>
</html>

在这里尝试:http : //bl.ocks.org/d/3153819/?mckamey


1
是的,那就是我现在正在做的。尽管它不直接进入Safari就直接进入应用程序商店,但不完全是App Store的操作方式。
巴斯威尔,2012年

27
如果未安装您的应用程序怎么办?
斯蒂芬·k。

3
在指向自定义方案的页面上也可以使用隐藏的iFrame。如果失败,则没人注意到。如果成功,则它将控制权从页面转移到应用程序。
mckamey

1
@mckamey是的,现在我认为苹果的方法更好。用户期望浏览器以http网址打开,iOS Safari浏览器具有智能横幅,允许用户在安装了应用后切换到应用。另一方面,如果允许使用http作为应用程序URL,则第三方应用程序可以劫持一个官方网站,至少可以说这是一个安全漏洞。
NeoWang 2013年

9
@NeoWang苹果的方法并不更好。Android允许定义方案,主机,路径和端口,但我还没有听说过任何问题。始终允许用户选择他们要使用哪个打开URL的应用程序,因此在用户不知道的情况下不会发生劫持。此外,在Android中,如果用户不希望打开该应用,则可以保证浏览器能够打开该应用,从而使动态性比iOS高得多。
2015年

46

iOS 9支持通用链接,该链接使iOS可以基于标准http://URL(基于主机名)启动应用,而无需用户通过Safari。

它需要一些Web服务器配置(您需要一个网站),但是一旦设置,已注册的应用程序将打开链接而不是Safari。

对于没有iOS 9的用户,您可以使用智能横幅来简化体验。



2

不可以,您只能注册自定义方案。

而且我也看不到苹果这样做。


笨蛋 苹果当然做到了。自己发送电子邮件(或SMS)以及iTunes商店链接(itunes ....)。在iPhone上的邮件中单击它。将打开App Store,而无需先访问Safari。
巴斯韦尔2010年

不。对于电子邮件,(显然)有mailto:方案,对于sms是sms :,对于iTu​​nes,我认为他们在第一次通话时使用普通的http :,但随后重定向到其他内容(可以完成此操作)透明地显示,因此用户不会看到它)。
Eiko

@HappyFlow不知道您要告诉我什么?
Eiko

这不是意味着您不能实现单击URL时将打开的Web浏览器吗?
diidu

0

这个问题很旧,但是由于几年后我现在来到此页面,几年以后,当寻找相同问题的答案时,我将添加有关如何执行此操作的答案:

使用通用链接。首先在developer.apple.com中启用“关联域”或您的App ID。然后将您的域添加为Xcode中的applink(选择“目标”->“签名和功能”->“相关域”),然后在您的网站上创建一个apple-app-site-association文件。

详细说明在这里

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.