プライマリ・コンテンツに移動
Oracle® Mobile Application Framework Oracle Mobile Application Frameworkでのモバイル・アプリケーションの開発
2.3.3
E82940-01
目次へ移動
目次

前
次

4 アプリケーションのナビゲーションの構成

この章では、MAFアプリケーションでアプリケーション・ナビゲーションを構成する方法を説明します。

この章の内容は次のとおりです。

4.1 MAFアプリケーションの表示動作の概要

Springboardとナビゲーション・バーの表示動作を次のように制御するよう、MAFアプリケーションを構成できます。

  • Springboardとナビゲーション・バーを表示または非表示にすることで、モバイル・デバイスのインタフェースを最適に使用できるようになります。これらのオプションは、ナビゲーション・バーのデフォルトの表示動作をオーバーライドします。ナビゲーション・バーは、アプリケーション機能によって別の状態に指定されていないかぎり、デフォルトで表示されます。

  • Springboardを右からスライドできるようにします。デフォルトでは、Springboardは表示全体を占有せず、そのかわりに左からスライドして、アクティブ・コンテンツ(ナビゲーション・バーの「ホーム」ボタンとアプリケーション機能を含む)を右へプッシュします。

4.2 アプリケーションのナビゲーションの構成

「アプリケーション」ページの「ナビゲーション」のオプション(図4-1を参照)を使用して、ナビゲーション・バーを表示または非表示にしたり、アプリケーションによって使用されるスプリングボードのタイプを選択したり、ユーザーがアプリケーションをめくるように見ていくときのスプリングボードの反応方法を定義できます。

図4-1 「アプリケーション」ページの「ナビゲーション」のオプション

この図は周囲のテキストで説明しています

4.2.1 ナビゲーション・バーの表示動作の設定方法

MAFアプリケーションのデフォルトの動作では、アプリケーション起動時にナビゲーション・バーが表示されます。このデフォルトの動作は、maf-application.xmlファイルの概要エディタの「アプリケーション」ページで変更できます。

ナビゲーション・バーの表示動作を設定するには:

  1. 「アプリケーションの起動時にナビゲーション・バーを表示」を選択して、MAFアプリケーションで、デフォルトで、スプリングボードではなくナビゲーション・バーが表示されるようにします(図4-2を参照)。

    図4-2 デフォルトでナビゲーション・バーを表示

    この図は周囲のテキストで説明しています

    このオプションをオフにすると、アプリケーションの起動時にナビゲーション・バーが表示されなくなり、ユーザーにはSpringboardがナビゲーションの唯一の方法として提示されます。ナビゲーション・バーはSpringboardと同じ目的を果たすものなので、これを非表示にすることで冗長な機能を削除できる場合もあります。

  2. 「ナビゲーション・バー・トグル・ボタンの表示」を選択して、選択したアプリケーション機能のコンテンツが表示されているときにはナビゲーション・バーを非表示にします。図4-3はこのオプションを示したもので、図4-2に示されているナビゲーション・バーを、アプリケーション機能のコンテンツによって非表示にする方法が示されています。

    図4-3 ナビゲーション・バーを非表示

    この図は周囲のテキストで説明しています

    このオプションはデフォルトで選択されており、アプリケーション機能によって表示/非表示状態が指定されていなければ、ナビゲーション・バーはデフォルトで表示されます。

4.2.2 Springboardの表示動作の設定方法

デフォルトでは、MAFアプリケーションはアプリケーション起動時にSpringboardを表示しません。このデフォルトの動作は、maf-application.xmlファイルの概要エディタの「アプリケーション」ページで変更できます。

