【问题标题】:custom url scheme to native app or website本地应用程序或网站的自定义 url 方案
【发布时间】:2011-12-20 05:45:46
【问题描述】:

我想开发一个 url,如果我的应用程序已安装,它将通过应用程序处理。如果它不是 iPhone 或我们的应用程序未安装,我想重定向到 Web url。

基本上和一个应用商店的url工作完全一样。

【问题讨论】:

  • 如果你的应用没有安装,你怎么打开它并重定向到某个网址??
  • 我认为 OP 希望实现自己的协议处理程序
  • 我希望它的行为与应用商店 url 的工作方式完全相同。 itunes.apple.com/app/id468313085?mt=8 将打开应用商店并转发 id(如果在 iPhone 中打开)。如果在网络上打开(未安装 iTunes),它将直接进入网络。我多虑了。我只需要 somedomain.com/thismeanssomething 将 thismeansthing 传递给我的 iPhone 应用程序(如果已安装),否则直接进入网络版本。

标签: iphone


【解决方案1】:

不幸的是,iOS 上的自定义 URL 处理程序不能这样工作。

您可以定义将打开您的应用的自定义 url 方案,但您不能让您的应用成为特定域名的指定处理程序,以便在 Safari 中打开该域会自动启动您的应用。

需要明确的是,scheme 是域名前的位,例如 http:,因此您可以让您的应用成为启动 myapp: 的 url 的处理程序例子。显然,没有真正的 URL 以 myapp: 开头,除了您专门设计用于您的应用程序的 URL - 这就是重点。

很遗憾,这些 URL 仅适用于您的应用,如果未安装您的应用,它们将无法在 Safari 中打开。 iTunes、谷歌地图、Youtube 等都在 iPhone 上以这种方式工作,因为 Apple 已将它们硬编码为特殊情况,但它们不会使这种机制可用于第三方应用程序。

要为您的应用注册自定义方案,请按照以下教程操作:http://iosdevelopertips.com/cocoa/launching-your-own-application-via-a-custom-url-scheme.html

您可以做的是设置一个常规网页,该网页使用 javascript 来检测设备的用户代理,如果它是 iPhone,则使用 document.location = 'myapp: 自动重定向到应用程序的自定义方案 url: ...'。我不确定如果您在未安装应用程序的情况下尝试重定向到自定义 url 方案会发生什么。它可能什么都不做,这对您来说是理想的,或者它可能会引发错误或进入空白页面,在这种情况下,您最好弹出一条消息,例如“单击此处启动应用程序或单击此处以启动应用程序”从应用商店下载”,这似乎是大多数网站所做的。

【讨论】:

    【解决方案2】:

    您必须创建一个具有正常 URL 的正常网站,然后重定向到类似 yourapp://dosomething 的 URL。如果没有应用程序(您的应用程序)处理协议“yourapp://”,则 Web 浏览器(如 Safari)应忽略该 url。

    重定向是例如可以在 php 中使用重定向设置标头:

    <?php
    header('Location: yourapp://dosomething');
    ?>
    

    其他服务器脚本语言也可以。您还应该包括“MobileSafari”和其他浏览器之间的区别,并且就在那里。

    <?php
    
    /* detect Mobile Safari */
    
    $browserAsString = $_SERVER['HTTP_USER_AGENT'];
    
    if (strstr($browserAsString, " AppleWebKit/") && strstr($browserAsString, " Mobile/"))
    {
        header('Location: yourapp://dosomething');
    }
    
    ?>
    

    【讨论】:

      【解决方案3】:

      您可以使用canOpenURL: 方法来检查应用程序是否可以打开给定的 URL 资源。更多关于Apple's Doc

      希望对你有帮助。

      【讨论】:

        猜你喜欢
        • 2013-11-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多