2012-05-02 7 views
1

私はしばらくの間、私のアプリでLinkshareリンクを使用してきました。それはうまく動作します。 リダイレクトを吸収して最後のURLを呼び出すというAppleの提案を実装しました。InsideアプリケーションからGeoRiot Affiliate Linkを開く?

お探しの方はHERE IT ISです。

私はこれを呼び出すメソッドにUIButtonをリンクしている://クリック:リンクはHTTP "@以下の値(私のリンクシェアリンク)

とNSStringのである

[self openReferralURL:[NSURL URLWithString:link]]; 

.linksynergy.com/FSビン/ STAT?ID = Jexmk6JU * OU & offerid = 146261 &タイプ= 3 &サブID = 0 & tmpid = 1826 & RD_PARM1 = HTTP%253A%252F%252Fitunes.apple.com%252FWebObjects%252FMZStore .woa%252Fwa%252FviewSoftwa

% 253Fid%253D353970672%2526partnerId%253D30" 再これが正常に動作します。ボタンをタップすると、まずSafariを開くことなくApp Store Appを起動します。

しかし、私は下のGeoRiotリンクへのリンクを変更すると、最初にSafariを開き、次にApp Storeを開くだけです。なぜそれがそれをしているのか、私は考えられません。

http://target.georiot.com/Proxy.ashx?grid=5700 & ID = Jexmk6JU * OU & offerid = 146261 &タイプ= 3 &サブID = 0 & tmpid = 1826 & RD_PARM1 = "@ HTTP%253A%252F%252Fitunes.apple.com%252FWebObjects%252FMZStore.woa%252Fwa%252FviewSoftware%253Fid%253D353970672%2526partnerId%253D30"

誰でも助けることができますか?地雷との比較のために地域ターゲットのリンクを共有できますか? とにかく、1つのUIWebviewがGeotargetリンクを持つWebページを開き、その がうまくいきます(つまり、App Store Appを直接開きます)。

私は今考えていません。私はこの問題がGeoRiotリンクにあるかもしれないと思っていますが、私は なぜそれがうまく動作しないか、Linkshareリンクでうまくいきます。

+0

この場合、私はそれが嫌です。この質問を投稿した後、私はそれを解決しました。 – GeneCode

+0

どうすれば教えてもらえますか?私は興味があります... – Andrea

+0

確かにAndrea、ソリューションのために私の答えを見てください。 – GeneCode

答えて

1

私はこれらの日の質問をし、彼らに多くのことを答えてきたが、ここに行くアンドレアのために、:

をgeoriotのリンクを使用している人のために、これらのメソッド/関数は、うまく 動作する代わりに、 Appleサンプルコード。

[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短縮ツールを使用する必要がありますが、いずれかの方法は、それは大丈夫に動作します:

// 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; 
    } 

} 

して使用するだけ呼び出します。

+0

ありがとう!また、Apple Q&Aのオリジナルコードは私にとってうまく機能します。 ARC互換にするためにちょっとした変更を加えました... – Andrea

0

あなたはitun​​es 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; 
    } 
} 

関連する問題