【发布时间】:2012-05-01 11:54:26
【问题描述】:
总结 我想从存储在主屏幕上的网络应用程序启动一个具有正确运行的 URL 方案的应用程序,但正常的 JavaScript 重定向方法似乎不起作用.
详细信息 我正在尝试创建一个 iOS 网络应用程序,它可以通过保存在主屏幕上的链接以全屏模式打开。 Web 应用需要打开特定的原生应用。我已经为本机应用程序注册了 url 方案,并验证了它是否正常工作 - 例如,我可以通过直接在我的 Safari 地址栏中键入方案来打开本机应用程序。我也可以使用UIApplication 的+openURL: 方法从其他应用程序中打开它。我还想使用可以添加到主屏幕的本机网络应用程序的某些参数打开它。
我正在尝试在原生应用程序中使用 JavaScript:
window.location = "myapp://myparam";
在网络应用程序中使用此代码时,我收到一条警报:
“无法打开 myWebAppName - myWebAppName 无法打开。 错误是“无法显示此 URL”。
在 Safari 中执行时,同样的 javascript 可以正常工作。我使用window.location.replace("myapp://myparam") 得到了相同的结果。
网页应用的 html 是:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<html lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>untitled</title>
<meta name="generator" content="TextMate http://macromates.com/">
<meta name="author" content="Carl Veazey">
<!-- Date: 2012-04-19 -->
<meta name="viewport" content="width=device-width; initial-scale=1.0; maximum-scale=1.0; user-scalable=0;" />
<meta name="apple-mobile-web-app-capable" content="yes" />
<meta names="apple-mobile-web-app-status-bar-style" content="black-translucent" />
</head>
<body>
<script type="text/javascript" charset="utf-8">
if (window.navigator.userAgent.indexOf('iPhone') != -1) {
if (window.navigator.standalone == true) {
window.location = "myapp://myparam";
} else {
document.write("please save this to your home screen");
};} else {
alert("Not iPhone!");
document.location.href = 'please-open-from-an-iphone.html';
};
</script>
</body>
</html>
我在这里做错了什么?我对 javascript 和移动网络非常缺乏经验,所以我怀疑我只是遗漏了一些明显的东西。
【问题讨论】:
-
你不能重定向到应用商店链接吗?
-
对不起,你到底是什么意思?比如我可以从我的网络应用打开应用商店吗?编辑:例如,我可以打开本地地图应用程序;我怀疑该方案使用 http 是为什么它有效。不幸的是,这不适用于我的应用程序。
-
所以在 url 栏中输入 myapp://myparam 有效吗?
-
@c0mrade 不会做太多。他正在尝试打开本机应用程序。不在 iTunes 上打开应用程序的页面。如果用户被重定向到 App Store 链接,他们将被进一步定向到 iDevice 上 iTunes 中的应用程序页面......它不会打开应用程序本身。
-
嗯,还以为是参数问题。很奇怪,我之前使用过 window.location 没有任何问题。你试过 window.open(myapp://myparam)
标签: javascript ios mobile-safari