【问题标题】:Error launching native application from web app - iOS - URL can't be shown从 Web 应用程序启动本机应用程序时出错 - iOS - 无法显示 URL
【发布时间】:2012-02-11 19:29:06
【问题描述】:
我在尝试从我的网络应用程序(apple-mobile-web-app-capable)调用我的本机 iOS 应用程序时遇到了一些麻烦。每当我在 Safari 中按下按钮以使用自定义 url 方案打开我的应用程序时,效果都很好。
但是,当我将其添加到主屏幕时,我遇到了错误:无法显示 URL。重定向到 http 或 https 工作正常,但如果我调用 mysupercustomurlscheme:// 我会收到上面的错误消息。
我尝试通过 document.location.href、window.location 等打开它,但似乎没有任何效果,而且我已经没有什么想法了。
如果有人有任何想法,我将不胜感激。
提前致谢!
【问题讨论】:
标签:
iphone
ios
url-scheme
【解决方案1】:
好的,这是一种有点笨拙的方法,但它确实有效,并且可能会帮助一些试图实现相同目标的可怜人。
首先,创建一个简单的 HTML 链接,显然,常规 HTML 链接在 Mobile Safari 中打开,而不是在 Web 应用程序的全屏视图中打开。
链接
在redirect.html 中,您只需使用一些简单的javascript 重定向用户。
window.location = "mysupercustomurlscheme://"
就是这样!这当然不是最好的方法,但它“相当”无缝。至少我是这么想的,如果您有任何其他建议,请告诉我。
希望这对某人有所帮助!
【解决方案2】:
只是想发布一个 Tobias 引用的示例。您需要在您的服务器上托管并链接到电子邮件、社交媒体等。只需替换为您的应用的 URI 和 您的 App Store 链接。请注意,iframe 适用于更多浏览器。
<!DOCTYPE html>
<html>
<body>
<script type="text/javascript">
window.onload = function() {
// Deep link to your app goes here
document.getElementById("l").src = "my_app://";
setTimeout(function() {
// Link to the App Store should go here -- only fires if deep link fails
window.location = "https://itunes.apple.com/us/app/my.app/id123456789?ls=1&mt=8";
}, 500);
};
</script>
<iframe id="l" width="1" height="1" style="visibility:hidden"></iframe>
</body>
</html>
因此,如果用户安装了您的应用程序,则带有 URI 的链接将成功,并且您将存在浏览器,然后才能触发重定向到 App Store 的脚本。如果用户没有您的应用程序,则重定向成功(在简短的丑陋错误消息之后)。我是Branch 的开发人员,我们使用它,所以请随时与实施中的问题联系。