从Inside App打开GeoRiot会员链接?

时间:2012-05-02 09:58:38

标签: iphone hyperlink affiliate

我已经在我的应用中使用了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链接它工作正常。

2 个答案:

答案 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;
    }
 }