我有一个应用程序,它将在UIWebView中显示网页。它显示的页面可能包含App Store上其他iPhone应用程序的链接。
在桌面计算机上的普通浏览器中,单击这些App Store链接会带我浏览一些URL重定向,最终打开iTunes并转到该应用页面。
有没有办法确保在我的UIWebView中点击App Store链接时,iPhone上的App Store应用程序会打开并显示应用程序?
我在测试中看到的是,有几种类型的链接可以导致App Store页面,其中包括:
当我在桌面浏览器中打开任何这些链接时,它们将起作用并最终打开iTunes。 当我从iPhone中打开任何这些链接时,UIWebView会经历多次重定向,最终会发生以下两种情况之一:
我唯一能够让App Store应用程序打开的方法是使用应用程序的直接iTunes链接,无需任何推荐或重定向。
显然,对于推介或联盟链接,我不想删除引荐ID或联属会员ID。如果是他们点击的链接,我不应该剥夺他们的推荐。
所以任何帮助都会非常感激。
感谢。
答案 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之外,我认为redirectResponse
为nil
时应该有这种情况。
我花了一些时间来弄清楚出了什么问题。
// 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];