** はじめに
こんにちは、ビンゴ葦名です。
今回はiOS6から導入された UIActivityViewcontroller についてのテクニックを紹介します。
** twitter, facebook などの投稿機能が簡単に実装できる
UIActivityViewcontroller を呼び出すと、
以下の画面のようなアイコン形式のダイアログが表示されます。
さらに、投稿処理も UIActivityViewcontroller が面倒を見てくれるため、
プログラマは初期画像や、初期テキストをパラメーターとして与えるくらいで
実装が完了してしまいます。
便利な世の中になったものですね。
** しかし
そんな便利な UIActivityViewcontroller君にも欠点はありました。
世の中に全てにおいて完璧な人間などいませんから、仕方ありませんね。
その欠点とは、、、
iOSの設定で facebook または twitter のアカウントが設定されていないと、
そのアイコンが表示されないのです。
facebook, twitter 共にログインしてない状態だと以下のような画面になってしまいます。
なんかさみしいですね。
** 対応策
そんな寂しがり屋のあなたのためにいいことをお教えしましょう。
facebook, twitterに未ログインのときに表示するカスタムアクティビティを作成します。
そのアイコンをクリックすると、「ログインされていません、ログインしますか?」という
表示を出してなんとかその場でログインしてもらうようにします。
全てのコードをここに載せることはできませんが、要点だけを解説します。
twitterにログインしていないときに、TwitterActivityというカスタムアクティビティを
生成するコード
1 2 3 4 |
if ([SLComposeViewController isAvailableForServiceType:SLServiceTypeTwitter] == NO) { TwitterActivity *twitterActivity = [[TwitterActivity alloc] init]; [mArrApplicationActivities addObject:twitterActivity]; } |
facebookにログインしていないときに、FacebookActivityというカスタムアクティビティを
生成するコード
1 2 3 4 |
if ([SLComposeViewController isAvailableForServiceType:SLServiceTypeFacebook] == NO) { FacebookActivity *facebookActivity = [[FacebookActivity alloc] init]; [mArrApplicationActivities addObject:facebookActivity]; } |
カスタムアクティビティの TwitterActivity, FacebookActivity は、
UIActivity のサブクラスとして実装します。
iOS6なので、これらの中身は SLComposeViewController に、それぞれパラメータ(SLServiceTypeTwitter, SLServiceFacebook)を指定して実装します。
カスタムアクティビティに設定するアイコン画像は自分で作らないといけません。
** うまく実装すると
以下のようになります。アイコンが灰色なのは、彼らの影が薄いからではありません。
UIActibityViewcontrolle のカスタムアクティビティのアイコンは
全てこのような色になってしまいます。
クリックすると、 SLComposeViewController の機能により
「ログインしていません、ログインしますか?」
というダイアログが表示されるはずです。