2012-03-28 22 views
20

¿Cuál es la forma más confiable actualmente para permitir el intercambio de pinterest desde la aplicación iOS?integración de aplicaciones iOS con pinterest

API de Pinterest todavía no es pública y la única forma sugerida de compartir es su botón web.

+1

¿Por qué no el botón web? – mydogisbox

+1

@mydogisbox botón web es inconveniente para el usuario ya que debe mostrar una vista web adicional y generar algún tipo de página optimizada para dispositivos móviles en su sitio web –

Respuesta

2

A partir del 20 de mayo de 2013, Pinterest lanzó un SDK de iOS para fijar contenido.

Consulte their Developers site para obtener más información.

+0

¿Alguien tiene URL para muestrear el código? necesita encontrar más detalles sobre cómo hacerlo – Kiddo

+0

¿Fuiste al enlace en mi publicación? Si hace clic en "iOS SDK", debe encontrar lo que necesita. –

2

Me he visto alto y bajo también. Incluso me puse en contacto con el equipo de Pinterest sobre un SDK. Lo más parecido que he encontrado es un contenedor PHP en github https://github.com/kellan/pinterest.api.php.

No es la mejor solución porque es una API no oficial y es muy probable que se rompa.

11

Hice una integración pinterest en mi aplicación para iPad. Pero, como Pinterest todavía no tiene una API para publicar, utilicé el siguiente método. Simplemente creo programáticamente una página web HTML y agrego un botón Pin it a esa página mediante programación. Luego muestro una Vista web y le permito a los usuarios hacer clic en Pin una vez más. Estos son más pasos explicados.

1) Cree un WebViewController, que tiene un UIWebView. Agregar botón Cerrar, agregar propiedad UIWebViewDelegateProtocol, spinner, htmlString.

2) Genere un HTML programmatically para poner a ese UIWebView, cuando el usuario hace clic en su botón "Pin it" en su aplicación. En este caso, puse en la página HTML diferentes imágenes para diferentes productos.

- (NSString*) generatePinterestHTMLForSKU:(NSString*)sku { 
NSString *description = @"Post your description here"; 

// Generate urls for button and image 
NSString *sUrl = [NSString stringWithFormat:@"http://d30t6wl9ttrlhf.cloudfront.net/media/catalog/product/Heros/%@-1.jpg", sku]; 
NSLog(@"URL:%@", sUrl); 
NSString *protectedUrl = (__bridge NSString *)CFURLCreateStringByAddingPercentEscapes(NULL,(__bridge CFStringRef)sUrl, NULL, (CFStringRef)@"!*'\"();:@&=+$,/?%#[]% ",CFStringConvertNSStringEncodingToEncoding(NSUTF8StringEncoding)); 
NSLog(@"Protected URL:%@", protectedUrl); 
NSString *imageUrl = [NSString stringWithFormat:@"\"%@\"", sUrl]; 
NSString *buttonUrl = [NSString stringWithFormat:@"\"http://pinterest.com/pin/create/button/?url=www.flor.com&media=%@&description=%@\"", protectedUrl, description]; 

NSMutableString *htmlString = [[NSMutableString alloc] initWithCapacity:1000]; 
[htmlString appendFormat:@"<html> <body>"]; 
[htmlString appendFormat:@"<p align=\"center\"><a href=%@ class=\"pin-it-button\" count-layout=\"horizontal\"><img border=\"0\" src=\"http://assets.pinterest.com/images/PinExt.png\" title=\"Pin It\" /></a></p>", buttonUrl]; 
[htmlString appendFormat:@"<p align=\"center\"><img width=\"400px\" height = \"400px\" src=%@></img></p>", imageUrl]; 
[htmlString appendFormat:@"<script type=\"text/javascript\" src=\"//assets.pinterest.com/js/pinit.js\"></script>"]; 
[htmlString appendFormat:@"</body> </html>"]; 
return htmlString; 
} 

Este es un ejemplo de mi método de generación de páginas HTML.

3) Cree un método para llamar cuando el usuario toque su botón "Pin it", que muestra esa vista web con la imagen, que publicará y el botón "Pin it" en el UIWebView. Este es mi ejemplo:

- (void) postToPinterest { 

NSString *htmlString = [self generatePinterestHTMLForSKU:self.flProduct.sku]; 
NSLog(@"Generated HTML String:%@", htmlString); 
WebViewController *webViewController = [[WebViewController alloc] initWithNibName:@"WebViewController" bundle:nil]; 
webViewController.htmlString = htmlString; 
webViewController.showSpinner = YES; 

[[[[UIApplication sharedApplication] keyWindow] rootViewController] presentModalViewController:webViewController animated:YES]; 
} 

