IOSアプリからピンタレスト共有を許可するための現在最も信頼できる方法は何ですか?
Pinterest APIはまだ公開されておらず、共有するための唯一の推奨方法はWebボタンです。
2013年5月20日の時点で、Pinterestはコンテンツを固定するためのiOSSDKをリリースしました。
詳細については、 開発者サイト を確認してください。
私はiPadアプリにピンタレストを統合しました。しかし、Pinterestにはまだ投稿用のAPIがないので、次の方法を使用しました。プログラムでHTMLWebページを作成し、そのページにプログラムで固定ボタンを追加するだけです。次に、Webビューを表示し、ユーザーがもう一度[固定]をクリックできるようにします。これらはより説明されたステップです。
1)UIWebViewを持つWebViewControllerを作成します。 [閉じる]ボタンを追加し、UIWebViewDelegateProtocol、spinner、htmlStringプロパティを追加します。
2)ユーザーがアプリの[ピン留め]ボタンをクリックしたときに、そのUIWebViewに配置するHTMLをプログラムで生成します。この場合、HTMLページに製品ごとに異なる画像を配置しました。
- (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;
}
これは私のHTMLページ生成方法の例です。
3)ユーザーが[ピン留め]ボタンをタップしたときに呼び出すメソッドを作成します。このボタンは、投稿する画像を含むWebViewと、UIWebViewの[ピン留め]ボタンを表示します。これは私の例です:
- (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)WebViewControllerに「閉じる」ボタンを置いて閉じます。また、スピナーを追加して、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.同じ方法を使用して、GooglePlusの+1ボタンをiPadアプリに追加しました。 (投稿APIもありません。現時点では読み取り専用APIのみです)
共有したいだけの場合(つまり、ユーザーボードにピン留めしたい場合)、iphone-URL-Schemeを使用して、パラメーターurl(ピン留めするページのURL)、media(ピン留めする画像のURL)&description(固定するページの説明)。 UIAlertViewを提示し、アプリストアに転送して、ユーザーがインストールしていない場合は公式の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];
}
}
私も高くも低くも見えました。 SDKについてPinterestチームに連絡したこともあります。私が見つけた最も近いものはPHP githubのラッパー https://github.com/kellan/pinterest.api.php です。
これは非公式のAPIであり、壊れてしまう可能性が高いため、最善の解決策ではありません。
PinterestをカスタムURLスキームと統合しようとしました。また、Pinterestアプリケーションをデバイスにダウンロードしましたが、統合することはできませんでした。
そして、統合にwebViewを使用したくないので、それを行うことは可能です。アプリストアで、最も統合されているアプリケーションは見つかりませんでした。
私もグーグルをしましたが、さらに悪いことに、Snapguideはアプリケーションからピンタレスト統合も削除しました。
WebViewコードを使用して画像を固定しました。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"];
これは簡単ですが、webViewがあれば、私は望んでいません。