Home > a++ My RSS

a++ My RSS

  • 2010-07-08 (木)
  • iOS4のバックグラウンド処理とiPadの微妙な関係

    iOS4 からマルチタスクがサポートされ、これにより現在申請中のツイキャス最新版では、「バックグラウンドでライブ配信」ができるようになります。

    IMG_0015.PNG
    こんな感じでライブ配信中もブラウザ見たりできますよ、と。


    iOS4なにそれ?美味しいの?って思ってたんですが、バックグラウンドで配信できる便利さは凄いです。
    初めて iOS4 バンザイ!って思いましたw


    で、これを実現するためのメモを残しておきます。ま、大したことないんですけどね。(ていうかちゃんと審査通るかどうかが心配・・・)

    あ、ちなみに、iOS4 だとアプリが終了せずにタスクトレイに残るからバッテリーの減りとか大丈夫?という話しもあるんですが、

    - ステータスバーが赤くなる(上の画像のような)ケース以外では CPU は使われないから大丈夫
    - ただ、メモリは使われる。これは古いものから順に押し出される

    ということで、あまり心配する必要はありません。
    ただ、アプリが終了せず継続されるということで

    - メモリリークしてるようなアプリは大丈夫?

    という疑問が残ります。で、メモリリークしてるアプリについては、起動するたびに使うメモリが増えてしまうので最終的には「残念」な結果になります。

    メモリリークしてるから使ってはいけないアプリ、的なリストがあればいいんですけどね・・・現時点では開発者を信じるしかありません。


    ■バックグラウンドでプロセスを残すには

    いくつか方法があるのですが、一番多いパターンは「音楽を再生または録音」しているケースです。

    この場合は

    - Info.plist のマルチタスク記述に App Plays Audio をセットするだけ

    で対応が完了します。驚くほど簡単で便利。

    で、これによりアプリが切り替わっても(音楽の再生または録音中なら)バックグラウンドで処理を続けます。ただ、カメラなどは落とされるので、ツイキャスでもバックグラウンドで処理している場合は「音声のみ」の配信になります(映像はストップ)。


    ■音楽はどうやって再生すればいいのか

    で、問題はどうやって音楽を再生すればいいのか、です。

    WWDCの資料とかでは AVFoundation → AVSession を使うことが推奨されていますが、これを使ってしまうと iPad で動きません (OSが古いから)

    で、レガシーな AudioQueue または OpenAL を使うことになります。
    ポイントは、AudioQueue や OpenAL を使っても「バックグラウンド動作は有効」になるという点ですね。なーんだ、AVSession 使わなくてもよかったんだ、と。
    (デバイスの処理をみてるんですかね)


    ■iPad の微妙な関係

    さて、そこでずぼらな私は「iPad は iPhone シミュレーションモードで動けばいいや」と思うわけです。

    そこで、iOS4 でアプリを開発し、Deployment OS を 3.2 と指定します。
    これにより iPad では動くけど iOS4 以前の iPhone じゃ動かないからめでたしめでたし!

    ・・・・と思ったのですが、残念ながら、この設定では Apple がアプリを受け付けてくれません。
    iPhone 用のアプリなら、3.1 か 4.0 を Deployment Target に指定しろ、というわけです。
    でも 4.0 を指定してしまったら iPad では動きません。

    むむむ、、、、ということで仕方なく 3.1 を指定し、OS のバージョンによって処理を振り分けるコードを追加することになります。
    まぁ、冷静に考えてみれば iPad の iPhone モードだと OS は 3.1.3 なわけで、3.2 で提出できたとしても iPad では動かないんですけどね(実は純粋な 3.1.3 じゃないんだけど)。

    まぁ、iPad で動かしたいなら、ちゃんとユニバーサルバイナリにしなさい、ってことなんでしょうかね。

    と、そんな感じで iOS4 結構便利。


    ツイキャスも、七夕の日に申請したので、うまくいけば1週間ほどで公開されると思います。

    そしたら試してみていただければ、と思います>iOS4なみなさま。


    ツイキャス(ライブ)

    ツイキャス(ビューワー) (こっちはまだマルチタスク対応してません)

    ※バックグラウンドで動作している最中に、他のアプリが音楽の再生や録音を開始するとバックグラウンドで動いているアプリは停止してしまいます。これは iOS4 の仕様ですので、どうしようもありません。なお、ツイキャスではこの状態でも 約20 秒以内にアプリに戻ればライブ配信を継続することができるようになっています。


[Powered by nuwaa-jyuku.com]

Home > a++ My RSS

Search
Feeds

Page Top