有没有办法测试iOS是否可以处理自定义URL方案?我有一个应用程序注册自定义URL方案,以便能够从移动safari中的超链接打开应用程序。但是,我想告诉用户如果他们没有安装它,他们需要去appstore下载应用程序。
是否有一种聪明的方法来测试URL并在失败时捕获它并告知失败的原因?
答案 0 :(得分:7)
这是我能想到的最好的,但它仅在iOS 5中测试过:
如果您在移动版Safari中的链接为<a href="myapp://path">link text</a>
,
将其更改为:<a href="http://mydomain.com/launchapp?location=path">link text</a>
,
然后在/launchapp
页面的顶部,将隐藏的iframe放入所需的网址:<iframe src="myapp://path" style="display:none"></iframe>
。在页面正文中,将您的消息发送到appstore以下载应用程序。
如果用户拥有该应用:
他们将看不到launchapp
页面,它们将被无缝地引导至应用网址。
如果用户没有该应用:
他们会收到关于“无法加载网址”的恶意警报,点击“确定”,然后他们会查看“您需要下载该应用”页面。
更新 - 2013年3月
在相关的SO答案中查看this comment。显然,如果您的应用尚未安装,您可以使用类似(未经测试)的方法无缝重定向到App Store中的应用:
// setup fallback (redirect to App Store)
var start = (new Date()).valueOf();
setTimeout(function() {
var end = (new Date()).valueOf();
// prevent App Store redirect upon returning to safari from myapp
if (end - start > 1000) return;
// get a seamless redirect if you use itms://... instead of http://itunes.com/...
window.location = 'itms://my/app/URI';
}, 25);
// Attempt to load my custom url scheme
window.location = 'myapp://my/path'