ios Socialフレームワークでtwitter,facebookへ共有機能を実装する
アレが落ち着いたので、iosアプリの開発再開!
やっぱりtwitter,facebookへの共有機能つけたいと思い、実装してみました。
実装方法は、使っていた入門書にあったSocial.frameworkを使ってみました。
いろいろ細かい連携が必要な時は、facebookなんかはsdkとかを使うっぽい。
まずは共有だけなので、Social.frameworkでイキマス。
手順的には、
- Social.frameworkを追加
xcodeの「linked frameworkes and libraries」からSocial.frameworkを追加
FrameworksディレクトリにSocial.frameworkが追加されます。
- Social.frameworkをインポート
対象の.mファイルにいつも通りのこれを
#import <Social/Social.h>
- ツイート、シェアボタン作る
storyboardでそれぞれボタンを置いて、
ボタンを押した際、それぞれmakeTweet,makeShareというメソッドが呼ばれるようにアクションを追加。
- ボタン押した際のコード実装
まずはtwitter
- (IBAction)makeTweet:(id)sender { if (![SLComposeViewController isAvailableForServiceType:SLServiceTypeTwitter]) { UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"ツイートエラー" message:@"Twitterアカウントが設定されていません。" delegate:nil cancelButtonTitle:nil otherButtonTitles:@"OK", nil]; [alert show]; return; } NSString *text = @"hogehoge"; NSURL *URL = [NSURL URLWithString:@"hogehoge"]; NSData *imageData = [NSData dataWithContentsOfURL:[NSURL URLWithString:@"hogehoge"]]; SLComposeViewController *controller = [SLComposeViewController composeViewControllerForServiceType:SLServiceTypeTwitter]; [controller setInitialText:text]; [controller addURL:URL]; [controller addImage:[[UIImage alloc] initWithData:imageData]]; controller.completionHandler =^(SLComposeViewControllerResult result){ [self dismissViewControllerAnimated:YES completion:nil]; }; [self presentViewController:controller animated:YES completion:nil]; }
次にfacebookのシェア
- (IBAction)makeShare:(id)sender { if (![SLComposeViewController isAvailableForServiceType:SLServiceTypeFacebook]) { UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"シェアエラー" message:@"facebookアカウントが設定されていません。" delegate:nil cancelButtonTitle:nil otherButtonTitles:@"OK", nil]; [alert show]; return; } NSString *text = @"hogehoge"; NSURL *URL = [NSURL URLWithString:@"hogehoge"]; NSData *imageData = [NSData dataWithContentsOfURL:[NSURL URLWithString:@"hogehoge"]]; SLComposeViewController *controller = [SLComposeViewController composeViewControllerForServiceType:SLServiceTypeFacebook]; [controller setInitialText:text]; [controller addURL:URL]; [controller addImage:[[UIImage alloc] initWithData:imageData]]; controller.completionHandler =^(SLComposeViewControllerResult result){ [self dismissViewControllerAnimated:YES completion:nil]; }; [self presentViewController:controller animated:YES completion:nil];
内容はサービスのタイプを変更してるだけです。
今回は特になにもしていないですが、共有完了後のメソッドなど用意すれば、
マンガボックス的な共有したら、○○できるよ!的なのも実装できそうです。
とりあえずアプリの機能は揃ってきたので、あとはデザインとかを・・・!
感謝致します。