2011-12-18 12 views
6

Apple ha explicado en "Launching the App Store from an iPhone application" cómo se puede hacer un enlace de afiliado a la tienda de aplicaciones y manejar el redireccionamiento en segundo plano para que no moleste al usuario. Pero sería aún mejor no tener el redireccionamiento en absoluto. Me parece recordar haber visto una forma de hacerlo, pero ahora no puedo encontrarlo en ningún lado.Hacer un enlace de afiliado a la tienda de iTunes sin redirecciones?

¿Es posible hacer un enlace de afiliado desde una aplicación de iOS a la tienda de aplicaciones sin ninguna redirección?

EDITAR: Para aclarar, estoy hablando de un enlace afiliado de Linkshare.

EDIT 2: Me estoy acercando. Tengo este enlace, que agarré directamente de la página de "enlaces de texto" de linkshare. Al usar el truco de k1th a continuación, funciona sin redirecciones en el iPad, pero todavía tiene una redirección en un iPod touch [y presumiblemente iPhone]. Yo especulo que la redirección puede ser cambiar de las mejores aplicaciones de iPad a las principales aplicaciones de iPhone, pero no estoy seguro.

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

Respuesta

3

lo tomo la razón por la que no quiere redirecciones es

  • evitar el navegador Safari de aparecer
  • redirección evitar dentro de la propia aplicación App Store

Preferiría la solución de k1th, pero si eso falla (supongo que podría fallar el número 2 anterior), supongo que el problema es que el primer enlace de itms no es el "final". Una solución sería simplemente difícil que el código de la URL (o proporcionar por algún otro medio):

- (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 solución más limpia sería leer el ID de aplicación de las itms eslabón de la request.URL y dar formato a una nueva URL usando el patrón que lo llevará directamente a su aplicación.

0

He encontrado this document y creo que me está dando la respuesta. Siempre tengo un tiempo difícil descifrar estas cosas, pero creo que dice que lo que hago es empezar con un enlace básico:

http://itunes.apple.com 

continuación, añadir una PARTNERID de 30, además de mi token de afiliado LinkShare, que creo que es

sf2bW7QX/qU 

para terminar con lo siguiente:

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

tengo lo que creo que es mi identificación, siguiendo las instrucciones del documento de Apple, que básicamente dicen para agarrar el parámetro id f rom un enlace de linkShare al azar. El enlace que utilicé para este propósito fue el siguiente:

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

Todavía estoy bastante inseguro acerca de todo. ¿Puede mi token de afiliado de Linkshare tener una barra en él?

4

Sí, es posible que tenga barras en los parametros (eso es porque es una barra después el signo de interrogación a partir de la parte de parámetros de la URL

En cuanto a saltarse Mobile Safari para procesar los enlaces de afiliados:.

Usted puede configurar una UIWebView oculto para controlar la redirección o hacer todo lo que en el sistema de dirección URL de carga a sí mismo Esta es una vista web oculta:.

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

el delegado:

#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 necesidades para ser un var instancia y el controlador de vista en sí necesita ser un <UIWebViewDelegate>. También debe configurar el delegado de la vista web como nulo en algún lugar (p.en -dealloc)

3

Hay una solución mucho más limpia directamente de Apple aquí: https://developer.apple.com/library/ios/#qa/qa1629/_index.html

Y por razones de brevedad, aquí está el código de esa página:

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

Eso oculta la redirección, que es una mejora. Pero todavía está allí, y la espera resultante se reduce, pero no se elimina. –

Cuestiones relacionadas