[AIR3][ANE][iOS] iOSでAIR Native Extention (iOSからイベントを受け取る)
Posted:{ 2011.12.11 07:45:28 }

AIR Native Extention (以下ANE) で ネイティブ からAIR側にイベントを送出するには FREDispatchStatusEventAsync() を実装します。
この関数は、ネイティブからas側にStatusEventを送出できる関数です。
as3 サンプル
まず.aneに含めるSWCライブラリ側で、コンテキストにStatusEventをリスナーしておきます。
//〜略〜 _context = ExtensionContext.createExtensionContext("[エクステンションID]", "type"); _context.addEventListener(StatusEvent.STATUS, onStatusEvent); //〜略〜 private function onStatusEvent(event:StatusEvent):void{ trace(event.code,event.level); dispatchEvent(event); }
Objective-C サンプル
次にC側で、イベントを送出したい部分に下記のように記述します。
FREDispatchStatusEventAsync( context , (uint8_t*)[@"hogehoge" UTF8String], (uint8_t*)[@"fugagufa" UTF8String]); )
第1引数は、ContextInitializer の第三引数で受け取った context を保持しておいた物を渡します。
第2、第3引数に指定した値がそれぞれ、StatusEvent の code 、level プロパティに格納されます。
※ContextInitializerって何?って方はAKABANAさんのブログを参照。
ANEでネイティブから送出できるイベントは、StatusEvent のみですが、上記の様に code や level がカスタマイズできるので、as側ではそのプロパティでイベントの種類を判断して振り分けるような実装にしましょう。
イベント送出をチェック
FREDispatchStatusEventAsync() は戻り値で、イベント送出が成功したかどうか判断できます。
例えば先程のコードを
FREResult result =FREDispatchStatusEventAsync( context , (uint8_t*)[@"hogehoge" UTF8String], (uint8_t*)[@"fugagufa" UTF8String]); )
とresultに代入しておいて
if (result == FRE_OK){ //イベント送出成功 }else{ //イベント送出失敗 }
など、振り分け処理を行うことが出来ます。
以上、「もっとこうしたほうがいいよ!」「それ違うよ!」などありましたら、コメントかtwitterでリプ頂けると有難いです。







