だいぶ前にGData APIを使ったときにも同じような記事を書きましたが、Xcode4になっていろいろ変わったので、Xcode4での注意点も含めて、以前よりも少し詳しく書いておこうと思います。
※なお、Google Documents List Data APIをはじめ、Googleのサービスの多くは未だLabsに属していて、APIは予告なく変更されることがあるようです。こちらの記事のように、Google側で勝手に仕様変更されてしまって突然アプリが動かなくなってしまうこともあるようなので、自分の製品に使う場合にはこのようなリスクも十分に考慮する必要があります。
1.Google Data APIs Objective-C Client Libraryのダウンロード
プロジェクトのホームページから、Google Data APIs Objective-C Client Libraryをダウンロードします。
コマンドラインから次のコマンドを実行します。(Subversionをインストールしておく必要があります。)
svn checkout http://gdata-objectivec-client.googlecode.com/svn/trunk/ gdata-objectivec-client-read-only
2.クロスプロジェクトリファレンスを作成する
ここからは、こちらに従ってライブラリのビルドと設定をしていきます。Static Libraryをビルドして参照に追加する方法もあるようですが、これだとGDataライブラリ自体に変更を加える必要がある場合に対応できないので、ここではクロスプロジェクトリファレンスを作成する方法を試してみます。
ダウンロードしたものの中にあるプロジェクトファイル(GData.xcodeproj)を、自分のアプリのXcodeプロジェクトにドラッグ&ドロップします。
ここで、ドラッグ&ドロップしてもクロスプロジェクトリファレンスにならないで、単にプロジェクトファイルがプロジェクトに追加されたような形になってしまった場合は、Xcodeを一度終了して、アプリのプロジェクトファイルを開き直す必要があるようです。(Xcode 4.0.2ではそうなりました。おそらくXcodeのバグだと思います。)
3.Target DependencyにGDataTouchStaticLib.aを追加
ターゲットの設定で、Build Phases → Target DependenciesにGDataTouchStaticLib.aを追加します。GDataプロジェクトのGDataTouchStaticLibターゲットをドラッグすればよいはずなのですが、うまくいきませんでした。その場合はTarget Dependenciesの+ボタンを押して追加します。

4.Link Binary With LibrariesにlibGDataTouchStaticLib.aを追加
続けて、アプリケーションターゲットのBuild PhasesのLink Binary With Librariesに、libGDataTouchStaticLib.aを追加します。これもドラッグ&ドロップではうまくいかなかったので、+ボタンで追加しました。


5.ビルド設定にリンカフラグを追加
アプリケーションターゲットのBuild SettingsのOther Linker Flagに、次のようなフラグを追加します。
-ObjC -lxml2 -all_load

6.Header Search Pathの設定
アプリケーションターゲットのBuild Settingsで、Header Search Pathに次のパスを追加します。
/usr/include/libxml2

7.ビルドしてみる
ここまでで設定は完了なので、一度プロジェクトをビルドしてみます。アプリケーションターゲットのビルドを実行して、先にGDataのlibGDataTouchStaticLib.aのビルドが行われれば成功です。
8.ヘッダファイルをコピー
GDataプロジェクトがビルドされると、プロジェクトのビルドディレクトリに、全てのヘッダファイルのコピーを含むディレクトリが作成されます。これを、アプリケーションプロジェクトにドラッグ&ドロップして追加します。
ヘッダファイルが出力された場所は、GDataプロジェクト内でビルドされたlibGDataTouchStaticLib.aを右クリックして、Show In Finderを選べば、それを含むディレクトリを表示できるので見つけやすいです。
9.アプリケーションで必要なコードを記述
あとは、アプリケーションで必要なコードを記述していきます。
#import "GDataDocs.h"
など、必要なヘッダファイルを追加します。(8でヘッダファイルをプロジェクトに追加しておけば、"GData/GData.h"のようにパスをつけて 指定する必要がなくなります。)
手順1でチェックアウトしたものの中には、一通りのサービスを使用するためのサンプルプロジェクトが含まれているので、これを参考にコードを書いていきます。
※サンプルプロジェクトはクロスプロジェクトリファレンスで使ったディレクトリとは別の場所にコピーを作って実行するようにしたほうがよいかもしれません。なぜかそうしないとビルドできませんでした。
10.OAuth2ライブラリを使うときは
Googleのサービスを利用するには、多くの場合、OAuth 2.0で認証して使うことになると思います。
OAuth2認証を利用する場合は、まず、Google API Consoleで、アプリケーションの登録をします。OAuth2で使うClient IDとClient Secretを発行してもらえます。Web Applicationか、Installed Applicationかをきいてくるので、Installed Applicationを選びます。
ここでアプリケーションの登録に使用したGoogle Accountのメールアドレスは、OAuth認証の際にユーザーに公開されます。個人のGoogleアカウントではなく、アプリケーション登録用に別途Googleアカウントを用意したほうが良さそうです。
次に、アプリケーション側でOAuth認証を実装します。GData APIには、OAuth2認証を簡単に行うことができるライブラリGTMOAuth2が含まれています。こちらのドキュメントを読みながらOAuth2認証をアプリケーションで行う処理を実装します。
(OAuth 1.0を行うGTMOAuthライブラリについて書いたこちらの記事もほとんど同じなのでまだ参考になるかも。)
GTMOAuth2のソースコードは、GDataプロジェクトの、Gdata Sources -> Common -> Optional -> OAuth2 -> iOSにあります。
さらに、GTMOAuth2の認証用画面ではxibファイルが使われているので、これをアプリケーションターゲットのBuild PhasesのCopy Bundle Resourcesフェーズに追加しておく必要があります。
※GTMOAuth2ライブラリでは、内部でSBJSONを使用しています。同じプロジェクトに他のバージョンのSBJSONが使われている場合には注意が必要です。
11.不要なソースコードをライブラリのビルドから除外する
スタティックライブラリをビルドする際に、不要なソースコードを除いて、ビルドにかかる時間を短縮し、出来上がる実行ファイルのサイズを小さくすることができます。
例えば、Google DocsサービスとOAuth2を使う場合には、GDataプロジェクトのビルド設定で、Other C Flagsに次のような記述を追加します。
-DGDATA_REQUIRE_SERVICE_INCLUDES=1
-DGDATA_INCLUDE_DOCS_SERVICE=1
-DGTM_INCLUDE_OAUTH2=1

12.アーカイブで.ipaファイルが作成できなくなってしまったら
クロスプロジェクトリファレンスを作成してターゲットが複数存在する場合には、Product -> ArchiveでプロジェクトをアーカイブしてAdHoc配布仕様としたときに、.ipaファイルが作成できなくなってしまうことがあります。この場合は、アプリケーションターゲット以外の全てのターゲットのBuild Settingで、Skip InstallフラグをYESに設定することでこの問題を回避できます。(こちらのQ&Aが参考になりました。)





