このパートでは、MAFアプリケーションをもう1つ作成します。ただし、このアプリケーションの機能はビーコン信号を送信(アドバタイズ)することです。このアドバタイズ機能は、前のビーコン・クライアントMAFアプリケーションに組み込んだCordovaプラグインの一部として含まれています。開発が完了したら、このアプリケーションをiOSデバイスにデプロイしてビーコン信号を送信できるようにする必要があります。
ステップ1:アプリケーションの作成とCordovaのビーコン・プラグインの追加

このセクションでは、ビーコンをアドバタイズするMAFアプリケーションを作成します。その後、このチュートリアルの前のパートで使用したものと同じCordovaビーコン・プラグインを追加します。このプラグインには、デバイスをアドバタイザおよびレシーバとして使用するためのコードが含まれます。

  1. New Galleryを使用して、Mobile Application Framework Applicationを新規作成します。

    Check for Updates

  2. BeaconAdvertiserという名前を付け、「Finish」をクリックします。

    Check for Updates

  3. 次に、iBeacon機能を含むCordovaプラグインを追加します。このプラグインは、ビーコンの監視と検出だけでなく、ビーコン識別子のアドバタイジングにも使用できます。

    maf-application.xml」ファイルを開き、「Plugins」タブをクリックします。

    Check for Updates

  4. プラグインの場所を設定します。下部にあるAdditional Plugins領域で緑色のプラス記号をクリックし、解凍ファイルのディレクトリ(/cordova-plugin-ibeacon-master/)にナビゲートし、このディレクトリを選択します。

    プラグインが有効なプラットフォームを設定することもできますが、このプラグインはiOSにもAndroidにも有効であるため、デフォルト値のままにします。

    Check for Updates

  5. maf-application.xmlファイルが開いている状態で、アプリケーション名を簡単なものに変更し、アプリケーション・バンドルIDを設定します。

    なお、このアプリケーションはiOSデバイスにデプロイする必要があります。

    Application」タブをクリックし、ページ上部でNameプロパティをAdvertiserに設定します。
    次に、プロビジョニング・プロファイルで指定したApp Idと一致する値をIdに設定します。

    Check for Updates

  6. すべての作業内容を保存します。

ステップ2:プラグインとの交信に必要なJavaScriptの定義

BeaconClientの作成時に、アプリケーションがCordovaプラグインと交信できるようにするJavaScriptコードを追加しましたが、ここでも同様のことを行う必要があります。デバイスを監視したりデバイスとの距離を測定したりするのではなく、デバイスでアドバタイズするため、コードは異なります。

  1. ViewController」プロジェクトを右クリックして、「New」→「JavaScript File」を選択します。

    New Application

  2. File Nameにbeacon.jsと入力して「OK」をクリックします。

    Check for Updates

  3. 下に表示されているコードをファイルに追加します。ダウンロードしたlabs.zipファイルに含まれるbeaconJSAdvertiser.txtファイルからコードをコピーすることができます。先ほどダウンロードしなかった場合は、こちらからダウンロードできます。

    このコードの内容は次のとおりです。
    1:外部からコール可能な2つの関数(startAdvertisingstopAdvertising)を含みます。これらの関数は、それぞれ対応するプラグインAPIを起動します。
    2:Bluetoothの送信状態の変化を検出します。
    3:UUID、Major、Minorの各送信値を定義します。
    4:ビーコン領域を作成して初期化します。

    Check for Updates

    Check for Updates

  4. すべての作業内容を保存します。

ステップ3:JavaScriptとAMXページ間のブリッジとしてのJavaクラスの使用

このセクションでは、AMXページとJavaScript関数との間のインタフェースを提供するマネージドBeanを作成します。

  1. Applicationsウィンドウで「ViewController」プロジェクトを右クリックし、「New」→「Java Class」の順に選択します。

    アプリケーション・ナビゲータで選択されたadfmf-feature.xml

  2. BeaconBean.javaという名前を付け、「OK」をクリックします。

    アプリケーション・ナビゲータで選択されたadfmf-feature.xml

  3. 先ほどダウンロードしたlabsディレクトリにあるbeaconbeanJava.txtファイルからコードをコピーし、JDeveloperファイルに含まれるすべてのコードを置き換えます。

    コードの内容は次のとおりです。
    1:iBeaconのデータのアドバタイジングを管理する次の2つのメソッドを含みます。
    - startAdvertising:JavaScript startAdvertising関数をコールします。
    - stopAdvertising:JavaScript stopAdvertising関数をコールします。
    2:advertising属性を定義します。この属性にはアドバタイジング・ステータスが保持され、getterメソッドとsetterメソッドを使用してアクセスできます。

    アプリケーション・ナビゲータで選択されたadfmf-feature.xml

    アプリケーション・ナビゲータで選択されたadfmf-feature.xml

  4. すべての作業内容を保存します。


