プライマリ・コンテンツに移動
Oracle Enterprise Pack for Eclipse Oracle Mobile Application Framework (OEPE Edition)でのモバイル・アプリケーションの開発
リリース2.3.0
E77213-01
  目次へ移動
目次

前
 
次
 

4 MAFアプリケーション機能の構成

この章では、アプリケーション機能について紹介し、それをMAFアプリケーションに追加する方法や、アプリケーション機能を構成してスライディング・ウィンドウとしてレンダリングする方法について説明します。

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

4.1 MAFアプリケーション機能の概要

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

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

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

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

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

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

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

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

MAFアプリケーションのデフォルトの動作では、アプリケーション起動時にナビゲーション・バーが表示されます。MAFアプリケーション・エディタでのこのデフォルト動作は、変更可能です。

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

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

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

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

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

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

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

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

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

4.2.2 スプリングボードの表示動作の設定方法

デフォルトでは、MAFアプリケーションはアプリケーション起動時にSpringboardを表示しません。MAFアプリケーション・エディタでのこのデフォルト動作は、変更可能です。

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

  1. MAFアプリケーション・エディタで「ナビゲーション」を選択し、「ナビゲーション」タブでスプリングボードの表示を選択します。

  2. MAFで提供されているデフォルトのスプリングボードが表示されます。デフォルトのSpringboardは、MAF AMXページとして実装されます。

  3. アプリケーションの起動時に表示を選択して、MAFアプリケーションの起動後にエンド・ユーザーに対してスプリングボードを表示できるようにします。

  4. スプリングボード・ボタンの表示を有効にするには、トグル・ボタンの表示を選択します。図4-4では、アプリケーション機能のコンテキスト内にこのボタンが表示されています。

    図4-4 スプリングボード・トグル・ボタン

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

4.2.3 スプリングボードのスライドアウト動作の設定方法

スプリングボードを使用するようにMAFアプリケーションを構成する場合、MAFアプリケーション・エディタでスプリングボードのスライドアウト動作を設定できます。

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

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

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


    注意:

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

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

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

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

  1. MAFアプリケーション・エディタで、登録された機能を選択します。

  2. 表示される上矢印と下矢印を使用して、登録された機能の表示順序を配置します。最上位のアプリケーション機能が、デフォルトのアプリケーション機能です。このアプリケーションのセキュリティ構成に応じて、MAFではユーザーが匿名でログインして保護されていないコンテンツを表示したり、ユーザーに認証資格証明を提供するように求めることができます。


    ヒント:

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

  3. 「ナビゲーション・バーに表示」および「スプリングボードに表示」を使用して、スプリングボードおよびナビゲーション・バーでのアプリケーション機能の表示動作を設定します。図4-5は、アプリケーション機能がナビゲーション・バーに表示されなくなるオプションの選択状態を示しています。

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

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

スプリングボードおよびナビゲーション・バーは、デフォルトで表示されます。ナビゲーション・バーとスプリングボードのオプションがどちらも選択されていない場合、アプリケーション機能は、最初の位置に配置されているときにのみ表示されます。


注意:

スプリングボード・アプリケーションは、ナビゲーション・バー上またはMAFアプリケーションのスプリングボード内には表示されないため、カスタム・スプリングボード・アプリケーション機能として使用される機能参照については、「ナビゲーション・バーに表示」と「スプリングボードに表示」の両方の選択を解除する必要があります。

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

スプリングボードおよびナビゲーション・バーのオプションを設定すると、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-5は、オプションを選択すると、有効な属性がどのようにtrueに設定されるかを示しています。


ヒント:

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

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

例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 スプリングボードにアニメーションを設定する場合の処理

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

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

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

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

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

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

  • 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コンテンツによるカスタム・スプリングボード・アプリケーション機能に関する必知事項

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

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

  • JavaScript: スプリングボード・ページ内に埋め込まれた<script>タグには、付録B「ローカル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

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

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

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

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

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


注意:

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

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

図4-6 デフォルトのスプリングボード

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

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

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

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

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

oracle.adfmf.framework.api

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

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

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

メソッド 説明

gotoDefaultFeature

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

gotoFeature

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

gotoPreferences

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

gotoSpringboard

Springboardに移動します。

hideNavigationbar

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

showNavigationbar

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

resetFeature

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

hideSpringboard

スプリングボードを非表示にします。

showSpringboard

スプリングボードを表示します。

toggleSpringboard

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


4.7 スプリングボードの実行時の動作に関する必知事項

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

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

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

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

図4-8 Androidの戻るボタン

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

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

図4-9 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コンポーネントの使用の詳細は、第4.8.1項「Androidシステムの戻るボタンの動作を構成する方法」を参照してください。

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

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

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

OEPEでは、システムのアクション動作は、図4-10に示すように、「パレット」ウィンドウのMAF AMXの下にあります。

図4-10 「パレット」のシステムのアクション動作

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

次の例は、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メソッドにより、戻る動作が無効になります。

システムのアクション動作の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-11は、SlidingWindowサンプル・アプリケーションのSlidingDrawerアプリケーション機能を示しています(付録E「サンプルのMAFアプリケーション」を参照)。このアプリケーション機能は、他のアプリケーション機能に重なりながら、アプリケーション画面の右側に表示されます。

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

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

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

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

次の例は、SlidingWindowサンプル・アプリケーションで、LifeCycleListenerImpl.javaのactivateメソッドから、図4-11に示すスライディング・ウィンドウを作成する方法を示しています。スライディング・ウィンドウの作成後、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サンプル・アプリケーション全体にアクセスする方法は、付録E「サンプルのMAFアプリケーション」を参照してください。

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

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

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

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

  1. カスタムURLスキームを登録します。このURLスキームは、MAFアプリケーション・エディタの「セキュリティ」タブで「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)クラスを登録します。

    詳細は、第10章「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アプリケーション・エディタの「セキュリティ」ページの「許可されるスキーム」リストに追加します。この変更点は、アプリケーションが他のアプリケーションの起動に使用するURLスキームを宣言するというiOS 9の要件に対応しています。図4-12に示すように、「セキュリティ」ページの「許可されるスキーム」セクションの「追加」アイコンをクリックして、カスタムURLスキームを追加します。

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

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