我正在为iPhone创建一个网站,我使用原生应用程序(cliqcliq Quickpick)上传照片。我使用如下的脚本来检查应用程序是否已安装。基本的想法是将用户发送到自定义URL,如果应用程序在那里启动,如果不存在,则应忽略该URL并将用户带到App Store。以下是剧本:
window.launchQuickpic = function() {
var start = new Date();
setTimeout(function() {
if (new Date() - start > 2000) {
return;
}
window.location = 'http://www.cliqcliq.com/quickpic/install/';
}, 1000);
var getParams = [...];
window.location = 'vquickpic://?' + getParams.join('&');
};
如果未安装本机应用程序,我会收到警告框,提示Safari无法识别自定义网址。用户单击“确定”后,它按预期工作。但警报令人烦恼。
我试图用try / catch包围window.location =代码。没有帮助。
答案 0 :(得分:0)
如果我理解正确,你会看到预期的行为。
如果未安装应用程序,则系统不知道应该对以“vquickpic://”开头的URL做什么。这就是您收到错误消息的原因。
我认为你所看到的是你首先将window.location设置为'http://www.cliqcliq.com/quickpic/install/'但在完成加载之前你尝试切换到window.location到'vquickpic://'。这会产生错误,并且当您关闭警报时,webview会继续加载第一个URL。
这里的主要问题是错误来自iPhone OS本身,无法从网页内的javascript访问。如果网页安装了特定的应用程序或者可以执行特定操作,则网页无法询问iPhone。
我认为你能做的最好的事情是告诉用户点击链接会尝试启动本机应用程序(如果已安装),但是如果他们收到错误,他们需要将其解除并点击页面上的其他链接来安装应用程序。
答案 1 :(得分:0)
我还没有这个工作,但我认为这是你应该调查的事情。我相信这会压制这个信息。
window.onerror = function(msg, url, linenumber) { return true; }
我还读过某个地方用户成功做了类似于上面的事情,但是没有返回true,他们会将window.location切换回有效位置,例如'about:blank'。他们在那个实现中使用iframe的地方。
答案 2 :(得分:-1)
或许你可以试试Opera Mini