ShareKitを使ってiPhoneアプリのTwitter連携にトライ

iPhoneアプリにソーシャルサイトでのシェア機能を3行で簡単実装できる「ShareKit」:phpspot開発日誌」という記事で紹介されていた、ShareKitというフレームワークが面白そうだったので、これを使ってiPhoneアプリTwitter連携にトライしてみた(iPhoneアプリからツイートするという連携)。
結果的には、思った以上に簡単に使えたので、以下にその方法をメモしておく。


[事前準備]
Twitter連携のためには、Twitterとbit.lyのAPI Keyが必要なので、Twitterhttp://dev.twitter.com/API Keyの申請をし、bit.lyはアカウントを作成してからhttp://bit.ly/a/accountAPI 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ライセンスで公開されている模様。

[関連記事]