Springboardの表示動作を設定するには:

  1. Springboardのタイプを選択します(存在する場合)。

    • なし: アプリケーションにSpringboardを表示しない場合は、このオプションを選択します。

    • デフォルト: MAFによって提供されるデフォルトのSpringboardを表示する場合に選択します。デフォルトのスプリングボードは、MAF AMXページとして実装されます。詳細は、「MAF AMXコンテンツによるカスタムSpringboardアプリケーション機能に関する必知事項」を参照してください。

    • カスタム: カスタマイズされたSpringboardを使用する場合に選択します。たとえば、埋込みアプリケーション機能をグリッド・レイアウト・パターンに配置するカスタムSpringboardを作成したり、検索機能や共通タスク(「マイ・レポート」マイ・リードなど)のリストなどのデータを含めることができます。HTMLページまたはMAF AMXページとして実装できるこのアプリケーションは、maf-feature.xmlファイル(ビュー・コントローラ・プロジェクト内にあります)内でアプリケーション機能として宣言されます。詳細は、「アプリケーション機能の表示プロパティの設定」を参照してください。HTMLで記述されたカスタマイズされたSpringboardでのナビゲーションの有効化については、「ローカルHTMLおよびアプリケーション・コンテナAPI」を参照してください。

      • 機能: スプリングボードとして使用するアプリケーション機能を選択します(図4-4を参照)。

        注意:

        アプリケーション機能をカスタムSpringboardとして指定する場合、MAFのデザインタイムによって、「ナビゲーション・バーに表示」および「Springboardに表示」オプションをfalseに設定することが求められます。これにより、ページがユーザーによってナビゲーション・バーまたはSpringboardから起動されるアプリケーション機能としてではなく、カスタムSpringboardとして動作します。

        図4-4 カスタムSpringboardとしてのアプリケーション機能の選択

        この図は周囲のテキストで説明しています
  2. 「アプリケーションの起動時にSpringboardを表示」を選択して、MAFアプリケーションの起動後にエンド・ユーザーに対してSpringboardを表示できるようにします。(このオプションは、「デフォルト」または「カスタム」オプションでのみ使用できます。)

  3. 「スプリングボード・トグル・ボタンの表示」を選択して、スプリングボードのボタンを表示できるようにします(図4-5を参照)。このボタンはアプリケーション機能内に表示されます。図4-2では、アプリケーション機能のコンテキスト内にこのボタンが表示されています。このオプションは、「デフォルト」または「カスタム」オプションでのみ使用できます。

    図4-5 Springboardトグル・ボタン

    この図は周囲のテキストで説明しています

4.2.3 Springboardのスライドアウト動作の設定方法

スプリングボードを使用するようにMAFアプリケーションを構成する場合、maf-application.xmlファイルの概要エディタの「アプリケーション」ページでスプリングボードのスライドアウト動作を設定できます。

Springboardのスライドアウト動作を設定するには:

  1. 「Springboardアニメーション」を選択して、「右にスライド」を選択します。Springboardは、「スライドアウト幅」オプションで入力したピクセル数値(またはパーセント)によって指定された領域を占有します。「なし」を選択した場合、Springboardは右からスライドできません(つまり、MAFではこのアクションを有効にするためのアニメーションが提供されません)。Springboardが表示領域全体を占有します。

    注意:

    スライドアウト・オプションは、Springboardの「カスタム」または「デフォルト」オプションを選択した場合のみ適用できます。

  2. 幅を設定します(ピクセル単位)。iOSデバイスのSpringboardのデフォルト幅は320ピクセルです。Androidデバイスでは、デフォルトでSpringboardは画面全体を占有するので、使用可能な幅がすべて占有されます。

    注意:

    Springboardが表示領域全体を占有しない場合は、アクティブなアプリケーション機能が残りの表示領域を占有します。詳細は、「Springboardにアニメーションを設定する場合の処理」を参照してください。

4.2.4 アプリケーション機能の表示順序の設定方法

maf-application.xml概要エディタの「機能参照」ページのアプリケーション機能の表示順序を設定します。

アプリケーション機能の表示順序を設定するには:

  1. maf-application.xmlの概要エディタの「機能参照」ページをクリックします。

  2. 上矢印と下矢印を使用して機能参照の表示順序を調整するか、「機能ID」列の行にあるドロップダウン・リストを使用して機能参照の順序を変更します。最上位のアプリケーション機能が、デフォルトのアプリケーション機能です。このアプリケーションのセキュリティ構成に応じて、MAFではユーザーが匿名でログインして保護されていないコンテンツを表示したり、ユーザーに認証資格証明を提供するように求めることができます。

    注意:

    「機能参照」表の最上位のIDが、MAFアプリケーション内で最初に表示されるアプリケーション機能です。たとえば、WorkBetterサンプル・アプリケーションのダッシュボード・アプリケーション機能を参照してください。

  3. 「ナビゲーション・バーに表示」列および「スプリングボードに表示」列の行のドロップダウン・リストから、「true」または「false」を選択することで、スプリングボードとナビゲーション・バーのアプリケーション機能に対する表示動作を設定します。図4-6は、アプリケーション機能がナビゲーション・バーに表示されなくなるオプションの選択状態を示しています。

    ヒント:

    アプリケーションによってカスタムSpringboardが使用される場合、またはアプリケーション機能がスライディング・ウィンドウとして表示される場合は、これらのオプションをfalseに設定します。

    図4-6 ナビゲーション・オプションの変更

    この図は周囲のテキストで説明しています

    デフォルトでは、Springboardとナビゲーション・バーが表示されます(つまり、これらの属性はtrueに設定されます)。ナビゲーション・バーとSpringboardの両方の属性をfalseに設定すると、アプリケーション機能は最初の位置にある場合のみ表示されるようになります。

    注意:

    Springboardアプリケーションは、ナビゲーション・バー上またはMAFアプリケーションのSpringboard内には表示されないので、カスタムSpringboardアプリケーション機能として使用される機能参照については、「ナビゲーション・バーに表示」および「Springboardに表示」を両方ともfalseに設定する必要があります。

