画像やURLをFacebookやTwitter、LINEなどのSNSに共有する
FacebookやTwitter、そしてLINEへの投稿機能を作ってみます。
FacebookとTwitterへの投稿はiOS 6から実装されたSocial.frameworkを、
LINEへの投稿はURLスキームを使って実装します。
Facebookへの投稿(Social.framework)
Socialライブラリの提供するSLComposeViewControllerを
SLServiceTypeFacebookを指定して作成して使います。
// Social.frameworkをimport #import <Social/Social.h> // Facebookに投稿 - (void)postToFacebook { SLComposeViewController *vc = [SLComposeViewController composeViewControllerForServiceType:SLServiceTypeFacebook]; [vc setInitialText:@"via Think Big Act Local"]; [vc addImage:resultImage]; [vc addURL:[NSURL URLWithString:@"http://himaratsu.hatenablog.com/"]]; [self presentViewController:vc animated:YES completion:nil]; }
実行結果
このように表示されます。
位置情報の追加や公開範囲の設定をした上で、Facebookのウォールに投稿できます。
Twitterへの投稿(Social.framework)
Facebookへの投稿と同じくSLComposeViewControllerを使います。
SLServiceTypeTwitterを指定します。
// Twitterに投稿 - (void)postToTwitter { SLComposeViewController *vc = [SLComposeViewController composeViewControllerForServiceType:SLServiceTypeTwitter]; [vc setInitialText:@"via Think Big Act Local"]; [vc addImage:_resultImage]; [vc addURL:[NSURL URLWithString:@"http://himaratsu.hatenablog.com/"]]; [self presentViewController:vc animated:YES completion:nil]; }
実行結果
このように表示されます。
Facebookへの投稿時と同じく位置情報を付加できる他、
アカウント名の箇所をタッチするとTwitterアカウントを切り替えられます。
LINEへの投稿(URLスキーム)
URLスキームの使い方
公式サイトを参考に設置します。
設置方法 | LINEで送るボタン
データ形式 | URLスキーム | 注意 |
---|---|---|
テキスト | line://msg/text/{テキスト内容} | パーセントエンコーディングする |
画像 | line://msg/image/{画像データ} | PasteBoardを使ってデータを指定 |
今回は画像データを送信します。
// LINEに投稿 - (void)postToLine { // この例ではUIImageクラスの_resultImageを送る UIPasteboard *pasteboard = [UIPasteboard pasteboardWithUniqueName]; [pasteboard setData:UIImagePNGRepresentation(_resultImage) forPasteboardType:@"public.png"]; // pasteboardを使ってパスを生成 NSString *LineUrlString = [NSString stringWithFormat:@"line://msg/image/%@", pasteboard.name]; // URLスキームを使ってLINEを起動 [[UIApplication sharedApplication] openURL:[NSURL URLWithString:LineUrlString]]; }
※ 2014/05/22 追記
iOS 7以降ではpasteboardの仕様変更により、以下のように取得する必要があるようです。
UIPasteboard *pasteboard = [UIPasteboard generalPasteboard];
id:koogawa さんにコメント欄にて教えて頂きました。ありがとうございます!
実行結果
友だちやグループ、LINEホームに投稿できます。
以上、Social.frameworkとURLスキームを使った他サービスへの投稿方法でした。
参考リンク
おすすめ書籍
iPhoneアプリ開発入門におすすめの一冊。
Objective-Cの基本的な文法や特徴をマスターできます。