我有一个网页,我有Button打开应用程序(如果已安装)或指向App Store,如果没有安装应用程序.如果安装了App,它都可以工作(我打电话给"MYAPP://").但是,如果未安装应用程序,Safari会显示错误消息"无法打开URL",就是这样.有没有办法从JScript中禁用该消息,或者是否有其他方法可以从JScript中找到安装了应用程序(而不是点击应用程序URL)?
致MODERATOR:我看到有人问过类似的问题,而主持人错误地将其标记为重复.请理解该问题具体是关于从浏览器中执行此操作.
在这里找到了一些合适的解
顺便说一句,如果有人对如何为Android做同样的事情感兴趣,这里是代码.我们正在使用Dojo库:
dojo.io.iframe.send({
url: "yourApp://foo/bar",
load: function(resp) {
// nothing to do since it will automagically open App
},
error: function () {
window.location = "go to Android market";
}
});
Run Code Online (Sandbox Code Playgroud)
st.*_*ick 14
在分支机构,我们使用下面代码的形式 - 请注意,iframe适用于更多浏览器.只需在您的应用的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>
Run Code Online (Sandbox Code Playgroud)
如果其他人有更好的解决方案来检测URI方案调用是否实际失败,请发布!我没见过一个,我花了很多时间看.所有现有解决方案仅依赖于仍在页面上的用户和setTimeout触发.
我认为您仍然可以使用应用程序网址作为测试。尝试将它包裹成一个try...catch块,
try {
//run code that normally breaks the script or throws error
}
catch(e) {
//do nothing
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
26639 次 |
| 最近记录: |