iOS6で追加されたSocial Framework、SLComposeViewControllerのサンプルコード
iOS6で追加されたSocial Framework。
Twitter Frameworkを置き換えるものとなっています。
ユーザーに対して、Twitter, Facebook, Sina Weiboにポストを促すのには手軽です。
Sina Weiboは中国なかんじのアレなので、今回は華麗にスルーで。
今回使ったソースです。
アカウントの設定
iOS5と同様、設定アプリで各サービスのアカウントを設定します。
Facebookのアカウント登録は以下のようなちょっと変わった画面が出てきたので、一応メモ代わりに書いておきます。
う〜ん。どうやらいろんなアプリと連携するようですな。
オンオフは設定アプリで切り替えられるよと。
んでSign Inすると以下の画面が出てきます。
なんかスイッチがついたセルが見れますが・・・「連絡先」の上のセルが正しく表示されてませんねぇ・・英語だし。
まぁSDK自体ベータなので、とりあえずオフにして設定を完了します。
フレームワークを追加
TARGETのBuild Phasesで、Social Frameworkを追加します。
SLRequestも使ってみようと思っていたので、Accounts Frameworkも追加していますが、今回は関係ありません。
コードを書く
ビューコントローラーに以下のようなコードを書きます。(以下はFacebookのコンポーザーを呼び出します。)
if ([SLComposeViewController isAvailableForServiceType:SLServiceTypeFacebook]) { SLComposeViewController *composeViewController = [SLComposeViewController composeViewControllerForServiceType:SLServiceTypeFacebook]; void (^completion) (SLComposeViewControllerResult result) = ^(SLComposeViewControllerResult result) { [composeViewController dismissViewControllerAnimated:YES completion:nil]; }; [composeViewController setCompletionHandler:completion]; [composeViewController setInitialText:@"Initial text."]; [composeViewController addURL:[NSURL URLWithString:@"http://www.j7lg.com/"]]; [composeViewController addImage:[UIImage imageNamed:@"Default.png"]]; [self presentViewController:composeViewController animated:YES completion:nil]; }
クラスメソッドのisAvailableForServiceTypeで、アカウントが設定されているか確認します。
SLComposeViewControllerのインスタンスをサービスタイプ(SLServiceTypeFacebook)を指定して生成して、各プロパティを設定します。
SLComposeViewControllerはcompletionHandlerプロパティがあり、ユーザーが送信完了やキャンセルを行った時の処理を、ブロックで指定できます。
これで以下のような画面を表示できます。
サービスタイプをSLServiceTypeTwitterに変更すると、以下のようにTwitterの投稿画面になります。
OSのロケールは日本語にしているのですが、ダイアログの文字は英語ですね・・まぁSDKがベータなので。
まとめ
うわさ通りFacebook連携は簡単になりましたねぇ。
アプリのスクショを投稿してもらったり、ソーシャルな使い方ができるようなアプリが増えそうです。
スクショなどはUIImageの合成などが必要なのでめんどいですけどね。
関連記事を参考にしていただけるといいかもしれません。
関連記事: