(iOS)備忘録 SLComposeViewControllerを利用したSNS連携
ブログ書くの時間かかる。。。くうう。。
本日はSNS連携の備忘録
耐えマーでもtwitter連携やっていますが、今回はfacebook連携についても記載。
耐えマーのバージョンアップでfacebook加えようかなとか。
とりあえず画面用意します。
だいぶ適当。
今回はtwitterアイコン押すとtwitterの投稿ダイアログが、
facebookアイコン押すとfacebookの投稿ダイアログが表示される仕様ですすめる。
まずはtwitter投稿
- (IBAction)tweetButtonPushed:(id)sender { // SLComposeViewController *vc = [SLComposeViewController composeViewControllerForServiceType:SLServiceTypeTwitter]; // 送信文字列(140文字) NSString* message = @"今日は29の日うぇうぇうぇうぇうぇうぇーーーーっっっw #テスト"; // 文字列をセット [vc setInitialText:message]; // URLをPOSTする場合 [vc addURL:[NSURL URLWithString:@"http://matome.naver.jp/odai/2138561901190627201"]]; // 画像をPOSTする場合 [vc addImage:[UIImage imageNamed:@"29.png"]]; // [CANCEL]ボタンなどのイベントハンドラ定義 vc.completionHandler = ^(SLComposeViewControllerResult res) { [self dismissViewControllerAnimated:YES completion:nil]; }; // 送信View表示 [self presentViewController:vc animated:YES completion:nil]; }
29の日を祝うありふれたツイート。URLは焼き肉のおいしい焼き方のリンク、加えておいしそうな肉の画像を添付。
流れとしては、SLComposeViewControllerをつくって、tweetに必要な要素を登録していく感じ。
下の方にあるblocksに何入れればいいか分からなくて困った。
completionHandlerのリファレンス読むと
// Specify a block to be called when the user is finished. This block is not guaranteed // to be called on any particular thread. It is cleared after being called. @property (nonatomic, copy) SLComposeViewControllerCompletionHandler completionHandler;
ってあって、
たぶん、終了やらキャンセル時の処理をblocksで入れとけコラってことだと思う。なるほど。
ということで、実行してtwitterアイコンをタップすると、こんな画面が。
アカウントが登録されていないときの警告ですな。
別にそんな警告な実装はしていなくてもこういった画面が出てくれて大変楽。
そんで登録するとこんな画面に。
あれれ、リンクが記載されていないんですけど...
まあいいやということで実際のツイートを見てみる。
今日は29の日うぇうぇうぇうぇうぇうぇーーーーっっっw #テスト http://t.co/kKMKVN9KMH pic.twitter.com/ZRnE0uhFT2
— まさお (@masaosanz) 2014年10月29日
しっかりリンクが張られてました!
Facebook投稿
ほとんどtwitterの時と一緒。
- (IBAction)fbbuttonPushed:(id)sender { SLComposeViewController *vc = [SLComposeViewController composeViewControllerForServiceType:SLServiceTypeFacebook]; // 送信文字列 NSString* message = @"今日は29の日うぇうぇうぇうぇうぇうぇーーーーっっっw #テスト"; // 文字列をセット [vc setInitialText:message]; // URLをPOSTする場合 [vc addURL:[NSURL URLWithString:@"http://matome.naver.jp/odai/2138561901190627201"]]; // 画像をPOSTする場合 [vc addImage:[UIImage imageNamed:@"29.png"]]; // [CANCEL]ボタンなどのイベントハンドラ定義 vc.completionHandler = ^(SLComposeViewControllerResult res) { [self dismissViewControllerAnimated:YES completion:nil]; }; // 送信View表示 [self presentViewController:vc animated:YES completion:nil]; }
facebookアイコンを押すとこんなダイアログが出ます。
ちょっとtwitterの時と違う。
アルバムやら、位置情報やら、公開範囲の指定がデフォルトで可能っぽい。
facebookではテストしてないけど。
とりあえずこんなかんじ。簡単なことしたいだけだったら非常に楽。