2014年4月19日土曜日

SLComposeViewControllerを使用したTwitter, Facebook投稿

プロジェクトにSocial.framework を追加する。

Social.hをインポートする。


・Twitter投稿の場合
SLComposeViewControllerでTwitter投稿画面を表示する。
if ([SLComposeViewController isAvailableForServiceType:SLServiceTypeTwitter]) {
       SLComposeViewController *composeVC = [SLComposeViewController composeViewControllerForServiceType:SLServiceTypeTwitter];
       // CompletionHandlerを設定
       [composeVC setCompletionHandler:^(SLComposeViewControllerResult result) {
           [self dismissViewControllerAnimated:YES completion:nil];
           if (result == SLComposeViewControllerResultDone) {
               NSLog(@"sendTwitter success");
           }
       }];

       // POSTするテキストの初期設定
       NSString* message = [NSString stringWithFormat:@"XXXXXXXXXX"];
       [composeVC setInitialText:message];
       // URLをPOSTする場合
       [composeVC addURL:[NSURL URLWithString:@"http://XXXXXXXX"]];
       // 画像をPOSTする場合
       [composeVC addImage:[UIImage imageNamed:@"XXXXX"]];
       // SLComposeViewController表示
       [self presentViewController:composeVC animated:YES completion:nil];
   }
CompletionHandlerに入れたdismissViewControllerAnimatedはiOS7.Xではなくても動いたが、
iOS6.Xでは入れないと投稿後の画面操作ができなくなる。



・Facebook投稿の場合
SLComposeViewControllerでFacebook投稿画面を表示する。
if ([SLComposeViewController isAvailableForServiceType:SLServiceTypeFacebook]) {
       SLComposeViewController *composeVC = [SLComposeViewController composeViewControllerForServiceType:SLServiceTypeFacebook];
       [composeVC setCompletionHandler:^(SLComposeViewControllerResult result) {
           [self dismissViewControllerAnimated:YES completion:nil];
           if (result == SLComposeViewControllerResultDone) {
               DEBUG_LOG(@"sendFacebook success");
           }
       }];

       // POSTするテキストの初期設定
       NSString* message = [NSString stringWithFormat:@"XXXXXXXXXX"];
       [composeVC setInitialText:message];
       // URLをPOSTする場合
       [composeVC addURL:[NSURL URLWithString:@"http://XXXXXXXX"]];
       // 画像をPOSTする場合
       [composeVC addImage:[UIImage imageNamed:@"XXXXX"]];
       // SLComposeViewController表示
       [self presentViewController:composeVC animated:YES completion:nil];
   }
CompletionHandlerに入れたdismissViewControllerAnimatedはなくても動く。

0 件のコメント:

コメントを投稿