このマスターシリーズでは、Adobe AIR 2.6で導入されたデスクトップおよびモバイルプラットフォームの新機能について解説します。

本記事では、Adobe AIR 2.6から導入されたモバイルアプリケーション用設定の新機能について紹介します。

新機能について

今回は、モバイルアプリケーション用設定の新機能について取り上げます。

  • iOS 4のサポート
  • iOS向けのGPUレンダリング
  • iOSでのマルチタスクのサポート
  • iOSでのRetinaディスプレイのサポート
  • AndroidでのUSBデバッグ

その他、Android Marketの代替URLの指定が可能になり、Amazonマーケットなどに変更することができるようになっています。

iOS 4のサポート

Adobe AIR 2.6では、iOSアプリケーションの開発に対応しました。これまではPackage for iPhoneというツールを利用して、コマンドラインもしくはFlash Professional CS5の拡張機能でiOSアプリケーションを開発することができました。この機能がAdobe AIR SDKのAIR開発ツール(ADT)に統合され、モバイルアプリケーションとしてAndroidパッケージ(apkファイル)だけでなく、iOSパッケージ(ipaファイル)も出力できるようになりました。標準でAdobe AIR 2.6を利用できるFlash Builder 4.5やFlash Professional CS5.5でも、同様の機能が利用できるようになっています。

なお、サポートするiOSはバージョン4.0以上であり、3.2以下はこれまで通りPackage for iPhoneを利用する必要があります(ちなみに、Androidの場合は、バージョン2.2/2.3をサポートしています)。

Androidアプリケーションと異なり、iOSアプリケーションの開発ではデバイス上での実行に諸々の準備が必要です。次にポイントとなる作業について補足します。

証明書とプロビジョニングプロファイルの準備

iOSアプリケーションをデバイス上で実行するには、AppleのiOS Developer Programに参加し、サイト内のiOS Provisioning Portalで開発用や配布用にそれぞれ証明書を取得する必要があります。証明書の取得やADTなどで利用するための変換方法については、「AIR アプリケーションへの署名 - iOS 証明書」を参考にしてください。

また、アプリケーションごとに「プロビジョニングプロファイル」を取得する必要があります。下記のようなアプリケーション記述子ファイルのid要素の値をBundle IdentifierとしてApp IDを作成します。さらにそのApp ID、テストする実機のDevice、開発者それぞれの証明書を選択して、プロビジョニングプロファイルを作成します。詳しくは、iOS Developer Program内のヘルプを参考にしてください。

<id>com.tilfin.MultiTask</id>

iOSパッケージの作成

前述の証明書とプロビジョニングプロファイルを用いて、デバイスにインストールできるiOSパッケージを作成できます。ADT packageコマンドを使ったパッケージ作成については、「モバイル AIR アプリケーションのパッケージ化 - iOS パッケージ」を参考にしてください。

Flash Builder 4.5の場合、開発時のパッケージ化は、プロジェクトの[プロパティ]ダイアログを開いてツリーから[ActionScriptビルドのパッケージ化]の[Apple iOS]を選択して、[電子署名]タブに証明書とプロビジョニングプロファイルを設定します。配布時のパッケージ化は、メニューの[プロジェクト]→[リリースビルドのエクスポート…]から同様に証明書とプロビジョニングプロファイルを設定します。

Flash Professional CS5.5の場合、[プロパティ]パネルの[Player]で[AIR for iOS]を選び、右側の[アプリケーション設定の編集](スパナアイコン)ボタンをクリックします。[AIR for iOS設定]ダイアログが表示されるので、[デプロイ]タブで、証明書とプロビジョニングプロファイルを設定します。詳しくは「iPhoneアプリの開発方法 for Flash Professional CS5」を参考にしてください。

iOS向けのGPUレンダリング

iOSデバイスでもGPUアクセラレーションが利用できるようになりました。アプリケーション記述子ファイルのinitialWindow要素内にrenderMode要素を追加して、値を「gpu」に設定します。そうすると使用可能な環境では、ハードウェアアクセラレーションが有効になります。

<initialWindow>   …省略… <renderMode>gpu</renderMode> <initialWindow>

iOSでのマルチタスクのサポート

マルチタスクの仕組みと無効化の方法

標準でiOS 4のマルチタスクに対応します。バッググラウンドへの移行と復帰は、NativeApplicationクラスのdeactivateイベントとactivateイベントでそれぞれ捕捉可能です。なお、アプリケーションがバックグラウンド状態でも、ソケットのイベントは捕捉できます。

マルチタスク化させない場合は、下記のようにアプリケーション記述子ファイルのInfoAddtions要素において、UIApplicationExitsOnSuspendプロパティを「true」に設定します。

<iPhone> <InfoAdditions> <![CDATA[ <key>UIApplicationExitsOnSuspend</key><true/> ]]> </InfoAdditions> …省略… </iPhone>

