2011-12-18 2 views
6

Apple объяснила в «Launching the App Store from an iPhone application», как можно сделать партнерскую ссылку на магазин приложений и обрабатывать перенаправление в фоновом режиме, чтобы он не раздражал пользователя. Но было бы лучше не иметь перенаправления вообще. Кажется, я помню, как я видел способ сделать это, но теперь я не могу найти его нигде.Сделать партнерскую ссылку на магазин iTunes без перенаправления?

Возможно ли сделать партнерскую ссылку из приложения iOS в магазин приложений без какой-либо переадресации?

EDIT: Чтобы уточнить, я говорю о партнерской ссылке Linkshare.

EDIT 2: Я приближаюсь. У меня есть эта ссылка, которую я сразу же схватил за ссылку «текстовые ссылки» linkshare. При использовании трюка k1th ниже, работает без каких-либо переадресаций на iPad, но все же имеет одну переадресацию на iPod touch [и предположительно iPhone]. Я предполагаю, что перенаправление может состоять в том, чтобы переключиться с лучших приложений iPad на приложения iPhone, но я этого не знаю точно.

http://click.linksynergy.com/fs-bin/click?id=sf2bW7QX/qU&offerid=146261.10005745&type=3&subid=0

ответ

3

Я принимаю это причина, вы не хотите, переадресовывает это

  • избежать браузера Safari от выскакивают
  • Избегайте перенаправления в приложение само App Store

Я бы предпочел решение k1th, но в противном случае (я полагаю, что это может не получиться # 2 выше), я предполагаю, что проблема в том, что первая ссылка itms не является «окончательной». Одним из решений было бы просто жестко закодировать URL-адрес (или предоставить его каким-либо другим способом):

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType { 
    NSURL myAppUrl = .... 
    if ([request.URL.scheme isEqualToString:@"itms"] && 
     [[UIApplication sharedApplication] canOpenURL:myAppURL]) { 
     [[UIApplication sharedApplication] openURL:myAppURL]; 
     return NO; 
    } 

    return YES; // go on redirecting 
} 

уборщик решением было бы прочитать идентификатор приложения от в ITMS ссылку в request.URL и форматировать новый URL используя шаблон, который приведет вас непосредственно к вашему приложению.

0

Я нашел this document, и я думаю, что это дает мне ответ. У меня всегда есть трудное время расшифровать эти вещи, но я думаю, что это говорит, что я делаю, это начать с базовой линией:

http://itunes.apple.com 

затем присоединять PARTNERID 30, плюс мой LinkShare партнерского маркер, который я думаю,

sf2bW7QX/qU 

закончить следующий:

http://itunes.apple.com?partnerId=30&id=sf2bW7QX/qU 

я получил то, что я думаю, что мой идентификатор, следуя инструкции в документе Apple, которые в основном говорят, чтобы захватить идентификатор параметр из случайная ссылка linkshare. Ссылка, используемая для этой цели, была следующей:

<a href="http://click.linksynergy.com/fs-bin/click?id=sf2bW7QX/qU&offerid=146261.431296703&type=2&subid=0"><IMG border=0 src="http://a464.phobos.apple.com/us/r30/Music/b9/7f/91/mzi.kbjyfypr.170x170-75.jpg" ></a><IMG border=0 width=1 height=1 src="http://ad.linksynergy.com/fs-bin/show?id=sf2bW7QX/qU&bids=146261.431296703&type=2&subid=0" > 

Я все еще не уверен в этом. Может ли мой токен присоединения linkshare иметь косую черту?

4

Да, вы можете иметь косую черту в Params (это потому, что это слэш после вопросительного знака, начиная параметр часть URL

Относно пропуская Mobile Safari обрабатывать партнерскую ссылку:.

Вы можете создать скрытый UIWebView для обработки перенаправлять или делать все, что в системе URL загрузки себя Это со скрытым WebView:.

NSURLRequest *r = [NSURLRequest requestWithURL:[NSURL URLWithString:@"http://click.linksynergy.com/fs-bin/click?id=sf2bW7QX/qU&offerid=146261.431296703&type=2&subid=0"]]; 

testWebView = [[UIWebView alloc] initWithFrame:CGRectMake(0, 0, 10, 10)]; 
testWebView.hidden = YES; 
testWebView.delegate = self; 
[testWebView loadRequest:r]; 

делегата:

#pragma mark - UIWebViewDelegate 

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType { 

    if ([request.URL.scheme isEqualToString:@"itms"] && 
     [[UIApplication sharedApplication] canOpenURL:request.URL]) { 
     [[UIApplication sharedApplication] openURL:request.URL]; 
     return NO; 
    } 

    return YES; // go on redirecting 
} 

testWebView должны быть экземпляр варом и сам контроллер представления должно быть <UIWebViewDelegate>. Вам также нужно установить делегат webview на нуль где-нибудь (например,в -dealloc)

3

Существует гораздо более чистое решение непосредственно от компании Apple здесь: https://developer.apple.com/library/ios/#qa/qa1629/_index.html

И для краткости здесь код с этой страницы:

// Process a LinkShare/TradeDoubler/DGM URL to something iPhone can handle 
- (void)openReferralURL:(NSURL *)referralURL { 
    NSURLConnection *conn = [[NSURLConnection alloc] initWithRequest:[NSURLRequest requestWithURL:referralURL] delegate:self startImmediately:YES]; 
    [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 { 
    self.iTunesURL = [response URL]; 
    return request; 
} 

// No more redirects; use the last URL saved 
- (void)connectionDidFinishLoading:(NSURLConnection *)connection { 
    [[UIApplication sharedApplication] openURL:self.iTunesURL]; 
} 
+0

Это скрывает перенаправление, что является улучшением. Но он все еще там, и результат ожидания уменьшается, но не устраняется. –

Смежные вопросы