Maccle

Xcode 4.6にShareKitモジュールを追加して各種ソーシャルサービスとアプリ連携する方法

February 28, 2013
約 10 分
Xcode 4.6にShareKitモジュールを追加して各種ソーシャルサービスとアプリ連携する方法

Objective-Cであれば、iOSアプリでTwitter、Facebook、Evernoteなどの各種ソーシャルサービスと連携が行える、「ShareKit」という便利なモジュールが公開されています。

例えば、ニュースアプリであれば読んでいるページの情報をユーザーのコメントと共にアプリからツイートしたりFacebookに投稿したり。

通常はそれぞれのAPIにコールして認証、POSTするコードとビューを用意しなくちゃいけないんですが、これだけソーシャルサービスが乱立すると、アプリのメイン機能でもないのに連携のために膨大なコーディングが必要となり、とっても苦痛…

でもこのShareKitモジュールを組み込めば、すべてはたった3行であらゆるSNSへの投稿ができる、というあま〜い謳い文句に誘われてすぐに利用してみることに。

しかし、いざ実装してみると、なんだかんだ「ShareKit」をXcode 4.6 でプロジェクトに組み込むには、ちょっと手順が必要だったのでメモ。

前提環境例

ShareKit導入ステップ

  1. CocoaPods のインストール
  2. ShareKitモジュールのインストール
  3. 動作環境を整える
  4. ShareKitを表示するための準備

1. CocoaPods のインストール

CocoaPodsとは、Objective-C用のライブラリ管理ツール。

Xcode/Objective-Cでアプリを開発する際に、要件を満たしてくれる便利なライブラリが公開されていれば、プロジェクトに組み込んで工数を大幅に削減できますが、その際にライブラリを直接ダウンロードして開発中のプロジェクトに手動でソースを追加しなくても、CocoaPodsのコマンドだけでリポジトリから利用したい便利なライブラリをプロジェクトに追加できます。

ターミナルを起動し、OSX 標準の ruby にて、gem コマンドで CocoaPods をインストールします。

CocoaPodsのインストールが失敗する場合

Building native extensions. This could take a while…
ERROR: Error installing cocoapods:
ERROR: Failed to build gem native extension.

/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby extconf.rb
mkmf.rb can’t find header files for ruby at /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/ruby.h

上記のようなエラーが発生して gemネイティブ拡張のビルドに失敗する場合は、[Xcode] → [Preferences]から [Download]メニューを開き、”Command Line Tools” をまずはインストールしてから、gem コマンドで再び CocoaPods をインストールしてみてください。
clt

インストールが完了したら、早速 pod コマンドで CocoaPods のセットアップをします。

RubyGemsのバージョンが古い場合

Your RubyGems version (*.*.*) is too old, please update with: ‘gem update –system’

システムのRubyGemsが古くてインストール出来ない場合は、上記のコマンドをスーパーユーザーで実行。

2. ShareKitモジュールのインストール

CocoaPods のセットアップまで完了したら、いよいよ ShareKit を CocoaPods で 既存のXcodeプロジェクトにインストールします。

testApp プロジェクトを開いている場合は、一旦Xcodeを終了します。

プロジェクトのルートディレクトリに移動しておきます。
ここでは、”testApp” という名前のXcodeプロジェクトが “/Users/username/Documents/xcodews” にある場合を例にします。

testApp プロジェクトのルートディレクトリに、プロジェクトにて ShareKit ライブラリを CocoaPods が認識するための “Podfile” という名前のファイルを作成します。
ここでは、Facebook, Twitter, Evernote, Google Reader を対象に含めています。

Podfileの内容

※Facebook は iOS4.3 ではインストールできないため、プラットフォームは iOS 5.1 以上とします。

作成した Podfile を元に、ライブラリをインストール。

無事にインストールが完了すると、testApp プロジェクトのルートディレクトリに「Pods」フォルダが作成され、中にライブラリのプロジェクトファイルと、”testApp.xcworkspace” が作成されています。

3. 動作環境を整える

3-1. 必要なフレームワークの追加

