2011年10月17日月曜日

SDKのダウンロードからプロジェクト設定まで

mixi SDK for iOS を使ったあれこれ、今回はSDKのDLからプロジェクトを作り、その設定まで行きたいと思います。

といっても、基本的にはmixi Developer Centerに書いてある事と被っています。


まずはSDKをDLします。
SDKのDLはここから
2011/10/17現在ではバージョンが1.1になっています。
適当な所に解凍します。



次に、Partner DashboardからAPIの利用登録を行います。
ここ→http://developer.mixi.co.jp/connect/mixi_graph_api/services/
を参考に登録を行います。ここで気をつけたいのが起動URIスキームです

起動URIスキームは、あるアプリケーションから別のアプリケーションを呼び出すときの引数のようなものです。
例えばSafariでYoutubeの動画を見ようとするとYoutubeのアプリが起動すると思います。
そのとき、どのアプリケーションを起動するか、指定するものが起動URIスキームらしいです。
起動URIスキームについては下記をご覧ください。
http://safx-dev.blogspot.com/2010/10/iosurl.html

Partner Dashboardにはこんな感じで、
起動URIスキームを入力する部分があると思います。赤塗りの部分へは、自分で用いるURIスキームの名前を登録します。
ここでは仮にhogehogeとします。
登録はこんな感じです。



次に、Xcodeで新しいプロジェクトを作ります。
テンプレートはSingle View Applicationで行きましょう。何でも多分大丈夫です。


解凍したSDKをプロジェクトに追加します






さらに以下の3つのフレームワークをプロジェクトに追加します。

  • CFNetwork.framework
  • Security.framework
  • SystemConfiguration.framework
そして、Targetsから起動URLを指定します。
  1. Addから URL Typesを選択
  2. IdentifierやIconは適当に入力
  3. URL Schemesは mixiapp-hogehoge
    と入力します。セミコロンやスラッシュは不要です。
こんな感じで指定します。

さらに、現在のSDKではARCを使うとエラーが発生します。なのでARCを使わないようにプロジェクトの設定を変更します。
Build SettingsからApple LLVM compiler 3.0 - Languageの項目、
Objective-C Automatic Reference CountingをNOにします。



実機でのコンパイル
実機でアプリを動かせるようにiOS Provisioning Portalから登録を行います。
ページ中程にあるLaunch Assistantから登録ができると思います。

以前と比べて、ぐっと簡単になったように思います。


あとはコンパイルをすれば完了です。
なにもコードを書いてないので、動かしてもなにもないと思いますが。

次回は認証までを紹介したいと思います!

2011年10月16日日曜日

mixi API SDK for iOSを使うときのあれこれ始めました。

iOSでmixi Graphを簡単に使う事ができる、mixi API SDK for iOSがmixiから発表されました。
でもあんまりこれを使っているとことか、サンプルコードがないみたいなので、勉強しつつ、どう使えばいいかを綴って行きたいと思います。

とりあえず必要な物
  • mac OSXの動くパソコンとXCode
  • iOSの動くデバイス
  • iOS developer programへの登録
SDKを使って認証を行うには、mixi公式アプリが必要なのですが、iOSシミュレータでは
mixi公式アプリを起動することができないので、そこから先に進めなくなります。

この辺りを準備しておけば大丈夫だと思います。


2011年10月8日土曜日

iOS, Objective-Cにおけるメモリ管理


iOSにおけるメモリ管理について
  • iOSではガベージコレクションが使えない
  • その代わりに参照カウンタ方式でメモリを管理する
ガベージコレクションが使えないのは驚きだった。

参照カウンタについて
  • [インスタンス retain]で参照カウンタを1追加
  • [インスタンス release]で参照カウンタを1減らす
  • 参照カウンタが0になったら自動解放される。
  • このときにdeallocメソッドがコールされる。

一時的に使う変数などは解放のし忘れなどが起こりがち、
そのために指定したタイミングでreleaseメッセージを送信してくれる自動解放プールという仕組みがある。
  • NSAutoreleasePool *pool = [[NSAUtoreleasePool alloc] init]で自動解放プールを作る
  • インスタンスに対してautorelase を実行する事で自動解放プールへ登録できる
  • [pool drain]でプールへ登録されていたインスタンスに対してrelaseメッセージが送信される