概述 我有一个具有正确功能的URL方案的应用程序,我想从主屏幕上存储的Web应用程序启动它,但是常规的JavaScript重定向方法似乎不起作用。
详情 我正在尝试创建一个iOS Web应用程序,以便从保存在主屏幕上的链接中打开全屏模式。Web应用程序需要打开一个特定的本地应用程序。我已经为本地应用程序注册了url方案,并验证了它可以正常工作-例如,我可以通过将方案直接输入Safari地址栏来打开本机应用程序。我也可以使用UIApplication
的+openURL:
方法从其他应用程序中打开它。我还希望能够从可以添加到主屏幕的本地Web应用程序中以特定参数打开它。
我想在本地应用程序中使用如下JavaScript:
window.location = "myapp://myparam";
在Web应用程序中使用此代码时,会弹出一个警报,内容为:
"无法打开myWebAppName - 无法打开myWebAppName。错误是“此URL无法显示”"。
在Safari中执行同样的JavaScript代码时,可以正常工作。我使用window.location.replace("myapp://myparam")
得到了相同的结果。
Web应用程序的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和移动Web缺乏经验,我认为我可能只是忽略了一些显而易见的东西。