4) Coloque el botón "Cerrar" en su WebViewController para cerrarlo. También puede agregar spinners para rastrear la carga de UIWebView.

- (IBAction)closeClicked:(id)sender { 
[self dismissModalViewControllerAnimated:YES]; 

}

- (void)webViewDidStartLoad:(UIWebView *)webView { 
if (showSpinner) { 
    // If we want to show Spinner, we show it everyTime 
    [UIHelper startShowingSpinner:self.webView]; 
} 
else { 
    // If we don't -> we show it only once (some sites annoy with it) 
    if (!spinnerWasShown) { 
     [UIHelper startShowingSpinner:self.webView]; 
     spinnerWasShown = YES; 
    } 
} 
} 

-(void)webViewDidFinishLoad:(UIWebView *)webView { 
    [UIHelper stopShowingSpinner]; 
} 

P. S. Usé el mismo método para agregar el botón +1 de Google Plus a la aplicación del iPad. (No tiene API de publicación también, solo API de solo lectura en este momento)

+1

Su funcionamiento ... muchas gracias. –

+0

Nota para cualquiera que use este código: observe el porcentaje de cadena codificada y la apariencia de creación de cadenas utilizando cadenas de formato, pero simplemente pasando una cadena estática. – Abizern

5

Si solo quieres compartir (es decir, pin en una placa de usuario), puedes usar iphone-URL-Scheme y llamar a la aplicación Pinterest junto con los parámetros url (URL de la página de PIN), medios (URL de la imagen a la clavija) & Descripción (Descripción de la página para ser clavado). Presente un UIAlertView y reenvíyalos a la tienda de aplicaciones para descargar la aplicación oficial de Pinterest si el usuario no la ha instalado.

Referencia: http://wiki.akosma.com/IPhone_URL_Schemes#Pinterest

código para abrir Pinterest applicaiton:

NSURL *url = [NSURL URLWithString:@"pinit12://pinterest.com/pin/create/bookmarklet/?url=URL-OF-THE-PAGE-TO-PIN&media=URL-OF-THE-IMAGE-TO-PIN&description=ENTER-YOUR-DESCRIPTION-FOR-THE-PIN"]; 
if ([[UIApplication sharedApplication] canOpenURL:url]) { 
    [[UIApplication sharedApplication] openURL:url]; 
}else { 
    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Pinterest" message:@"Would you like to download Pinterest Application to share?" delegate:self cancelButtonTitle:@"Cancel" otherButtonTitles:@"Continue", nil]; 
    [alert show]; 
} 

UIAlertViewDelegate Método

- (void)alertView:(UIAlertView *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex { 
    if (buttonIndex == 1){ 
     NSString *stringURL = @"http://itunes.apple.com/us/app/pinterest/id429047995?mt=8"; 
     NSURL *url = [NSURL URLWithString:stringURL]; 
     [[UIApplication sharedApplication] openURL:url]; 
    } 
} 
+2

Intenté este código, pero canOpenUrl siempre devuelve NO, aunque ya instalé Pinterest en mi dispositivo. Creo que tal vez sea porque ya he implementado las funciones de compartir en Facebook, Google +, ... ¿Hay algo que debería agregar al método AppDelegate? (BOOL) aplicación: (UIApplication *) aplicación openURL: (NSURL *) url sourceApplication: (NSString *) sourceApplication annotation: ¿para abrir la aplicación Pinterest? – rosaMerino

+0

Esto ya no funciona en la nueva API. – Jeremie

0

I tri ed para integrar Pinterest con Custom URL Scheme, también descargo la aplicación Pinterest en mi dispositivo, pero no abel para integrarlo.

Y la cuestión es que no quiero usar webView para la integración, así que es posible hacer eso, no encontré ninguna aplicación en la tienda de aplicaciones que tenga integración de pinterest.

También busqué en Google pero, para colmo, Snapguide también eliminó la integración de pinterest de su aplicación.

que utiliza un código web View para fijar la imagen, sin necesidad de abrir el sitio web Pinterest,

NSString *urlStr =[NSString stringWithFormat:@"http://pinterest.com/pin/create/bookmarklet/?url=www.<domainname>.com&media=http://<domainname>.files.com/hello.jpg?w=495&description=hello"]; 

Esto sería fácil, pero con la web View y que no quiero.

Cuestiones relacionadas