Googleでは、Google Docs, Calendar, Contactsなどのさまざまなサービスが、Google Data APIとして公開されています。
そして、これらのサービスを利用するためのクライアントライブラリもGoogle Codeで公開されています。クライアントライブラリは、Java, JavaScript, .NET, PHP, Python, そしてObjective-Cのものが用意されています。
これを使うと、OAuthでのアカウントアクセスや、Googleのサービスの利用が簡単に行えるようです。
さらに、Objective-Cのクライアントライブラリは、iPhoneアプリ用にStatic LibraryとしてリンクできるXcode Projectとしても提供されていました。
今回はGoogle DocsのファイルのリストをiPhoneアプリから取得するために、このライブラリを使ってみることにしました。
基本的には、Adding the Google Data APIs to a Projectを見ながらビルド&リンクをしたのですが、うまくいかないところもあったのでまとめておきます。
1. プロジェクトのダウンロード
ダウンロードページからzipファイルをダウンロードするか、SVNでチェックアウトします。私はscpluginというMacのSVNクライアントをインストールして、これでチェックアウトしました。(バージョンは1.10.0)
2. クロスプロジェクトリファレンスを作成
Google Data APIを使いたい自分のiPhoneアプリプロジェクトをXcodeで開き、そのプロジェクトのルート階層に、ダウンロードしたものの中にあるSourcesディレクトリの下のGData.xcodeprojをドラッグ&ドロップします。そうすると、自分のプロジェクトの中に、GData.xcodeprojが入り、さらにその下にはいくつかのビルドターゲットが表示されます。
3. Link Binary With LibrariesにlibGDataTouchStaticLib.aを追加
GData.xcodeprojの下にある、libGDataTouchStaticLib.aをドラッグして、自分のiPhoneアプリプロジェクトのターゲットの中にある"Link Binary With Libraries"にドロップすると、ターゲットのリストにlibGDataTouchStaticLib.aが追加されます。
4. Static Libraryのビルド
ここで、ターゲットに追加したのだから、自分のiPhoneアプリのビルドを開始すれば、依存関係のあるlibGDataTouchStaticLib.aのビルドが先にビルドされるはず・・・と信じていろいろ試しましたが、どうもそういう訳ではないようです。。。
なので、libGDataTouchStaticLib.aを別途ビルドしました。(私はXcodeは初心者なので、やり方が間違っているのかもしれません。正しいやり方をご存知の方いらっしゃいましたら教えてください。m(_ _)m)
iPhoneアプリプロジェクトの中に追加した"GData.xcodeproj"をダブルクリックすると、別のXcodeのウインドウで"GData"プロジェクトが開きます。このプロジェクトで、Xcodeのメインウインドウの左上にあるビルドの設定のプルダウンメニューを開き、Active Targetを"GDataTouchStaticLib"に、Active SDKを自分の使っているSDK(私の場合はiPhone Simulator 3.2)に設定してビルドすると、"Products"グループの下に、libGDataTouchStaticLib.aができます。
5. ヘッダファイルのコピー
"Products"グループの下の、"libGDataTouchStaticLib.a"を右クリックして、"Reviel in Finder"(ファインダで表示)を選び、実際にファイルができた場所をファインダで表示します。(私の場合はシミュレータ用にビルドしたので、Source/build/Debug-iphonesimulator/libGDataTouchStaticLib.aにできていました。SDKの選択を間違えると、違う名前のところにできてしまうので注意が必要です。)
libGDataTouchStaticLib.aと同じディレクトリに、"Headers"というディレクトリもできていて、中にはこのライブラリを使用するときに必要なヘッダファイルがまとめて入っています。これを、自分のiPhoneアプリのXcodeプロジェクトにドラッグ&ドロップしてコピーします。
6. リンクオプションにxml2を追加
Xcodeのメニューから、Project -> Edit Project Settingsを選び、Project Infoダイアログを開きます。そして、Linkingの下にある"Other Linker Flags"に、"-lxml2"を追加します。(検索欄にOther Linker Flagsと入力すると見つけやすいです。)
ここで、マニュアルには-ObjCリンクオプションもつけるように書かれていますが、私の場合はこれをつけるとどうしてもビルドが失敗してしまいました。
7. ヘッダパスにxml2へのパスを追加
マニュアルでは、ライブラリではなくソースファイルを直接プロジェクトに追加する場合のやり方の方にしか書かれていないのですが、Header Search Pathに/usr/include/libxml2を追加する必要がありました。
8. GData.hをimport
試しに、自分のiPhoneアプリの適当なヘッダファイルに次の行を追加して、プロジェクトをビルドしてみます。Static Libraryを使用する場合は、Framework名(GData/)はつけないようです。
#import "GData.h"
ビルドとリンクが問題なく終了すれば、GDataライブラリを使う準備は完了です。
ここからは、Objective-Cのクライアントライブラリの使い方を参考に、自分のアプリで実際にGoogle Data APIを使ってみることにします。
ちなみに、ダウンロードしたもののSourcesディレクトリの下には、GDataOAuthTouchStaticLibrary.xcodeprojというプロジェクトも用意されていて、こちらはOAuthだけを使いたい時に使用できるようになっているみたいです。また、Examplesディレクトリには、Mac OS X用のサンプルプロジェクトがたくさん用意されていて、Google Data APIを使うときの参考になります。
| < Prev | Next > |
|---|

コメント