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)
¿Por qué no el botón web? – mydogisbox
@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 –