Zrobiłem interesującą integrację w mojej aplikacji na iPada. Ale ponieważ Pinterest nie ma jeszcze API do publikowania, użyłem następującej metody. Po prostu programowo utworzę stronę internetową w formacie HTML i programowo przyporządkowałem przycisk Przypnij do tej strony. Następnie wyświetlam widok sieciowy i pozwalam użytkownikowi kliknąć ponownie Przypnij. Są to bardziej wyjaśnione kroki.
1) Utwórz kontroler WebViewController z interfejsem UIWebView. Dodaj przycisk Zamknij, dodaj właściwość UIWebViewDelegateProtocol, spinner, htmlString.
2) Generuj HTML programowo, aby umieścić go w tym interfejsie użytkownika, gdy użytkownik kliknie przycisk "Przypnij" w swojej aplikacji. W tym przypadku umieszczam na stronie HTML różne obrazy różnych produktów.
- (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;
}
To jest przykład mojej metody generowania strony HTML.
3) Utwórz metodę wywoływania, gdy użytkownik kliknie przycisk "Przypnij", który pokazuje, że webView z obrazem, który opublikujesz, oraz przycisk "Przypnij" na UIWebView. To jest mój przykład:
- (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) Umieść przycisk "Zamknij" na swoim kontrolerze WebViewController, aby go zamknąć. Możesz również dodać spinner, aby śledzić ładowanie 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. Użyłem tej samej metody, by dodać przycisk +1 Google Plus do aplikacji na iPada. (Nie ma też interfejsu API do publikowania, tylko w tej chwili tylko do odczytu API)
Dlaczego nie przycisk web? – mydogisbox
Przycisk @mydogisbox jest niewygodny dla użytkownika, ponieważ musisz wyświetlać dodatkową przeglądarkę internetową i wyświetlać stronę zoptymalizowaną pod kątem urządzeń mobilnych na swojej stronie internetowej –