ChatGPT解决这个技术问题 Extra ChatGPT

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

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

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

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

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


C
Community

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

注册一个自定义 URL 方案,如其他答案所示。将您的 HTTP URL 设置为指向真实网页。如果在 iOS 上,则在该页面上放置一个脚本以重定向到您的自定义 URL。

例如,下面是一个示例页面,它将带您到特定用户的 Twitter 应用程序或 Twitter 网站,具体取决于您是在 Web 上还是在您的 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 更具动态性。
M
Marcus Adams

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

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

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


M
Marius Ciocanel

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

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

我希望这有帮助。


E
Eiko

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

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


真可惜。苹果当然做到了。通过电子邮件(或短信)您自己和 iTunes 商店链接 (itunes....)。在 iPhone 上的邮件中单击它。 App Store 打开,无需先进入 Safari。
不。对于电子邮件,(显然)有mailto:方案,对于sms,它是sms:,如果是iTunes,我认为他们在第一次通话时使用普通的http:,但然后重定向到其他东西(可以这样做透明,因此用户不会看到它)。
@HappyFlow 不确定你想告诉我什么?
这是否意味着您无法实现在单击 url 时会打开的 Web 浏览器?
d
diidu

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

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

详细说明here