ShareKitを使ってiPhoneアプリのTwitter連携にトライ
「iPhoneアプリにソーシャルサイトでのシェア機能を3行で簡単実装できる「ShareKit」:phpspot開発日誌」という記事で紹介されていた、ShareKitというフレームワークが面白そうだったので、これを使ってiPhoneアプリのTwitter連携にトライしてみた(iPhoneアプリからツイートするという連携)。
結果的には、思った以上に簡単に使えたので、以下にその方法をメモしておく。
[事前準備]
Twitter連携のためには、Twitterとbit.lyのAPI Keyが必要なので、Twitterはhttp://dev.twitter.com/でAPI Keyの申請をし、bit.lyはアカウントを作成してからhttp://bit.ly/a/accountでAPI Keyを取得する。
事前準備はこれで終りである。
[設定]
1. ソースコードのダウンロード
http://www.getsharekit.com/install/で「Download ShareKit」と書かれたボタンを押して、ソースコードをダウンロードする。
2. iPhoneアプリのプロジェクトにソースコードをコピー
ダウンロードしたソースコードに含まれるShareKit.xcodeprojをダブルクリックしXCodeのプロジェクトを開く。次にXCodeプロジェクト内のClassesグループ内のShareKitグループのソースを、自身のiPhoneアプリ用のXCodeのプロジェクトにコピーする。
3. 必要なフレームワークを追加する
SystemConfiguration.framework、Security.framework、MessageUI.frameworkの三つのフレームワークをプロジェクトに追加する。
4. API Keyをヘッダファイルに記載する
プロジェクトに追加したShareKitのソースコードに含まれる、SHKConfig.hというヘッダファイルを開き(ShareKitグループ直下にある)、先程取得したAPI Key等を記載する。
今回はOAuthを使ったので、変更が必要だったのは以下の7つの定義(ShareKitはxAuthも使える模様)。
#define SHKMyAppName @"Tomute's Test App" #define SHKMyAppURL @"http://d.hatena.ne.jp/tomute/" #define SHKTwitterConsumerKey @"mytwitterconsumerkey" #define SHKTwitterSecret @"mytwittersecret" #define SHKTwitterCallbackUrl @"http://d.hatena.ne.jp/tomute/" #define SHKBitLyLogin @"tomute" #define SHKBitLyKey @"bitlyapikey"
設定は以上で終了である。
[使い方]
以下のように、UIWebView上に表示されているサイトのURLを、左下のボタンを押すことでツイートする事が出来る、というようなアプリを作る場合の実装例を示す。
左下のボタンを押すと呼ばれるメソッドがshareButtonだとすると、以下のような形になる。
#import "SHK.h" (snip) - (IBAction)shareButton:(id)sender { // UIWebViewに表示されているサイトのURLとタイトル指定して、SHKItemを生成する SHKItem *item = [SHKItem URL:testWebView.request.URL title:[testWebView pageTitle]]; // SHKItemを引数に指定してShareKitのアクションシートを生成 SHKActionSheet *actionSheet = [SHKActionSheet actionSheetForItem:item]; // ShareKitのアクションシートを表示 [actionSheet showInView:self.view]; }
上記の3行だけで、以下のような各種ソーシャルウェブサービスとの連携用のアクションシートが表示される。
このアクションシートでTwitterのボタンを押すと、以下のようにTwitterのOAuthの認証画面が表示される(初回認証時のみ)。
上記画面でユーザの承認が完了すると、以下の画面が表示される。サイトのタイトルとURLが挿入された状態のテキストエリアが表示されるので、「Send to Twitter」ボタンを押すとツイート完了である。
[まとめ]
ShareKitを使えば、Twitterだけでなく、Facebook、Instapaper、Delicious等の各種ソーシャルウェブサービスとの連携もかなり容易に出来そうである。
Twitter連携では画像の投稿が出来ないのが残念。
メニューが日本語化されていないという問題はあるものの、ソースコードがあるので日本語化はそれほど難しくは無さそうである。
ちなみにShareKitはMITライセンスで公開されている模様。
[関連記事]