从UIWebView可靠地打开App Store链接

时间:2009-09-21 09:55:02

标签: iphone uiwebview

我有一个应用程序,它将在UIWebView中显示网页。它显示的页面可能包含App Store上其他iPhone应用程序的链接。

在桌面计算机上的普通浏览器中,单击这些App Store链接会带我浏览一些URL重定向,最终打开iTunes并转到该应用页面。

有没有办法确保在我的UIWebView中点击App Store链接时,iPhone上的App Store应用程序会打开并显示应用程序?

我在测试中看到的是,有几种类型的链接可以导致App Store页面,其中包括:

  • phobos链接 - phobos.apple.com/etc等等
  • itunes.com/app/appname links
  • 推荐/会员链接
  • 任何我不知道的

当我在桌面浏览器中打开任何这些链接时,它们将起作用并最终打开iTunes。 当我从iPhone中打开任何这些链接时,UIWebView会经历多次重定向,最终会发生以下两种情况之一:

  • 重定向无法正常工作,最终导致页面无法加载方法调用
  • 重定向工作,打开iTunes应用程序,搜索应用程序名称,然后我收到iTunes发来的消息,说明无法连接到商店。

我唯一能够让App Store应用程序打开的方法是使用应用程序的直接iTunes链接,无需任何推荐或重定向。

显然,对于推介或联盟链接,我不想删除引荐ID或联属会员ID。如果是他们点击的链接,我不应该剥夺他们的推荐。

所以任何帮助都会非常感激。

感谢。

5 个答案:

答案 0 :(得分:13)

我发现Apple的这个Technical Q&A回答了我的问题:

基本要点是:

正确构建的phobos.apple.com链接将直接重定向到App Store应用程序。 itunes.apple.com链接必须转换为phobos链接。 必须使用NSURLConnection遍历推荐/会员链接,最终得到的URL将是可以使用的phobos链接。

感谢您的帮助。

答案 1 :(得分:3)

在我的测试中,我只有phobos.apple.com个链接自动重定向到AppStore(没有任何Safari重定向)。

答案 2 :(得分:2)

除了developer documentation之外,我认为redirectResponsenil时应该有这种情况。 我花了一些时间来弄清楚出了什么问题。

// Save the most recent URL in case multiple redirects occur
// "iTunesURL" is an NSURL property in your class declaration
- (NSURLRequest *)connection:(NSURLConnection *)connection willSendRequest:(NSURLRequest *)request redirectResponse:(NSURLResponse *)response {
    if (response) {
        self.iTunesURL = [response URL];
    }
    else {
        self.iTunesURL = [request URL];
    }

    return request;
}

答案 3 :(得分:1)

如果你还没有在实际设备上测试过,我可以告诉你iPhone模拟器在将这些链接重定向到App Store时出现问题(可能是因为模拟器没有它)。在设备上运行应用程序将在此特定区域中产生不同的行为,因此请确保在那里进行测试。

答案 4 :(得分:1)

我一直在尝试做同样的事情。我想在免费版本中添加指向我应用完整版的链接。我刚刚确认文档中使用的方法有效。仅适用于实际设备。永远不要相信模拟器!

the document中添加内容,并将其称为:

NSString *testLink = @"http://phobos.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=284417350&mt=8";   

self.iTunesLink = [NSURL URLWithString:testLink];

[self openReferralURL:iTunesLink];