测试任何应用程序是否可以在iOS上的移动Safari中处理url方案

时间:2012-05-16 14:52:10

标签: ios mobile url-scheme

有没有办法测试iOS是否可以处理自定义URL方案?我有一个应用程序注册自定义URL方案,以便能够从移动safari中的超链接打开应用程序。但是,我想告诉用户如果他们没有安装它,他们需要去appstore下载应用程序。

是否有一种聪明的方法来测试URL并在失败时捕获它并告知失败的原因?

1 个答案:

答案 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'