4.3 ナビゲーション・オプションの構成時の処理

Springboardおよびナビゲーション・バーのオプションを設定すると、adfmf:application.xmlファイルの<adfmf:navigation>要素に対して要素の更新や追加が行われます。たとえば、「なし」を選択すると、次の例のように <springboard enabled="false">としてコードが更新されます。

<adfmf:application>
  ...
  <adfmf:navigation>
     <adfmf:navigationBar enabled="true"/>
     <adfmf:springboard enabled="false"/>
  </adfmf:navigation>
</adfmf:application>

ヒント:

デフォルトでは、ナビゲーション・バーは有効ですが、Springboardは有効ではありません。XMLを手動で更新すると、次のようにSpringboardを有効化できます。

<adfmf:application>
  ...
<adfmf:navigation>
    <adfmf:springboard enabled="true"/>
  </adfmf:navigation>
  ...
</adfmf:application>

例4-1は、デフォルトを選択したときに、enabled属性がtrueに設定される様子を示しています。

注意:

Springboardはデバイスの画面全体を占有するので、ナビゲーション・バーとSpringboardは同時には表示されません。

「カスタム」を選択して、スプリングボードとして使用するアプリケーション機能を選択すると、エディタでは<adfmf:navigation>要素(例4-2を参照)が移入されます。id属性は、maf-feature.xmlファイルで定義された、カスタム・スプリングボードとして使用するアプリケーション機能を指しています。

例4-1 デフォルトのSpringboardの表示の有効化

<adfmf:application>
  ...
  <adfmf:navigation>
     <adfmf:navigationBar enabled="true"/>
     <adfmf:springboard enabled="true"/>
  </adfmf:navigation>
</adfmf:application>

例4-2 カスタムSpringboardの構成

<adfmf:navigation>
    <adfmf:springboard enabled="true">
      <adfmf:springboardFeatureReference id="springboard"/>
    </adfmf:springboard>
  </adfmf:navigation>

4.4 Springboardにアニメーションを設定する場合の処理

例4-3は、maf-application.xmlファイルのナビゲーション・ブロックを示しており、ここでは、スプリングボードはスライドアウトし、指定された表示領域(213ピクセル)を占有するように設定されています。

次の行ではアニメーションを無効にしています。

<adfmf:springboard enabled="true" animation="none"/>

次の行では、Springboardが表示領域の左から100ピクセル分を占有するように設定し、アクティブなアプリケーション機能が表示領域の残りの部分を占有できるようにしています。

<adfmf:springboard enabled="true" animation="slideright" width="100px"/>

アニメーション以外に、例4-3は次の処理を示しています。

  • showSpringboardAtStartup属性の使用。アプリケーションの起動時にSpringboardを表示するかどうかを定義します。(デフォルトでは、Springboardは表示されます。)

  • navigationBardisplayHideShowNavigationBarControl属性の使用。

Springboardが表示されないようにするには、enabled属性をfalseに設定します。

例4-3 Springboardアニメーションの構成

<adfmf:navigation>
   <adfmf:navigationBar enabled="true"
                        displayHideShowNavigationBarControl="true"/>
   <!-- default interpretation of width is pixels -->
   <adfmf:springboard enabled="true"
                      animation="slideright"
                      width="213"
                      showSpringbaordAtStartup="true"/>
</adfmf:navigation>

4.5 HTMLコンテンツによるカスタムSpringboardアプリケーション機能に関する必知事項