適切なイベントハンドリングの方法

サンプル01_MultiTaskでは、activateイベントとdeactiveイベントに加え、invokeイベントとexitingイベントをハンドルし、画面に順次表示するようになっています。マルチタスク時に、どのタイミングでイベントがどのように起きるかを確認できます。

図3は、「起動してからホームボタンでバックグラウンド移行し、そして復帰、さらにスリープしてそれを解除」という操作を行った際の結果です。起動すると続けてinvokeイベントとactivateイベントが起きます。その後にホームボタンを押すと、deactivateイベントが起きてバックグラントに移行します。さらに復帰時にactivateイベントとinvokeイベントが起きることがわかります。そしてスリープでdeactivateイベントが起き、解除でactivateイベントとinvokeイベントが起きています。

注意すべき点は、invokeイベントが最初の起動時以外でも起きるということです。また、マルチタスクを無効にしてもexitingイベントはサスペンド時に起きません。以上から、イベントハンドリングのポイントをまとめると次のようになります。

  • 起動時のみ必要な処理は、activateイベントにおいて初期化フラグを定義して、フラグが立っていないときに行う。
  • バックグランドへの移行時は、deactivateイベントを利用して捕捉する。ここで失ってはいけない情報は永続的な保存を行う。
  • バックグランドからの復帰時に必要な処理は、activateイベントにおいて、前述の初期化フラグが立っているときに行う。
  • カスタムURL Schemeで呼び出され、引数によって処理分けをしたいときのみ、invokeイベントを捕捉する。InvokeEventクラスのargumentsプロパティに値があるときだけ処理する。

iOSでのRetinaディスプレイのサポート

RetinaディスプレイのiOSデバイスにおいて、960×640pxの高解像度で利用するには、アプリケーション記述子ファイルのiPhone要素内にrequestedDisplayResolution要素を追加して値を「high」に設定します。480×320pxの標準モードに設定する場合は「standard」に設定します。

<iPhone> …省略… <requestedDisplayResolution>high</requestedDisplayResolution> <iPhone>

また、Retinaディスプレイ用の114×114pxのアイコンを設定するには、アプリケーション記述子ファイルのicon要素内にimage114x114要素を追加してアイコンへのパスを値に設定します。

<icon> …省略… <image114x114>icons/icon114.png</image114x114> </icon>

iOSでのステータスバーのスタイル設定

前述したアプリケーション記述子ファイルのiPhone要素は、iOS動作時の設定セクションです。さらにその子のInfoAdditions要素では、Xcodeで作る際にiOSアプリケーションに設定できる項目の一部を指定することができます。iOSアプリケーションに設定できる項目は、「Information Property List Key Reference: UIKit Keys」を参照してください。設定対象外の項目は、「モバイルアプリケーションプロパティの設定 - 予約された iOS InfoAdditions 設定」で確認できます。

InfoAdditions要素は、CDATAセクションにplist形式のXMLをベタな文字列として定義する仕様になっています。例えば、以下のようにUIStatusBarStyleプロパティを使って、ステータスバーのスタイルを変えることができます。

<iPhone> <InfoAdditions><![CDATA[ …省略… <key>UIStatusBarStyle</key> <string>UIStatusBarStyleDefault</string> ]]></InfoAdditions> …省略… </iPhone>

なお、UIStatusBarStyleプロパティに設定できるのは次の3種類です。

AndroidでのUSBデバッグ機能

Android(バージョン2.2以降)上で実行するアプリケーションを、ネットワーク経由だけでなく、USB経由でもデバッグできるようになりました。このため、デバイスのネットワークがオフラインの状態のテストも簡単にできるようになります。

Flash Builder 4.5の場合、[デバッグの構成]ダイアログで[起動方法]を[デバイス上]にして、[USB 経由でデバッグ(推奨)]を選択することで有効になります。

Flash Professional CS5.5の場合、[デバッグ]メニューの[USB 経由でデバイスを使用]を選択して、USB接続したデバイス上でムービーをデバッグすることができます。

なお、Windows環境では、Androidデバイス用のUSBデバイスドライバーをインストールしておく必要があります。「Google Android デバイスの接続」 を参考にしてください。ちなみに、Adobe AIR SDK単体のzipファイル内では、android_winusb.infは「 <ルート>\install\android\usb_drivers\android_winusb.inf」 に存在します。

おわりに

Adobe AIR 2.6から導入されたモバイルアプリケーション開発向けの新機能について紹介しました。iOSのサポートにより、AndroidとiOSアプリケーションを同じプロジェクト(ソースコード)で開発することできるようになりました。次回からは、Adobe AIR 2.5および2.6から提供されたモバイル向けAPIの具体的な使用方法や、従来APIのモバイル環境でのサポート状況について紹介していきます。

関連記事