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

Joh*_*erg 3 mobile url-scheme ios

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

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

col*_*lin 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页面,他们将被无缝地引导到应用程序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'
Run Code Online (Sandbox Code Playgroud)