【问题标题】:Possible to handle your own http URL schemes in iOS?可以在 iOS 中处理您自己的 http URL 方案吗?
【发布时间】:2011-05-23 04:26:07
【问题描述】:

iOS 上的 iTunes、App Store 和 YouTube 清楚地注册了 http://... URL 方案来打开他们的应用程序。

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

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

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

【问题讨论】:

    标签: ios url-scheme


    【解决方案1】:

    对于“http://”网址(以及我认为 Apple 和 Spotify 所做的),您可以这样做:

    1. 注册自定义 URL 方案 like the other answers have shown

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

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

    例如,这里有一个示例页面,它将带你到特定用户的 Twitter 应用程序或 Twitter 网站,具体取决于你是在网络上还是在你的 iOS 设备上:

    <!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

    【讨论】:

    • 是的,这就是我现在正在做的事情。不完全是 App Store 是如何做到这一点的,因为它直接进入应用商店而无需先进入 Safari。
    • 如果你的应用没有安装怎么办?
    • 也可以在指向自定义方案的页面上使用隐藏的 iFrame。如果它失败了,没有人会注意到任何事情。如果成功,则它将控制权从页面转移到应用程序。
    • @mckamey 是的,现在我认为 Apple 的方式更好。用户希望浏览器以 http url 打开,而 iOS Safari 具有智能横幅,允许用户在安装后切换到应用程序。另一方面,如果允许http作为应用程序的url,那么第三方应用程序可以劫持官方网站,这至少可以说是一个安全漏洞。
    • @NeoWang Apple 的方式并不好。 Android 允许定义方案、主机、路径和端口,我还没有听说有任何问题。始终允许用户选择他们想要打开 url 的应用程序,因此不会在用户不知道的情况下发生劫持。此外,在 Android 中,如果用户不希望应用打开它,则浏览器可以保证能够打开,这比 iOS 更具动态性。
    【解决方案2】:

    iOS 9 支持 Universal Links,它允许 iOS 启动基于标准 http:// URL(基于主机名)的应用程序,而无需用户通过 Safari。

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

    对于没有 iOS 9 的用户,您可以使用Smart Banners 来简化体验。

    【讨论】:

      【解决方案3】:

      不幸的是,我认为你做不到。 您可以注册自己的自定义方案,例如 yourFestival:// 并将来自外部世界(SMS、电子邮件、其他应用程序)的数据传递到您的应用程序。

      我在这里写了一篇关于此的博客文章:Using custom schemes and passing data between iOS apps.

      我希望这会有所帮助。

      【讨论】:

        【解决方案4】:

        不行,你只能注册自定义方案。

        我也看不到苹果这样做......

        【讨论】:

        • 无赖。苹果当然做到了。通过电子邮件(或短信)自己和 iTunes 商店链接 (itunes....)。在 iPhone 上的邮件中单击它。 App Store 打开,无需先进入 Safari。
        • 没有。对于电子邮件,(显然)有 mailto: 方案,对于 sms,它是 sms:,如果是 iTunes,我认为他们在第一次调用时使用普通的 http:,然后重定向到其他东西(可以透明地完成,所以用户不会看到它)。
        • @HappyFlow 不确定你想告诉我什么?
        • 这不是说你不能实现一个在点击 url 时会打开的网络浏览器吗?
        【解决方案5】:

        这个问题很老了,但是自从几年后我现在看到这个页面时,在搜索同一个问题的答案时,我会添加关于现在如何做的答案:

        使用通用链接。首先在 developer.apple.com 中启用“Associated Domains”或您的 App ID。然后在 Xcode 中将您的域添加为 applink(选择 Target->Signing & Capabilities->Associated Domains),然后在您的网站上创建一个 apple-app-site-association 文件。

        详细说明here

        【讨论】:

          猜你喜欢
          • 2014-03-25
          • 2023-03-30
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-07-03
          • 1970-01-01
          • 2011-10-22
          • 1970-01-01
          相关资源
          最近更新 更多