ShareKitを利用するには、以下のフレームワークをプロジェクトに追加しておく必要があります。

まず、先ほど作成されたワークスペース “testApp.xcworkspace” をXcodeで開きます。capture_2013-02-27_11.14.00

プロジェクトを選択し、[TARGETS]をからアプリを選び、[Build Phases]の “Link Binary With Libraries” にて、[+]ボタンで以下のフレームワークから必要なものを追加します。add-framework追加モジュール:

  • SystemConfiguration.framework
  • Security.framework
  • MessageUI.framework
  • CFNetwork.framework (Flickrと連携する場合)
  • CoreLocation.framework (Foursquareと連携する場合)
  • Twitter.framework (iOS 5以降)
  • CoreFoundation.framework (オプション。issue #394対策)
  • UIKit.framework (iOS 4.2以下をサポートする場合のみ。)
  • AdSupport.framework (オプション。iOS 6以降)
  • Accounts.framework (オプション。iOS 5)
  • libsqlite3.dylib (Facebookと連携する場合)
  • Social.framework (オプション。iOS 6以降)

3-2. Facebookのアプリ登録

facebookappFacebook Developers でアプリを登録していない場合は、以下のムービーを参考に、アプリを事前に登録してアプリIDを取得しておきます。

Facebook SDK のインストールは不要です

Facebook アプリの登録

3-3. Twitterのアプリ登録

twitterappTwitter Developers でアプリを登録していない場合は、以下からアプリを登録してコンシューマーキー、コンシューマーシークレットを発行します。
Twitter アプリの登録

4. ShareKitを表示するための準備

4-1. ShareKit設定ファイルを用意する

プロジェクトに、ShareKit の設定用クラスを追加します。

ここでは、「MySHKConfigurator」という名前でクラスを追加します。継承するサブクラスは “DefaultSHKConfigurator” を指定します。shk_class

ヘッダとソースファイルが追加されます。capture 2013-02-27 22.03.35

ヘッダとソースは以下を例に作成。

MySHKConfigurator.h

MySHKConfigurator.m

4-2. アプリケーションのデリゲートにShareKitをインポート

最終的な AppDelegate.hAppDelegate.m の内容は以下。

AppDelegate.h

AppDelegate.m の didFinishLaunchingWithOptions

iOS 5から搭載されたARC(Automatic Reference Counting)が有効になっていると、ShareKitの初期化の際、autoreleaseをつけると以下のエラーが発生します。

‘autorelease’ is unavailable: not available in automatic reference counting mode

この場合は、autoreleaseをなくすか、ARCを無効化します。

ARCを無効化するには、プロジェクトの xcodeproj を選択し、[Build Settings] で “All”を選び、[Apple LLVM Compiler 4.x – language]の “objective-C Automatic Reference Counting”値を「NO」に変更します。

4-3. ShareKitを表示する設定

ShareKit を表示したいビューコントローラ(ここではRootViewController)に、ShareKit を組み込みます。

ここでは、アプリ起動(RootViewController表示)時に、ShareKit を表示させてみます。

まずは、ShareKitのアクションシートを表示するための関数を作成しましょう。

以下はその例。

RootViewControllerのヘッダに SHK.h をインポートしておきます。

最終的な RootViewController は以下のようになります。

RootViewController.h

RootViewController.m

実行結果

ここまで準備できたら、プロジェクトをビルドしてちゃんと ShareKit が表示されるかチェックしてみましょう。

アプリ起動時。capture 2013-02-28 9.06.52

Facebookに投稿する場合。capture 2013-02-28 9.17.05

Twitterに投稿する場合。capture 2013-02-28 9.17.22

その他の共有オプション。capture 2013-02-28 9.19.15

About The Author

某IT系なんちゃってエンジニアヨーダ
Apple好きだけど盲目マカーは気持ち悪いと思ってる中道だと思い込んでるしがないダメダメエンジニア。

今もってるApple製品↓
Macbook Pro 15 inch, iMac 27 inch (Late 2009), iPhone 6 Plus, iPad (初代! いらない!)
Follow :

Leave A Reply

*

Comment On Facebook