MAFによって提供されるデフォルトのHTML Springboardページでは、次のテクノロジが使用されています。これらは、カスタマイズしたログイン・ページに含めることもできます。

  • CSS: 色およびレイアウトを定義します。

  • JavaScript: Springboardページ内に埋め込まれた<script>タグには、「ローカルHTMLおよびアプリケーション・コンテナAPI」で説明されているメソッド(Apache Cordova APIをコールする)への参照が含まれます。また、HTMLページはJavaScriptを使用して、コールバックに応答したり、ページ・スワイプを検出します。スワイプ・イベントが検出されたら、JavaScriptでは、スタイル・シートの動的変更によってページ・モーションをアニメートできるようになります。

    HTML(または任意のカスタムHTMLページ)を使用して作成されたSpringboardでは、base.jsライブラリを参照する<script>タグを含めることによって、Apache Cordova APIを活用できます。このライブラリ(または他のJavaScriptライブラリ)の場所を特定するには、まずMAFアプリケーションをデプロイした後、deployディレクトリに格納されたプラットフォーム固有のアーティファクト内にあるwww/jsディレクトリを探します。Androidアプリケーションの場合、www/jsディレクトリは、Androidアプリケーション・パッケージ(.apk)ファイル内にあります。その場所を次に示します。

    application workspace directory/deploy/deployment profile name/deployment profile name.apk/assets/www/js
    

    iOSの場合、このライブラリは次の場所にあります。

    application workspace directory/deploy/deployment profile name/temporary_xcode_project/www/js
    

    詳細は、「MAF APIを使用したカスタムHTML Springboardアプリケーション機能の作成」を参照してください。

  • WebKit: レイアウト間および異なるSpringboardページ間での遷移時に、アイコンのなめらかなアニメーションが提供されます。WebKitレンダリング・エンジンの詳細は、http://www.webkit.org/を参照してください。

HTMLで記述されるSpringboardは、maf-feature.xmlファイルで宣言され、maf-application.xmlファイルで参照されるアプリケーション機能です。

4.6 MAF AMXコンテンツによるカスタムSpringboardアプリケーション機能に関する必知事項

HTMLの場合と同様に、MAF AMXを使用して記述されたSpringboardは、MAFアプリケーションによって参照されるアプリケーション機能です。通常、Springboardはタスク・フローではなく単一のMAF AMXページとして記述されるため、埋込みアプリケーション機能の起動には、gotoFeatureメソッドが使用されます。

注意:

カスタムSpringboardページ(HTMLまたはMAF AMXによって作成されたもの)は、ビュー・コントローラ・プロジェクト内に配置する必要があります。ビュー・コントローラ・プロジェクト内にはmaf-feature.xmlファイルも格納されています。

デフォルトのSpringboard (jdev_install\jdeveloper\jdev\extensions\oracle.maf\libにあるadfmf.default.springboard.jar)は、MAF AMXページであり、機能アーカイブ(FAR) JARファイルにバンドルされ、MAFアプリケーションに含まれる別のFARとともにデプロイされます。JARファイルには、DataBindings.cpxファイルやPageDef.xmlファイルなど、Springboardに関連付けられたすべてのアーティファクトが含まれます。このファイルは、maf-application.xmlファイルのSpringboardオプションで「デフォルト」が選択された後のみ使用できます。このオプションを選択すると、このFARもアプリケーション・クラスパスに追加されます。詳細は、「機能アーカイブ・ファイル(FAR)のデプロイ」を参照してください。

デフォルトのSpringboard (次の例に示すspringboard.amx)は、MAF AMXアプリケーション機能として実装されます。

<?xml version="1.0" encoding="UTF-8" ?>
<amx:view xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xmlns:amx="http://xmlns.oracle.com/adf/mf/amx"
          xmlns:dvtm="http://xmlns.oracle.com/adf/mf/amx/dvt">
   <amx:panelPage id="pp1">
      <amx:facet name="header">
         <amx:outputText value="#{bindings.name.inputValue}" id="ot3"/>
      </amx:facet>
      <amx:listView var="row"  
                    value="#{bindings.features.collectionModel}"
                    fetchSize="#{bindings.features.rangeSize}"
                    id="lv1"
                    styleClass="amx-springboard">
         <amx:listItem showLinkIcon="false"  
                       id="li1"
                       actionListener="#{bindings.gotoFeature.execute}">
            <amx:tableLayout id="tl1"
                             width="100%">
               <amx:rowLayout id="rl1">
                  <amx:cellFormat id="cf11"  
                                  width="46px"
                                  halign="center">
                      <amx:image source="#{row.image}"  
                                 id="i1"
                                 inlineStyle="width:36px;height:36px"/>
                  </amx:cellFormat>
                  <amx:cellFormat id="cf12"  
                                  width="100%"
                                  height="43px">
                     <amx:outputText value="#{row.name}" 
                                     id="ot2"/>
                  </amx:cellFormat>
               </amx:rowLayout>
            </amx:tableLayout>
               <amx:setPropertyListener from="#{row.id}" 
                                        to="#{pageFlowScope.FeatureId}"/>
         </amx:listItem>
      </amx:listView>
   </amx:panelPage>
