3

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

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

4

1 回答 1

7

这是我能想到的最好的,但它只在 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'
于 2012-07-09T16:01:06.543 回答