iphone - Integración de aplicaciones iOS con pinterest
objective-c (5)
¿Cuál es la forma más confiable actualmente para permitir el intercambio de interés desde la aplicación iOS?
La API de Pinterest aún no es pública y la única forma sugerida de compartir es su botón web.
A partir del 20 de mayo de 2013, Pinterest ha lanzado un SDK de iOS para fijar contenido.
Echa un vistazo a su sitio de desarrolladores para obtener más información.
He mirado alto y bajo también. Incluso me he contactado con el Equipo de Pinterest por un SDK. Lo más cercano que he encontrado es un contenedor PHP en github https://github.com/kellan/pinterest.api.php .
Sin embargo, no es la mejor solución porque es una API no oficial y lo más probable es que se rompa.
Hice una integración pinterest en mi aplicación iPad. Pero, como Pinterest aún no tiene una API para publicar, usé el siguiente método. Simplemente creo mediante programación 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 permito que el usuario haga clic en Fijar una vez más. Estos son los pasos más explicados.
1) Cree un controlador WebView, que tiene un UIWebView. Agregar botón Cerrar, agregar propiedad UIWebViewDelegateProtocol, spinner, htmlString.
2) Genere un HTML programáticamente para ponerlo en ese UIWebView, cuando el usuario haga clic en el botón "Fijar" en su aplicación. En este caso pongo a 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 el botón "Fijar", que muestra esa vista web con la imagen, que publicará y el botón "Fijar" 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) Ponga un botón "Cerrar" en su control WebView para cerrarla. También puede agregar hilanderos 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];
}
PS. Utilicé el mismo método para agregar el botón +1 de Google Plus a la aplicación de iPad. (No tiene API de publicación también, solo API de solo lectura en este momento)
Intenté integrar Pinterest con un esquema de URL personalizado, también descargué la aplicación de Pinterest en mi dispositivo, pero no pude integrarme con ella.
Y la cosa es que no quiero usar webView para la integración, así que es posible hacerlo, no encontré ninguna aplicación en la tienda de aplicaciones que tenga integración pinterest.
También hice Google, pero lo que es peor, Snapguide también elimina la integración pinterest de su aplicación.
Utilicé un código webView para fijar la imagen, sin necesidad de abrir el sitio web completo de 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 webView y eso no lo quiero.
Si solo desea compartir (es decir, fijar en un tablero de usuarios), entonces puede usar iPhone-URL-Scheme y llamar a la aplicación Pinterest junto con los parámetros url (URL de la página para anclar), media (URL de la imagen a pin) y descripción (Descripción de la página a ser fijada). Presente un UIAlertView y reenvíelos a appstore 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 la aplicación de Pinterest:
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];
}
Método UIAlertViewDelegate
- (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];
}
}