</amx:view>

図4-7に示すように、MAF AMXファイルでは、リスト・アイテムがMAFアプリケーションの埋込みアプリケーション機能であるリスト・ビューを使用してスプリングボードを定義します。これらのアプリケーション機能は、デプロイ後は、名前と関連アイコンによって表示されます。AdfmfContainerUtilities APIのgotoFeatureメソッドでは、ページのナビゲーション機能が提供されます。特定のアプリケーション機能を表示するこのメソッドの使用の詳細は、「gotoFeature」を参照してください。「リスト・ビューおよびリスト・アイテム・コンポーネントの使用方法」も参照してください。

図4-7 デフォルトのSpringboard

この図は周囲のテキストで説明しています

MAFでは、ApplicationFeaturesデータ・コントロール内にカスタムSpringboardを作成(またはデフォルトのSpringboardを拡張)するための基本ツールが提供されています。このデータ・コントロール(図4-8を参照)により、MAFアプリケーションとそのアプリケーション機能の両方を記述する属性のデータ・コレクションを使用して、スプリングボード・ページを宣言的に構築できます。カスタムSpringboardページの例は、APIDemoサンプル・アプリケーションを参照してください。このアプリケーション(およびMAFに付属の他のサンプル)の詳細は、「サンプルのMAFアプリケーション」を参照してください。

図4-8 ApplicationFeaturesデータ・コントロール

この図は周囲のテキストで説明しています

ApplicationFeaturesデータ・コントロールでは、次のパッケージのAdfmfContainerUtilitiesクラスによって提供される、MAFアプリケーションにナビゲーションを実装するメソッドを公開します。

oracle.adfmf.framework.api

表4-1に、ApplicationFeaturesデータ・コントロールからドラッグしてMAF AMXページ上にドロップ可能な、MAFアプリケーションのナビゲーションに対応したメソッドをいくつか示します。

データ・コントロールの使用の詳細は、「MAF AMXでのバインディングの使用とデータ・コントロールの作成」を参照してください。AdfmfContainerUtilitiesクラスの詳細は、Oracle Mobile Application Framework Java APIリファレンスを参照してください。


表4-1 アプリケーション機能メソッド

メソッド 説明

gotoDefaultFeature

デフォルトのアプリケーション機能に移動します。

gotoFeature

このメソッドに渡されたパラメータによって指定される特定のアプリケーションに移動します。

gotoPreferences

プリファレンス・ページに移動します。

gotoSpringboard

Springboardに移動します。

hideNavigationbar

ナビゲーション・バーを非表示にします。

showNavigationbar

ナビゲーション・バーを表示します(非表示になっている場合)。

resetFeature

このメソッドに渡されたパラメータによって指定されるアプリケーション機能をリセットします。

hideSpringboard

Springboardを非表示にします。

showSpringboard

Springboardを表示します。

toggleSpringboard

Springboardの表示と非表示を切り替えます。


4.7 Springboardの実行時の動作に関する必知事項

「アプリケーションの起動時にSpringboardを表示」オプションを選択して、スライドアウト幅を画面の最大サイズに定義すると、MAFでは、起動時にバックグラウンドでデフォルトのアプリケーション機能がロードされます。MAFアプリケーションが休止している場合、MAFはSpringboardを非表示にします。

4.8 Androidの戻るボタンを使用したMAFアプリケーションの移動

エンド・ユーザーは、Androidシステムの戻るボタンを使用してMAFアプリケーション上で後ろに戻ることができます。

図4-9は、Androidのナビゲーション・バーまたはAndroidデバイス自体に表示されるAndroidシステムの戻るボタンを示しています。図4-9は、このボタンが表示されるAndroid 4.xおよびAndroid 5.xバージョンのナビゲーション・バーを示しています。

図4-9 Androidの戻るボタン

このイメージについては周囲のテキストで説明しています。

