2011-12-18 5 views
6

Apple ha spiegato in "Launching the App Store from an iPhone application" come si può creare un collegamento affiliato all'app store e gestire il reindirizzamento in background in modo che non infastidisca l'utente. Ma sarebbe ancora meglio non avere il reindirizzamento. Mi sembra di ricordare di aver visto un modo per farlo, ma ora non riesco a trovarlo da nessuna parte.Crea un link affiliato a iTunes Store senza reindirizzamenti?

È possibile creare un collegamento di affiliazione da un'app per iOS all'app store senza alcun reindirizzamento?

EDIT: Per chiarire, sto parlando di un link di affiliazione di Linkshare.

EDIT 2: Mi sto avvicinando. Ho questo link, che ho afferrato direttamente dalla pagina "link testuali" di linkhare. Quando si utilizza il trucco di k1th in basso, funziona senza alcun reindirizzamento sull'iPad, ma ha ancora un reindirizzamento su un iPod touch [e presumibilmente iPhone]. Immagino che il reindirizzamento potrebbe essere quello di passare dalle migliori app per iPad alle migliori app per iPhone, ma non lo so per certo.

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

risposta

3

prendo la ragione per cui non si vuole redirect è quello di

  • evitare il browser Safari da popping up
  • evitare di reindirizzamento all'interno della app su App Store per sé

Preferirei la soluzione di k1th, ma non riuscendoci (suppongo che potrebbe fallire n. 2 sopra), presumo che il problema sia che il primo link itms non è quello "finale". Una soluzione potrebbe essere semplicemente codificare l'URL (o fornire esso con altri mezzi):

- (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 
} 

una soluzione più pulita sarebbe quella di leggere l'ID applicazione al largo delle itms collegamento nel request.URL e formattare un nuovo URL utilizzando il modello che ti porterà direttamente alla tua app.

0

ho trovato this document e penso che mi sta dando la risposta. Ho sempre un momento difficile decifrare queste cose, ma penso che dice che quello che faccio è iniziare con un collegamento di base:

http://itunes.apple.com 

quindi aggiungere un PARTNERID di 30, più il mio gettone LinkShare affiliato, che credo sia

sf2bW7QX/qU 

per finire con il seguente:

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

ho ottenuto quello che penso è il mio id seguendo le istruzioni riportate nel documento di Apple, che sostanzialmente dicono di afferrare il parametro id f rom un collegamento a linkhare casuale. Il link che ho usato per lo scopo era questo:

<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" > 

Sono ancora abbastanza insicuro sul tutto. Il mio token di affiliazione a linkhare può davvero avere un taglio?

4

Sì, si può avere barre nei params (che è perché è una barra dopo il punto interrogativo di iniziare la parte di parametro dell'URL

Per quanto riguarda il salto Safari Mobile per elaborare i link di affiliazione:.

è possibile impostare un UIWebView nascosta per gestire il reindirizzamento o fare tutto ciò che nel sistema di URL di carico da soli Questo è con un WebView nascosta:.

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]; 

delegato:

#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 deve corrispondere a un var istanza e il controller della vista stessa deve essere un <UIWebViewDelegate>. È inoltre necessario impostare il delegato della webview su zero da qualche parte (ad es.in -dealloc)

3

C'è una soluzione molto più pulito direttamente da Apple qui: https://developer.apple.com/library/ios/#qa/qa1629/_index.html

E per brevità, qui è il codice da quella pagina:

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

Nasconde il reindirizzamento, che è un miglioramento. Ma è ancora lì, e l'attesa risultante è ridotta, ma non eliminata. –