MonoTouchでGoogle Data APIを使う

Google TasksにアクセスするためにGoogle Code Archive - Long-term storage for Google Code Project Hosting.が必要になりました.
方法は http://mikebluestein.wordpress.com/2009/09/27/using-monotouch-with-the-net-library-for-the-google-data-api/ にまとめられています.これに従いMonoDevelop 2.2 とMonoTouch 1.2の環境で行うと2点違うことがありました.1つは(記事冒頭にまとめられているのですが)通常のMonoのプロジェクトファイルをMonoTouch向けに変換するオプションがMonoDevelopから無くなったためにツールでの変換はできない,2つは記事はSystem.Webを自前で用意していますがSystem.Web.Servicesを参照すればよい,です.

手順を具体的にまとめておきます:

  • GDataのMonoDevelopiPhoneライブラリプロジェクトファイル作成.
    • MonoDevelopiPhoneライブラリの空プロジェクトファイルを作る.
    • GDataのmono用ソースコードをダウンロードして展開する.
    • src 以下の core, gcalendar, extensions, gacls の4つそれぞれについて,先ほどのMonoDevelopの空プロジェクトファイルを雛形にして,ソリューションファイルの下記の項目をテキストエディタではめ込んでいく.
      • AssemblyName, RootNameSpace,AssemblyOriginatorKeyFile および ProjectGUID
      • ItemGroup の Compile の項目それぞれ,および extensionkey.sn のItemGroup
    • 参照に追加
      • System.Web.Services を追加 (元記事は自前でライブラリを作っていたが,これを参照に加えればその必要は無い)
      • ライブラリ参照(例えば gcalendar は core, extensions, gaclsに依存)を追加
  • CoreのTrace.XXXをコメントアウトもしくはSystem.Diagnostics.XXXに書き換える.

これだけです.

残る疑問はGZipStreamの振る舞いです.これはGZipに依存しているので,この手順では有効にならないと予想します.これを呼び出す例外発生なのか,それともMonoDevelopiPhoneプラットホームがコンパイル時にうまくライブラリにリンクしてくれるのかは,まだ未確認です.