Objecti-ve-C : Social.frameworkライブラリ
iOS6から実装されたライブラリ Social.framework を使うと
簡単にSNSへシェアができるようになります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
#import <Social/Social.h> 〜略〜 // Facebookシェアボタン設置 UIImage *FBsharebtnimg = [UIImage imageNamed:@"facebook.png"]; FBrepbutton = [[[UIButtonalloc] initWithFrame:CGRectMake(160, 468, 80, 100)] autorelease]; [FBrepbuttonsetBackgroundImage:FBsharebtnimg forState:UIControlStateNormal]; [FBrepbuttonaddTarget:selfaction:@selector(FBshareaction:) forControlEvents:UIControlEventTouchDown]; [self.viewaddSubview:FBrepbutton]; 〜略〜 - (void)FBshareaction:(id)sender { //NSLog(@"Facebookシェア保存"); // 組み込みのFacebookが利用可能な端末かを検証する if ([SLComposeViewController isAvailableForServiceType:SLServiceTypeFacebook]) { // Facebook投稿機能のインスタンスを作成する SLComposeViewController *slComposeViewController =[SLComposeViewController composeViewControllerForServiceType:SLServiceTypeFacebook]; // 投稿するコンテンツを設定する // 表示する文字列 [slComposeViewController setInitialText:@"#PUBLICROOTS"]; // URL //[slComposeViewController addURL:[NSURL URLWithString:@"http://publicroots.com"]]; // 画像 (ファイル名が分る場合) //[slComposeViewController addImage:[UIImage imageNamed:@"SNScompimg"]]; // 画像を添付 [slComposeViewController addImage:[self makeaShot]]; // 処理終了後に呼び出されるコールバックを指定する [slComposeViewController setCompletionHandler:^(SLComposeViewControllerResult result) { switch (result) { case SLComposeViewControllerResultDone: NSLog(@"Done!!"); break; case SLComposeViewControllerResultCancelled: NSLog(@"Cancel!!"); } }]; // 表示する [self presentViewController:slComposeViewController animated:YES completion:nil]; } } |
Twitterの場合は、isAvailableForServiceType:SLServiceTypeFacebook を
isAvailableForServiceType:SLServiceTypeTwitter にすればOKです。
また、画像を添付したい時は、ファイル名を入れるか、
上記では別に画面キャプチャを撮って添付しています。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
-(UIImage*)makeaShot { //NSLog(@"シェア用画像保存スタート"); UIImage *image; CGRect snsrect = CGRectMake(0, 0, 320, 468); UIGraphicsBeginImageContext(snsrect.size);[self.view.layerrenderInContext:UIGraphicsGetCurrentContext()]; image = UIGraphicsGetImageFromCurrentImageContext(); // 画像コンテキストを終了 UIGraphicsEndImageContext(); //NSLog(@"シェア用画像保存完了"); return image; } |
