flashbuilder 4.6、Flex SDK 4.6 を使用して、iOS および Android 用のモバイル アプリを作成しています。
iOS 用にコンパイルするときにスキップしたい Google Cloud Messaging 用の ANE を使用しています。iOS または Android 用にコンパイルされているかどうかを確認するための定義が flashbuilder 内にあるので、GCM インポートをスキップできます。アプリをコンパイルするたびにコンパイラの定義を変更したくありません。
もう 1 つの方法は、コンパイラの引数で IF ステートメントを使用することです。
if (compiling for ios)
-define+=CONFIG::IOS,true
else
-define+=CONFIG::IOS,false
このようなことを行うことは可能ですか、またはコードで使用できる組み込みのコンパイラ定義はありますか?
編集: パッケージ マネージャーには 3 つのクラスがあります。
- NotificationManager.as
- NotificationManagerIOS.as (iOS 用シングルトン、Air からの RemoteNotification を使用)
- NotificationManagerAndroid.as (Singleton for Android、iOS をサポートしない ANE を使用)
Android 用のコンパイルは問題ありません。iOS 用のコンパイルでは、ANE のクラスでエラーが発生します。
NotificationManager.as:
package managers {
public class NotificationManager {
public static function getInstance():NotificationManager {
var ios:Boolean = (Capabilities.manufacturer.indexOf("iOS") != -1);
if (ios) {
return NotificationManagerIOS.getInstance();
} else {
return NotificationManagerAndroid.getInstance();
}
}
}
}