有什么方法可以测试 iOS 是否可以处理自定义 URL 方案?我有一个注册了自定义 url 方案的应用程序,以便能够从移动 safari 中的超链接打开该应用程序。但是,我想告诉用户,如果他们没有安装该应用程序,他们需要去应用商店下载该应用程序。
有没有一种聪明的方法来测试一个 URL 并在它失败时捕获它以及它失败的原因?
有什么方法可以测试 iOS 是否可以处理自定义 URL 方案?我有一个注册了自定义 url 方案的应用程序,以便能够从移动 safari 中的超链接打开该应用程序。但是,我想告诉用户,如果他们没有安装该应用程序,他们需要去应用商店下载该应用程序。
有没有一种聪明的方法来测试一个 URL 并在它失败时捕获它以及它失败的原因?
这是我能想到的最好的,但它只在 iOS 5 中测试过:
如果您在移动 Safari 中的链接是<a href="myapp://path">link text</a>
,请将其更改为:<a href="http://mydomain.com/launchapp?location=path">link text</a>
,然后在/launchapp
页面顶部,放置一个带有所需 URL 的隐藏 iframe:<iframe src="myapp://path" style="display:none"></iframe>
。在页面的正文中,输入您需要前往应用商店下载应用的消息。
如果用户有应用程序:他们将看不到launchapp
页面,他们将被无缝定向到应用程序 url。如果用户没有该应用程序:他们将收到关于“无法加载 URL”的令人讨厌的警报,单击“确定”,然后他们将查看您的“您需要下载该应用程序”页面。
更新- 2013 年 3 月
查看有关相关 SO 答案的评论。显然,如果您的应用尚未安装,您可以使用以下方法无缝重定向到 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'