図4-10は、Billingアプリケーション機能の「Billing Page 3」ページまで、エンド・ユーザーが3つのアプリケーション機能(Customer、SalesおよびBilling)間をナビゲートするMAFアプリケーションのナビゲーション・フローを示しています。

図4-10 MAFアプリケーションのアプリケーション機能とページ間のナビゲーション・フロー

このイメージについては周囲のテキストで説明しています。

エンド・ユーザーのAndroidシステムの戻るボタンのタップに応答するMAFアプリケーションのデフォルトの動作:

  • 「Billing Page 3」は「Billing Page 2」にナビゲート

  • 「Billing Page 2」は「Billing Page 1」にナビゲート

  • 「Billing Page 1」はMAFアプリケーションを休止

エンド・ユーザーは、アクション属性の値が__backのUIとして公開されるMAF AMXボタンのかわりに、Androidシステムの戻るボタンのタップを選択できます。動作は、どちらのシナリオでも同じです。たとえば、Billingアプリケーション機能の3ページのすべてで、アクション属性に__backを設定したボタン・コンポーネントが公開されているものと仮定します。このシナリオでは、前に戻るナビゲーション・フローは、ページ3からページ2、ページ2からページ1、そしてエンド・ユーザーがページ1のコマンド・ボタンをタップした場合に、MAFアプリケーションが休止状態になります。

エンド・ユーザーによるAndroidシステムの戻るボタンのタップの応答となるデフォルトのMAFアプリケーションの動作をオーバーライドして、MAFアプリケーションの他の場所にナビゲートしたり、または前に戻る前になんらかのロジックを実行したりできます。MAFでは、JavaScript APIおよびMAF AMXシステムのアクション動作(systemActionBehavior)コンポーネントが提供されており、MAFアプリケーションのデフォルトの動作のオーバーライドに使用できます。systemActionBehaviorコンポーネントは、アプリケーション機能のコンテンツがMAF AMXページの場合のみ使用できます。JavaScriptは、MAF AMXページ、ローカルのHTML、またはリモートのURLを使用するアプリケーション機能のデフォルトの動作のオーバーライドに使用できます。JavaScriptのregisterSystemActionOverrideメソッドを使用すると、エンド・ユーザーがAndroidの戻るボタンをタップしたときに起動されるハンドラを登録できます。起動されるハンドラを削除するには、JavaScriptのunregisterSystemActionOverrideメソッドを使用します。どちらのメソッドもadf.mf.apiネームスペースにあります。詳細は、Oracle Mobile Application Framework JSDocリファレンスを参照してください。

systemActionBehaviorコンポーネントの使用の詳細は、「Androidシステムの戻るボタンの動作を構成する方法」を参照してください。

MAF 2.2.0より前のリリースを使用して作成されたMAFアプリケーションでは、エンド・ユーザーによるAndroidシステムの戻るボタンのタップの応答となるデフォルトのMAFアプリケーションの動作は、アプリケーション機能の間で前に戻る動作でした。これは、たとえば図4-9で、エンド・ユーザーはBillingアプリケーション機能からSalesアプリケーション機能にナビゲートし、MAFアプリケーションを休止する前に、Customerアプリケーション機能にまでナビゲートすることを意味します。このリリースのMAFを使用して作成するMAFアプリケーションでは、『Oracle Mobile Application Frameworkのインストール』のAndroidの戻るボタンを使用してMAFアプリケーションをナビゲートする場合のレガシー動作の保持に関する項で説明されているように、maf-config.xmlファイルでパラメータを構成することで、このレガシーな動作を実装できます。このレガシーな動作を実装することにより、MAFアプリケーションでは、ここで説明したsystemActionBehaviorコンポーネントおよびJavaScriptのregisterSystemActionOverrideメソッドの使用が無視されます。

4.8.1 Androidシステムの戻るボタンの動作を構成する方法

システム・アクション動作(systemActionBehavior)操作によりAndroidデバイスの戻るボタンのデフォルトの動作をオーバーライドして、タスク・フローで定義されたMAF AMXアプリケーション機能の前のページに移動する前に、カスタム・ロジックの処理を実行できます。

図4-11に示すように、JDeveloperでは、システムのアクション動作は「コンポーネント」ウィンドウの「操作」の下にあります。

図4-11 「コンポーネント」ウィンドウのシステムのアクション動作

この図は周囲のテキストで説明しています

次の例は、MAF AMXファイルで定義されたsystemActionBehavior要素を示しています。この要素は、view要素の子にのみできます。