ステップ4:アドバタイジングを開始/停止するためのAMXページの作成

プラグインの登録が済み、プラグインにアクセスするためのJavaScriptコードおよびページからアクセスできるJavaクラスの準備ができました。次は、アプリケーションの機能とAMXのコンテンツを作成します。

  1. まず、ビーコン・クライアント・アプリケーションのときと同様に、新機能を作成します。

    maf-feature.xmlファイルを検索して開き、右側にある緑色のプラス記号をクリックして新機能を作成します。

    Deploy→New Deployment Profileメニュー・オプション

    機能名をAdvertiseにして、「OK」をクリックします。

    Deploy→New Deployment Profileメニュー・オプション

  2. 次に、新しい機能にJavaScriptコードを含めます。

    Content」タブをクリックしてIncludes領域まで下にスクロールし、緑色のプラス記号をクリックします。

    Deploy→New Deployment Profileメニュー・オプション

  3. Insert Includeダイアログ・ボックスで、Fileプロパティの右側にある水色の歯車アイコンをクリックします。次に、resources\jsディレクトリにナビゲートして「beacon.js」ファイルを選択します。

    Deploy→New Deployment Profileメニュー・オプション

  4. OK」をクリックしてEdit Propertyペインを閉じ、再度「OK」をクリックしてInsert Includeペインを閉じます。

    Deploy→New Deployment Profileメニュー・オプション

  5. Fileプロパティで、緑色のプラス記号をクリックして機能のコンテンツを作成します。

    Deploy→New Deployment Profileメニュー・オプション

  6. File Nameadvertise.amxに設定し、「Header」ファセットのみ選択します。「OK」をクリックします。

    Deploy→New Deployment Profileメニュー・オプション

  7. このページでheaderファセットを開き、出力テキスト・コンポーネントを選択します。

    ValueプロパティをBeacon Advertiserに設定します。

    Deploy→New Deployment Profileメニュー・オプション

  8. Componentsウィンドウから「Text and Selection」ペインを開き、「Input Text」項目を選択します。

    Deploy→New Deployment Profileメニュー・オプション

  9. それをStructureウィンドウにドラッグし、Panel Pageにドロップします。

    次のプロパティを設定します。
    LabelUUID
    Value#{applicationScope.uuid}
    Read Onlytrue

    Deploy→New Deployment Profileメニュー・オプション Deploy→New Deployment Profileメニュー・オプション

  10. Input Textコンポーネントをもう1つ追加し、次のプロパティを設定します。

    LabelMajor
    Value#{applicationScope.major}
    Read Only#{BeaconBean.advertising == true}
    Input Typenumber

    Read Onlyプロパティの値が黄色い枠で囲まれて表示されています。これは、参照できない値であることを意味します。この部分は、後ほどページが完成してから修正します。

    Deploy→New Deployment Profileメニュー・オプション Deploy→New Deployment Profileメニュー・オプション

  11. 3つ目のInput Textコンポーネントを追加し、次のプロパティを設定します。

    LabelMinor
    Value#{applicationScope.minor}
    Read Only#{BeaconBean.advertising == true}
    Input Typenumber

    Deploy→New Deployment Profileメニュー・オプション Deploy→New Deployment Profileメニュー・オプション

  12. 次に、ComponentsウィンドウのGeneral領域でPanel PageにButtonをドラッグします。

    次のプロパティを設定します。
    TextStart Advertising
    Action Listener#{BeaconBean.startAdvertising}
    Rendered#{BeaconBean.advertising != true}

    Deploy→New Deployment Profileメニュー・オプション Deploy→New Deployment Profileメニュー・オプション

  13. このページにボタンをもう1つ追加し、次のプロパティを設定します。

    TextStop Advertising
    Action Listener#{BeaconBean.stopAdvertising}
    Rendered#{BeaconBean.advertising != true}

    Deploy→New Deployment Profileメニュー・オプション Deploy→New Deployment Profileメニュー・オプション

  14. すべての作業内容を保存します。

  15. 次に、AMXページから参照されるBeaconBeanのJavaコードを設定します。

    Applicationsウィンドウで、「ViewController」→「Web Content」→「resources」の順にノードを開き、「adfc-mobile-config.xml」をダブルクリックします。

    ここで定義したBeanには、バインドされていないすべてのページからアクセスできます。

    Deploy→New Deployment Profileメニュー・オプション

  16. adfc-mobile-config.xmlファイルの下部にある「Overview」タブをクリックし、「Managed Beans」タブをクリックします。

    Deploy→New Deployment Profileメニュー・オプション

  17. 緑色のプラス記号をクリックして次の値を設定します。

    NameBeaconBean
    Classmobile.BeaconBean
    Scopeapplication

    Deploy→New Deployment Profileメニュー・オプション

  18. 作業内容を保存します。


