¿Hacer un enlace de afiliado a la tienda de iTunes sin redirects?

Apple explicó en " Lanzamiento de App Store desde una aplicación de iPhone " cómo se puede hacer un enlace de afiliado a la tienda de aplicaciones y manejar la networkingirección en segundo plano para que no moleste al usuario. Pero sería mejor no tener la networkingirección en absoluto. Parece recordar haber visto una forma de hacerlo, pero ahora no puedo encontrarlo en ninguna parte.

¿Es posible hacer un enlace de afiliado desde una aplicación de iOS a la tienda de aplicaciones sin ningún tipo de networkingirección?

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

EDIT 2: Me estoy acercando. Tengo este enlace, que tomé directamente de la página de "enlaces de text" de linkshare. Al usar el truco de k1th a continuación, funciona sin ninguna networkingirección en el iPad, pero aún tiene una networkingirección en un iPod touch [y presumiblemente iPhone]. Especulo que la networkingirección puede ser pasar de las mejores aplicaciones de iPad a las mejores aplicaciones de iPhone, pero no lo sé con certeza.

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

Supongo que la razón por la que no quieres networkingirecciones es para

  • evitar que el browser Safari aparezca
  • evite la networkingirección dentro de la aplicación App Store en sí

Preferiría la solución de K1th, pero en su defecto (supongo que podría fallar en el punto 2), supongo que el problema es que el primer enlace de it no es el "final". Una solución sería simplemente codificar el URL (o proporcionarlo de alguna otra manera):

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

Una solución más limpia sería leer la ID de la aplicación en el enlace de itms en el request.URL y formatear una nueva URL usando el patrón que lo llevará directamente a su aplicación.

Sí, puede tener barras en los parameters (eso es porque es una barra después del signo de interrogación que comienza en la parte del parámetro de la URL.

Con respecto a omitir Mobile Safari para procesar los enlaces de afiliados:

Puede configurar una UIWebView oculta para manejar la networkingirección o hacer todo eso en el sistema de carga de URL usted mismo. Esto es con un WebView oculto:

 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 shanetworkingApplication] canOpenURL:request.URL]) { [[UIApplication shanetworkingApplication] openURL:request.URL]; return NO; } return YES; // go on networkingirecting } 

testWebView debe ser una instancia var y el controller de vista debe ser un <UIWebViewDelegate> . También debe configurar delegado de vista web en cualquier lugar (por ejemplo, en -dealloc )

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

Y por 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 networkingirects occur // "iTunesURL" is an NSURL property in your class declaration - (NSURLRequest *)connection:(NSURLConnection *)connection willSendRequest:(NSURLRequest *)request networkingirectResponse:(NSURLResponse *)response { self.iTunesURL = [response URL]; return request; } // No more networkingirects; use the last URL saved - (void)connectionDidFinishLoading:(NSURLConnection *)connection { [[UIApplication shanetworkingApplication] openURL:self.iTunesURL]; } 

Encontré este documento y creo que me está dando la respuesta. Siempre me cuesta mucho descifrar estas cosas, pero creo que dice que lo que hago es comenzar con un enlace básico:

 http://itunes.apple.com 

luego agregue un Id. de socio de 30, más mi token de afiliado de enlace compartido, que creo que es

 sf2bW7QX/qU 

para terminar con lo siguiente:

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

Obtuve lo que creo que es mi ID siguiendo las instrucciones en el Apple doc, que básicamente dicen que tomará el parámetro id de un enlace de enlace compartido aleatorio. El enlace que utilicé con 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 sobre todo el asunto. ¿Puede mi token de afiliado de enlace compartido realmente tener una barra en él?

Esto responde a su pregunta: http://www.apple.com/itunes/affiliates/resources/documentation/linking-to-the-itunes-music-store.html#apps

Por cierto, encuentro que todo este progtwig de afiliados es muy complicado. Lo busqué y no creo que valga la pena la comisión del 5%.