<amx:view xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xmlns:amx="http://xmlns.oracle.com/adf/mf/amx"
          xmlns:dvtm="http://xmlns.oracle.com/adf/mf/amx/dvt">
   <amx:systemActionBehavior id="sab1"
                             type="back"
                             actionListener="#{MyBean.onBackButton}"
                             action="#{MyBean.getNavAction}"/>
   ...
</amx:view>

前述の例のsystemActionBehavioractionListenerおよびaction属性は、次の例に示すようにJava Beanメソッドを起動します。onBackButtonメソッドにより、戻るナビゲーションが発生する前にカスタム・ロジックの処理が実行されます。getNavActionメソッドにより、戻る動作が無効になります。

public class MyBean {

   public void onBackButton() {
      // do processing
   }

   public String getNavAction() {
      return "";
   }
}

前述の例では、getNavActionメソッドから、戻るナビゲーションを有効にする"__back"文字列が返される可能性があります。この場合、MAF AMXページが読み込まれるときにこのアクションが解決されます。Androidデバイスでシステムの戻るボタンが押されるたびにコールされるわけではありません。

システムのアクション動作のMAF AMXコンポーネントおよびJava Beanに加え、JavaScriptを使用してAndroidシステムの戻るボタンの動作を構成できます。次の例は、アプリケーション機能に含まれるfeature.jsファイルを示しています。これは、戻るナビゲーションが発生する前に実行されるなんらかの処理を可能にする、Androidシステムの戻るボタンのハンドラを定義しています。

handleSystemBack = function()
{
   // do some processing, invoke a Java bean
   adf.mf.api.amx.doNavigation("__back");
};
adf.mf.api.registerSystemActionOverride("back", handleSystemBack);

次の例に示すハンドラでは、戻るナビゲーションの発生が止められます。

handleSystemBack = function()
{
   // do nothing
};
adf.mf.api.registerSystemActionOverride("back", handleSystemBack);

次の例に示すハンドラでは、標準の戻るナビゲーションが可能になります。

handleSystemBack = function() 
{
   adf.mf.api.amx.doNavigation("__back");
};
adf.mf.api.registerSystemActionOverride("back", handleSystemBack);

4.9 MAFアプリケーションでのスライディング・ウィンドウの作成

アプリケーション機能をスライディング・ウィンドウとしてレンダリングできます。これにより、ナビゲーション・バーまたはSpringboard内に表示される他のアプリケーション機能と同時にアプリケーション機能が表示されます。スライディング・ウィンドウは、アプリケーション内に常に存在しているコンテンツ(グローバル・ツール・バーなど)を表示するために使用したり、一時的な(ポップアップ)コンテンツ(ヘルプ・ウィンドウなど)を表示するために使用できます。

図4-12は、SlidingWindowサンプル・アプリケーションのSlidingDrawerアプリケーション機能を示しています(「サンプルのMAFアプリケーション」を参照)。このアプリケーション機能は、他のアプリケーション機能に重なりながら、アプリケーション画面の右側に表示されます。

図4-12 他のアプリケーション機能に重なるスライディング・ウィンドウ

このイメージについては周囲のテキストで説明しています。

アプリケーション機能をスライディング・ウィンドウとしてレンダリングする場合、Show on Navigation BarプロパティおよびShow on Springboardプロパティをfalseに設定する必要があります。

スライディング・ウィンドウを作成するには、oracle.adfmf.framework.api.AdfmfSlidingWindowOptionsクラスとAdfmfSlidingWindowUtilitiesクラスの組合せを、アプリケーション内のマネージドBeanまたはライフサイクル・リスナーから起動します。

次の例は、SlidingWindowサンプル・アプリケーションで、LifeCycleListenerImpl.javaactivateメソッドから、図4-12に示すスライディング・ウィンドウを作成する方法を示しています。スライディング・ウィンドウの作成後、SlidingWindowサンプル・アプリケーションではSlidingDrawerBean.javaを使用してスライディング・ウィンドウの表示を管理します。

...
public void activate()  {
    // The argument you pass to the create method is the refId of the
    // feature in the maf-application.xml. For example,
    // <adfmf:featureReference id="fr4" refId="SlidingDrawer" showOnNavigationBar="false" 
    // showOnSpringboard="false"/>
      String slidingWindowDrawer = AdfmfSlidingWindowUtilities.create("SlidingDrawer");  
 
    // Note also that both showOn... values must be set to false in the config 
    // file for the sliding window to appear
      
      SlidingDrawerBean.slidingDrawerWindow=slidingWindowDrawer;
      AdfmfSlidingWindowOptions options = new AdfmfSlidingWindowOptions();
      options.setDirection(AdfmfSlidingWindowOptions.DIRECTION_RIGHT);
      options.setStyle(AdfmfSlidingWindowOptions.STYLE_OVERLAID);
      options.setSize("0");
     
  }