ステップ5:デバイスへのビーコンのデプロイとテスト

次は、アドバタイジング・ビーコンをデプロイし、アドバタイジングを開始します。これで、ビーコン・クライアントの機能をテストできます。ビーコン・クライアントのときと同様に、シミュレータ/エミュレータではなく本物のiOSデバイスにデプロイする必要があります。アプリケーションのデプロイに関する説明は割愛し、テストの説明に進みます。

テストできるシナリオは2つあります。まず、両方ともアクティブなときのアプリケーションの動作を確認します。続いて、アプリケーションがバックグラウンドで動作しているとき、またはデバイスがスリープ状態のときの動作を確認します。

  1. アプリケーションがどのように連動するかを正しく把握するために、両方のアプリケーションをデフォルトの状態(アドバタイジングまたは監視を行っていない状態)にしてテストを開始します。このチュートリアルでは、アドバタイジング・ビーコンはiPad Miniにデプロイされ、ビーコン・クライアントはiPhoneにデプロイされています。下の図は、アプリケーションが両方とも起動していてもアクティブな状態ではないことを示しています。

    後からビーコン・クライアントで確認できるように、アドバタイジング・ビーコンのUUID、Major、およびMinorの各値をメモします。

    Deploy→New Deployment Profileメニュー・オプション Deploy→New Deployment Profileメニュー・オプション

     

  2. 次に、Beacon Clientアプリケーションの「Start」ボタンをクリックします。スクリーンが変わり、UUIDを含む監視メッセージが表示されます。

    Deploy→New Deployment Profileメニュー・オプション

  3. アドバタイジング・ビーコンに戻り、「Start Advertising」ボタンをクリックします。

    Deploy→New Deployment Profileメニュー・オプション

  4. ビーコン・クライアントに戻ると、UUIDの距離測定が実行されていることを示すスクリーンに変わります。実際、アドバタイジング・ビーコンから送信されたものと同じ値(Major値が1でMinor値が100)のビーコンが検出されています。

    Deploy→New Deployment Profileメニュー・オプション

  5. 次は、デバイスがスリープ状態のときに領域の出入りを行った場合の動作を確認します。

    まず、デバイスがスリープ状態のときにビーコン領域から離れるとどうなるかを確認します。

    アドバタイジング・ビーコン・アプリケーションで「Stop Advertising」ボタンをクリックします。ビーコン・クライアント・アプリケーションを確認します。アプリケーションはビーコンを探し続けます。ビーコンを検出できない状態が30秒続くと、デバイスが領域から離れたと判断されます。その後"region exited"イベントが発行され、メッセージを表示するローカル通知が起動します。

    Deploy→New Deployment Profileメニュー・オプション

  6. 次は、デバイスがスリープ状態のときにビーコン領域に入るとどうなるかを確認します。もう一度、ビーコン・クライアント・デバイスがスリープ状態であることを確認し、アドバタイジング・ビーコンに戻って「Start Advertising」ボタンをクリックします。

    ビーコン・クライアント・デバイスが起動し、別の通知が表示されることを確認します。

    通知をタップするかスワイプすると、クライアント・アプリケーションが起動します。

    Deploy→New Deployment Profileメニュー・オプション

    これでこのチュートリアルは完了です。
    お疲れ様でした。


トップに戻る
Copyright © 2015, Oracle.All rights reserved.