Excite Smartphone Engineer's Blog

2012年 09月 20日

【iOS6】Social.frameworkを使ってFacebookとTwitterへシェアしてみよう

スマートフォン推進室の渡辺です。

iOS5でTwitterがOSの機能の一部として組み込まれ、アプリケーションから簡単にTwitterにシェアできるようになったのは記憶に新しいと思います。

そしてiOS6ではFacebookもOSの機能の一部として組み込まれました。
それに伴ってSocial Frameworkと呼ばれるframeworkが追加され、TwitterとFacebookはこのframeworkで簡単にシェアできるようになっています。
補足:未確認ですが、中国でTwitterみたいなサービスである「Sina Weibo」もSocial Frameworkから同様に扱えるようです。

今回はこのSocial Frameworkを使って、TwitterとFacebookへのシェアの仕方を簡単にご紹介します。




iOS6専用アプリとして出すにはまだ少し早いので、iOS5を考慮しつつSocial Frameworkを使っていきましょう。
Link Binary With LibrariesにSocial.frameworkを登録します。
iOS5でも動くようにするためRequiredとなっている部分をOptionalに変更しておきます。
【iOS6】Social.frameworkを使ってFacebookとTwitterへシェアしてみよう_e0291676_17154495.png
これで準備ができたのでコードを書いていきます。

今回は投稿だけなので、Social FrameworkにあるSLComposeViewControllerクラスだけ使用します。
使い方は非常に簡単です。

+ (SLComposeViewController *)composeViewControllerForServiceType:(NSString *)serviceType

でインスタンスを取得します。
serviceTypeには現段階で「SLServiceTypeTwitter」「SLServiceTypeFacebook」「SLServiceTypeSinaWeibo」の3種類が用意されています。

インスタンスを作ったら、あとは画像を追加(addImage:)、初期テキストの指定(setInitialText:)、参照URLの追加(addURL:)を行います。
「送信した」もしくは「キャンセルした」のかを判断する場合には、completionHandlerを設定しましょう。
勘の良い方であれば気がついたと思いますが、Twitter FrameworkにあるTWTweetComposeViewControllerと同じなのです。

初期値を設定したらあとはSLComposeViewControllerを表示するだけです。
手っ取り早いのはModalで表示するパターンでしょう。
あとはframeworkが処理してくれます。
あぁなんて簡単、便利!

iOS5ではSocial Frameworkが使えないので、TwitterはTwitter Frameworkで、FacebookはFacebookのiOS用SDKを使う必要があります。
判定は下記のような感じでよいでしょう。

if(NSClassFromString(@"SLComposeViewController")) {
// Social Frameworkが使える
}
else {
// いままで通りの方法 (iOS5)
}


是非Social.frameworkを使ってアプリをより良くしてみてください。

上記サンプルを作成しましたのでご自由にどうぞ。
SocialFrameworkSample

by sp_tech | 2012-09-20 11:15 | iOS | Comments(0)


<< 【iOS6】iPhone5縦長...      【iOS6】ページ上部にアプリ... >>