ここで説明しているSlidingWindowサンプル・アプリケーション全体にアクセスする方法は、「サンプルのMAFアプリケーション」を参照してください。

AdfmfSlidingWindowUtilitiesおよびAdfmfSlidingWindowOptionsの詳細は、Oracle Mobile Application Framework Java APIリファレンスを参照してください。ライフサイクル・リスナーの使用方法の詳細は、「MAFアプリケーションでのライフサイクル・リスナーの使用方法」を参照してください。

4.10 MAFアプリケーションでのカスタムURLスキームの使用

カスタムURLスキームを使用して、他のアプリケーションからネイティブ・アプリケーションを起動できます。

別のアプリケーションからMAFモバイル・アプリケーションを起動するには、次の手順を実行します。

  1. カスタムURLスキームを登録します。このURLスキームは、maf-application.xmlファイルの概要エディタで、「URLスキーム」フィールドを使用して構成します。このスキームを持つURLを使用すれば、MAFモバイル・アプリケーションを起動し、そのアプリケーションにデータを渡すことができます。
  2. アプリケーション・コントローラ・プロジェクトで、URLを通知されるカスタムURLイベント・リスナー・クラス(CustomURLEventListenerなど)を作成します。このクラスには、イベント・リスナーを定義するoracle.adfmf.framework.event.EventListenerインタフェースを実装する必要があります。oracle.adfmf.framework.event.EventListenerインタフェースの詳細は、Oracle Mobile Application Framework Java APIリファレンスを参照してください。

    MAFモバイル・アプリケーションの起動に使用されるURLで呼び出されるonMessage(Event e)メソッドをオーバーライドおよび実装します。Eventオブジェクトを使用して、URLペイロードおよびアプリケーションの状態に関する有用な情報を取得できます。URLペイロードを取得するには、Event.getPayloadメソッドを使用します。URLイベント発生時にアプリケーションの状態を取得するには、Event.getApplicationStateメソッドを使用します。詳細は、Oracle Mobile Application Framework Java APIリファレンスEventクラスを参照してください。

  3. アプリケーション・ライフサイクル・イベント・リスナー(ALCL)クラスを登録します。

    詳細は、「MAFアプリケーションでのライフサイクル・リスナーの使用方法」を参照してください。

    ALCLクラスのstartメソッド内の、カスタムURLイベントのソースを表すEventSourceオブジェクトを取得します。

    EventSource openURLEventSource = EventSourceFactory.getEventSource(EventSourceFactory.OPEN_URL_EVENT_SOURCE_NAME);
    

    カスタムURLイベント・リスナー・クラスのオブジェクトを作成し、イベント・ソースに追加します。

    openURLEventSource.addListener(new CustomURLEventListener());
    

MAFアプリケーションでは、次の方法を使用して別のネイティブ・アプリケーションを起動することができます。

  • ネイティブ・アプリケーションによって登録されたカスタムURLスキームで始まるURLを持つMAF AMXページでamx:goLinkを使用します。次に例を示します。

    <amx:goLink text="Open App" id="gl1" url="mycustomurlscheme://somedata"/>
    
  • ネイティブ・アプリケーションによって登録されたカスタムURLスキームで始まるhref属性値を持つHTMLページで、HTMLリンク要素を使用します。次に例を示します。

    <a href="mycustomurlscheme://somedata">Open App</a>
    

ネイティブ・アプリケーションを起動するためにMAFアプリケーションが使用するカスタムURLスキームを、maf-application.xmlファイルの概要エディタの「セキュリティ」ページにある「許可されるスキーム」リストに追加します。この変更は、アプリケーションが他のアプリケーションの起動に使用するすべてのURLスキームを宣言しなければならないというiOS 9の要件に対処するものです。図4-13に示すように、「セキュリティ」ページの「許可されるスキーム」セクションの「追加」アイコンをクリックして、カスタムURLスキームを追加します。

図4-13 別のアプリケーションを起動するためにMAFアプリケーションが使用するカスタムURLスキームの登録

このイメージについては周囲のテキストで説明しています