我已经在我的应用中使用了Linkshare链接一段时间了。它工作正常。 我实施了Apple的建议,以吸收任何重定向并调用最后一个URL。
对于那些寻找它的人,HERE IT IS。
我有一个UIButton链接到一个调用它的方法:
[self openReferralURL:[NSURL URLWithString:link]];
其中link是具有以下值的NSString(我的Linkshare链接)
@“http://click.linksynergy.com/fs-bin/stat?id=Jexmk6JU*OU&offerid=146261&type=3&subid=0&tmpid=1826&RD_PARM1=http%253A%252F %252Fitunes.apple.com%252FWebObjects%252FMZStore.woa%252Fwa%252FviewSoftware%253Fid%253D353970672%2526partnerId%253D30"
这很好用。当我点击按钮时,它会立即启动App Store App,而无需先打开Safari。
但是当我将链接更改为下面的GeoRiot链接时,它首先打开Safari,然后只打开App Store。我想不出为什么会这样做。
@“http://target.georiot.com/Proxy.ashx?grid=5700&id=Jexmk6JU*OU&offerid=146261&type=3&subid=0&tmpid=1826&RD_PARM1=http%253A %252F%252Fitunes.apple.com%252FWebObjects%252FMZStore.woa%252Fwa%252FviewSoftware%253Fid%253D353970672%2526partnerId%253D30"
任何人都可以提供帮助?您可以与我的人分享您的地理位置链接吗? 无论如何,我有1个UIWebview打开一个带有Geotarget链接的网页 工作正常(即直接打开App Store应用程序)。
我现在不在乎。我认为问题可能在于GeoRiot链接,但我有 不知道为什么或我应该做什么,因为使用Linkshare链接它工作正常。
答案 0 :(得分:1)
这些天我一直在问问题并回答很多问题,但对于Andrea来说,这里有:
对于那些使用georiot链接的人来说,这些方法/功能都可以使用 而不是Apple示例代码。
// Process a URL to something iPhone can handle
- (void)openReferralURL:(NSURL *)referralURL
{
NSURLRequest *theRequest=[NSURLRequest requestWithURL:referralURL cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:30.0];
NSURLConnection *conn = [[NSURLConnection alloc] initWithRequest:theRequest delegate:self];
[conn release];
}
// 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) {
NSMutableURLRequest *r = [[request mutableCopy] autorelease]; // original request
[r setURL: [request URL]];
self.iTunesURL = [r URL];
if ([self.iTunesURL.host hasSuffix:@"itunes.apple.com"]) {
[[UIApplication sharedApplication] openURL:self.iTunesURL];
}
return r;
} else {
return request;
}
}
要使用,只需致电:
[self openReferralURL:[NSURL URLWithString:@"http://target.georiot.com/Proxy.ashx?grid=5700&id=Jexmk6JU*OU&offerid=146261&type=3&subid=0&tmpid=1826&RD_PARM1=http%253A%252F%252Fitunes.apple.com%252Fus%252Fapp%252Fiquiksplash-pro-all-in-one%252Fid378458261%253FpartnerId%253D30"]];
也许您还应该使用URL缩短工具来清理长URL乱码,但无论哪种方式都可以正常工作。
答案 1 :(得分:0)
你发现itunes url没问题。
你有http://itunes.apple.com地址,ssl重定向问题怎么样?
因为itunes门户将重定向您https://itunes.apple.com地址。
我还改进了iTunes检查部分的if
分支。
// Process a URL to something iPhone can handle - (void)openReferralURL:(NSURL *)referralURL { NSURLRequest *theRequest=[NSURLRequest requestWithURL:referralURL cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:30.0]; NSURLConnection *conn = [[NSURLConnection alloc] initWithRequest:theRequest delegate:self]; [conn release]; } // 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) { NSMutableURLRequest *r = [[request mutableCopy] autorelease]; // original request [r setURL: [request URL]]; NSURL *iTunesUrl = [r URL]; NSLog(@"Processing affiliate link : %@", iTunesUrl); if ([[iTunesUrl absoluteString] hasPrefix:@"https"] && [iTunesUrl.host hasSuffix:@"itunes.apple.com"]) { [[UIApplication sharedApplication] openURL:iTunesUrl]; } return r; } else { return request; } }