4 アプリケーションのナビゲーションの構成
この章の内容は次のとおりです。
MAFアプリケーションの表示動作の概要
スプリングボードとナビゲーション・バーの表示動作を制御するよう、MAFアプリケーションを構成できます。
構成は次の方法で行えます。
-
Springboardとナビゲーション・バーを表示または非表示にすることで、モバイル・デバイスのインタフェースを最適に使用できるようになります。これらのオプションは、ナビゲーション・バーのデフォルトの表示動作をオーバーライドします。ナビゲーション・バーは、アプリケーション機能によって別の状態に指定されていないかぎり、デフォルトで表示されます。
-
Springboardを右からスライドできるようにします。デフォルトでは、Springboardは表示全体を占有せず、そのかわりに左からスライドして、アクティブ・コンテンツ(ナビゲーション・バーの「ホーム」ボタンとアプリケーション機能を含む)を右へプッシュします。
アプリケーションのナビゲーションの構成
maf-application.xmlファイルの概要エディタの「アプリケーション」ページに表示されるナビゲーション・オプションを使用して、アプリケーションのナビゲーション・バーを構成できます。
図に示すように、「アプリケーション」ページの「ナビゲーション」のオプションを使用して、ナビゲーション・バーを表示または非表示にしたり、アプリケーションによって使用されるスプリングボードのタイプを選択したり、ユーザーがアプリケーションをめくるように見ていくときのスプリングボードの反応方法を定義できます。
ナビゲーション・バーの表示動作の設定方法
MAFアプリケーションのデフォルトの動作では、アプリケーション起動時にナビゲーション・バーが表示されます。
このデフォルトの動作は、maf-application.xmlファイルの概要エディタの「アプリケーション」ページで変更できます。
ナビゲーション・バーの表示動作を設定するには:
-
次の図に示すように、「アプリケーションの起動時にナビゲーション・バーを表示」を選択し、MAFアプリケーションで、スプリングボードではなくナビゲーション・バーがデフォルトで表示されるようにします。
このオプションをオフにすると、アプリケーションの起動時にナビゲーション・バーが表示されなくなり、ユーザーにはSpringboardがナビゲーションの唯一の方法として提示されます。ナビゲーション・バーはSpringboardと同じ目的を果たすものなので、これを非表示にすることで冗長な機能を削除できる場合もあります。
-
「ナビゲーション・バー・トグル・ボタンの表示」を選択して、選択したアプリケーション機能のコンテンツが表示されているときにはナビゲーション・バーを非表示にします。図はこのオプションを示しています。図4-2に示されているナビゲーション・バーを、アプリケーション機能のコンテンツによって非表示にする方法を示しています。
このオプションはデフォルトで選択されており、アプリケーション機能によって表示/非表示状態が指定されていなければ、ナビゲーション・バーはデフォルトで表示されます。
Springboardの表示動作の設定方法
デフォルトでは、MAFアプリケーションはアプリケーション起動時にSpringboardを表示しません。このデフォルトの動作は、maf-application.xmlファイルの概要エディタの「アプリケーション」ページで変更できます。
Springboardの表示動作を設定するには:
-
Springboardのタイプを選択します(存在する場合)。
-
なし: アプリケーションにSpringboardを表示しない場合は、このオプションを選択します。
-
デフォルト: MAFによって提供されるデフォルトのSpringboardを表示する場合に選択します。デフォルトのスプリングボードは、MAF AMXページとして実装されます。「MAF AMXコンテンツによるカスタムSpringboardアプリケーション機能に関する必知事項」を参照してください。
-
カスタム: カスタマイズされたSpringboardを使用する場合に選択します。たとえば、埋込みアプリケーション機能をグリッド・レイアウト・パターンに配置するカスタムSpringboardを作成したり、検索機能や共通タスク(「マイ・レポート」、マイ・リードなど)のリストなどのデータを含めることができます。HTMLページまたはMAF AMXページとして実装できるこのアプリケーションは、
maf-feature.xmlファイル(ビュー・コントローラ・プロジェクト内にあります)内でアプリケーション機能として宣言されます。「アプリケーション機能の表示プロパティの設定」を参照してください。HTMLで記述されたカスタマイズされたSpringboardでのナビゲーションの有効化については、「ローカルHTMLおよびアプリケーション・コンテナAPI」を参照してください。-
機能: 次の図に示すように、スプリングボードとして使用するアプリケーション機能を選択します。
注意:
アプリケーション機能をカスタム・スプリングボードとして指定する場合、MAFのデザインタイムによって、「ナビゲーション・バーに表示」および「スプリングボードに表示」オプションを
falseに設定することが求められます。これにより、ページがユーザーによってナビゲーション・バーまたはSpringboardから起動されるアプリケーション機能としてではなく、カスタムSpringboardとして動作します。
-
-
-
「アプリケーションの起動時にSpringboardを表示」を選択して、MAFアプリケーションの起動後にエンド・ユーザーに対してSpringboardを表示できるようにします。(このオプションは、「デフォルト」または「カスタム」オプションでのみ使用できます。)
-
図に示すように、「スプリングボード・トグル・ボタンの表示」を選択して、スプリングボードのボタンを表示できるようにします。このボタンはアプリケーション機能内に表示されます。図4-2では、アプリケーション機能のコンテキスト内にこのボタンが表示されています。このオプションは、「デフォルト」または「カスタム」オプションでのみ使用できます。
Springboardのスライドアウト動作の設定方法
スプリングボードを使用するようにMAFアプリケーションを構成する場合、maf-application.xmlファイルの概要エディタの「アプリケーション」ページでスプリングボードのスライドアウト動作を設定できます。
Springboardのスライドアウト動作を設定するには:
-
「Springboardアニメーション」を選択して、「右にスライド」を選択します。Springboardは、「スライドアウト幅」オプションで入力したピクセル数値(またはパーセント)によって指定された領域を占有します。「なし」を選択した場合、Springboardは右からスライドできません(つまり、MAFではこのアクションを有効にするためのアニメーションが提供されません)。Springboardが表示領域全体を占有します。
注意:
スライドアウト・オプションは、Springboardの「カスタム」または「デフォルト」オプションを選択した場合のみ適用できます。
-
幅を設定します(ピクセル単位)。iOSデバイスのSpringboardのデフォルト幅は320ピクセルです。Androidデバイスでは、デフォルトでSpringboardは画面全体を占有するので、使用可能な幅がすべて占有されます。
注意:
Springboardが表示領域全体を占有しない場合は、アクティブなアプリケーション機能が残りの表示領域を占有します。「Springboardにアニメーションを設定する場合の処理」を参照してください。
アプリケーション機能の表示順序の設定方法
maf-application.xml概要エディタの「機能参照」ページのアプリケーション機能の表示順序を設定します。
アプリケーション機能の表示順序を設定するには:
-
maf-application.xmlの概要エディタの
「機能参照」ページをクリックします。 -
上矢印と下矢印を使用して機能参照の表示順序を調整するか、「機能ID」列の行にあるドロップダウン・リストを使用して機能参照の順序を変更します。最上位のアプリケーション機能が、デフォルトのアプリケーション機能です。このアプリケーションのセキュリティ構成に応じて、MAFではユーザーが匿名でログインして保護されていないコンテンツを表示したり、ユーザーに認証資格証明を提供するように求めることができます。
注意:
「機能参照」表の最上位のIDが、MAFアプリケーション内で最初に表示されるアプリケーション機能です。たとえば、WorkBetterサンプル・アプリケーションのダッシュボード・アプリケーション機能を参照してください。
-
「ナビゲーション・バーに表示」列および「Springboardに表示」列の行のドロップダウン・リストから、 「true」または「false」を選択することで、Springboardとナビゲーション・バーのアプリケーション機能に対する表示動作を設定します。図はアプリケーション機能がナビゲーション・バーに表示されなくなるオプションの選択状態を示しています。ヒント:
アプリケーションによってカスタム・スプリングボードが使用される場合、またはアプリケーション機能がスライディング・ウィンドウとして表示される場合は、これらのオプションを
falseに設定します。デフォルトでは、Springboardとナビゲーション・バーが表示されます(つまり、これらの属性は
trueに設定されます)。ナビゲーション・バーとSpringboardの両方の属性をfalseに設定すると、アプリケーション機能は最初の位置にある場合のみ表示されるようになります。注意:
スプリングボード・アプリケーションは、ナビゲーション・バー上またはMAFアプリケーションのスプリングボード内には表示されないので、カスタム・スプリングボード・アプリケーション機能として使用される機能参照については、「ナビゲーション・バーに表示」および「スプリングボードに表示」を両方とも
falseに設定する必要があります。
ナビゲーション・オプションの構成時の処理
Springboardおよびナビゲーション・バーのオプションを設定すると、maf-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>
Springboardにアニメーションを設定する場合の処理
スプリングボードのアニメーションを設定できます。ここでは、スプリングボードはスライドアウトし、指定された表示領域(213ピクセル)を占有するように設定されています
例4-3は、maf-application.xmlファイルのナビゲーション・ブロックを示しています。
次の行ではアニメーションを無効にしています。
<adfmf:springboard enabled="true" animation="none"/>
次の行では、Springboardが表示領域の左から100ピクセル分を占有するように設定し、アクティブなアプリケーション機能が表示領域の残りの部分を占有できるようにしています。
<adfmf:springboard enabled="true" animation="slideright" width="100px"/>
アニメーション以外に、例4-3は次の処理を示しています。
-
showSpringboardAtStartup属性の使用。アプリケーションの起動時にSpringboardを表示するかどうかを定義します。(デフォルトでは、Springboardは表示されます。) -
navigationBarのdisplayHideShowNavigationBarControl属性の使用。
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>
HTMLコンテンツによるカスタムSpringboardアプリケーション機能に関する必知事項
スプリングボードのアプリケーション機能をカスタマイズし、カスタマイズされたログイン・ページを含めることができます。
MAFが提供するデフォルトのHTMLスプリングボード・ページでは、次のテクノロジが使用されます。
-
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
-
WebKit: レイアウト間および異なるSpringboardページ間での遷移時に、アイコンのなめらかなアニメーションが提供されます。WebKitレンダリング・エンジンの詳細は、
http://www.webkit.org/を参照してください。
HTMLで記述されるSpringboardは、maf-feature.xmlファイルで宣言され、maf-application.xmlファイルで参照されるアプリケーション機能です。
MAF AMXコンテンツによるカスタムSpringboardアプリケーション機能に関する必知事項
HTMLの場合と同様に、MAF AMXを使用して記述されたSpringboardは、MAFアプリケーションによって参照されるアプリケーション機能です。
通常、スプリングボードはタスク・フローではなく単一の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ファイルなど、スプリングボードに関連付けられたすべてのアーティファクトが含まれます。このファイルは、maf-application.xmlファイルのスプリングボード・オプションで「デフォルト」が選択された後のみ使用できます。このオプションを選択すると、このFARもアプリケーション・クラスパスに追加されます。FARの詳細は、「機能アーカイブ・ファイル(FAR)のデプロイ」を参照してください。
デフォルトのスプリングボード(次の例に示す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>
次の図に示すように、MAF AMXファイルでは、リスト・アイテムがMAFアプリケーションの埋込みアプリケーション機能であるリスト・ビューを使用してスプリングボードを定義します。これらのアプリケーション機能は、デプロイ後は、名前と関連アイコンによって表示されます。AdfmfContainerUtilities APIのgotoFeatureメソッドでは、ページのナビゲーション機能が提供されます。特定のアプリケーション機能を表示するこのメソッドの使用の詳細は、「gotoFeature」を参照してください。「リスト・ビューおよびリスト・アイテム・コンポーネントの使用方法」も参照してください。
MAFでは、ApplicationFeaturesデータ・コントロール内にカスタムSpringboardを作成(またはデフォルトのSpringboardを拡張)するための基本ツールが提供されています。次の図に示すように、このデータ・コントロールにより、MAFアプリケーションとそのアプリケーション機能の両方を記述する属性のデータ・コレクションを使用して、スプリングボード・ページを宣言的に構築できます。カスタムSpringboardページの例は、APIDemoサンプル・アプリケーションを参照してください。このアプリケーション(およびMAFに付属の他のサンプル)の詳細は、「サンプルのMAFアプリケーション」を参照してください。
ApplicationFeaturesデータ・コントロールでは、次のパッケージのAdfmfContainerUtilitiesクラスによって提供される、MAFアプリケーションにナビゲーションを実装するメソッドを公開します。
oracle.adfmf.framework.api
表4-1に、ApplicationFeaturesデータ・コントロールからドラッグしてMAF AMXページ上にドロップ可能な、MAFアプリケーションのナビゲーションに対応したメソッドをいくつか示します。
AdfmfContainerUtilitiesクラスの詳細は、Oracle Mobile Application Framework Java APIリファレンスを参照してください。
表4-1 アプリケーション機能メソッド
| メソッド | 説明 |
|---|---|
|
|
デフォルトのアプリケーション機能に移動します。 |
|
|
このメソッドに渡されたパラメータによって指定される特定のアプリケーションに移動します。 |
|
|
プリファレンス・ページに移動します。 |
|
|
Springboardに移動します。 |
|
|
ナビゲーション・バーを非表示にします。 |
|
|
ナビゲーション・バーを表示します(非表示になっている場合)。 |
|
|
このメソッドに渡されたパラメータによって指定されるアプリケーション機能をリセットします。 |
|
|
スプリングボードを非表示にします。 |
|
|
スプリングボードを表示します。 |
|
|
Springboardの表示と非表示を切り替えます。 |
Springboardの実行時動作に関する必知事項
「アプリケーションの起動時にSpringboardを表示」オプションを選択して、スライドアウト幅を画面の最大サイズに定義すると、MAFでは、起動時にバックグラウンドでデフォルトのアプリケーション機能がロードされます。
MAFアプリケーションが休止している場合、MAFはSpringboardを非表示にします。
MAFアプリケーションのアプリケーション機能の再起動
MAFでは、AMXアクションおよびAPIが提供されており、コンテンツ・タイプがMAF AMXページまたはMAFタスク・フローではないアプリケーション機能を再起動するのに使用できます(MAF AMXアプリケーション機能)。
MAF AMXアプリケーション機能を再起動すると、アプリケーション機能の開始に戻ります。タスク・フローを備えたアプリケーション機能の場合、タスク・フローが再起動されます。
-
起動アクションを起動するボタン(
amxCommandButton action="__start")など、UIコマンド・コンポーネントを公開します。 -
AdfmfContainerUtilitiesクラスで公開されるいずれかのメソッドを起動するコードを作成します。たとえば、AdfmfContainerUtilities.queueNavigationRestart("feature1", true);は、feature1アプリケーション機能を再起動し、アプリケーション機能の開始に進みます。
resetFeatureは再起動よりも時間がかかるため、機能リセット(AdfmfContainerUtilities.resetFeature)の代わりにアプリケーション機能の再起動を使用します。アプリケーション機能の再起動では、認証済のエンド・ユーザーのログアウトなどは実行されません。
また、MAFでは、oracle.maf.api.feature.FeatureLifeCycleListenerインタフェースを実装するJavaクラスを記述することにより、アプリケーション機能の再起動前後にコードを実行できるAPIが提供されます。ライフサイクル・リスナーの詳細は、「MAFアプリケーションでのライフサイクル・リスナーの使用方法」を参照してください。
アプリケーション機能の再起動方法
__startアクションを起動するコマンド・コンポーネントまたはAdfmfContainerUtilities.queueNavigationRestartを起動するマネージドBeanメソッドを構成します。
アプリケーション機能の再起動時の処理内容
-
タスク・フロー・コール・スタック
-
pageFlowScopeインスタンス
-
データ・コントロール・コンテキストおよび含まれるデータ・コントロールとプロバイダ
-
アプリケーション機能の現在のviewScope
-
アプリケーション機能の現在のバインド・コンテナ
-
戻るボタン・ナビゲーションに使用されているアプリケーション機能の現在のナビゲーション履歴
-
機能のWebビューからの履歴
JavaScriptキャッシュはJavaScriptレイヤーで消去されます。再起動では、JavaScriptまたはCordovaプラグインはWebビューに再ロードされません。よって、再ロードによるコストは発生しません。クラスの静的フィールドに状態を格納した場合、クラスは再ロードされません。機能のリセットの場合、クラスは再ロードされますが、機能の再起動ではクラスは再ロードされません。
Androidの戻るボタンを使用したMAFアプリケーションの移動
エンド・ユーザーは、Androidシステムの戻るボタンを使用してMAFアプリケーション上で後ろに戻ることができます。
図は、Androidのナビゲーション・バーまたはAndroidデバイス自体に表示されるAndroidシステムの戻るボタンを示しています。また、このボタンが表示されるAndroid 4.xおよびAndroid 5.xバージョンのナビゲーション・バーも示しています。
図4-10は、Billingアプリケーション機能の「Billing Page 3」ページまで、エンド・ユーザーが3つのアプリケーション機能(Customer、SalesおよびBilling)間をナビゲートする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ネームスペースにあります。JavaScriptの詳細は、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メソッドの使用が無視されます。
Androidシステムの戻るボタンの動作を構成する方法
システム・アクション動作(systemActionBehavior)操作により、Androidデバイスの戻るボタンのデフォルトの動作をオーバーライドして、タスク・フローで定義されたMAF AMXアプリケーション機能の前のページに移動する前に、カスタム・ロジックの処理を実行できます。
次の例は、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>
前述の例のsystemActionBehaviorのactionListenerおよび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);MAFアプリケーションでのスライディング・ウィンドウの作成
アプリケーション機能をスライディング・ウィンドウとしてレンダリングできます。これにより、ナビゲーション・バーまたはSpringboard内に表示される他のアプリケーション機能と同時にアプリケーション機能が表示されます。
スライディング・ウィンドウは、アプリケーション内に常に存在しているコンテンツ(グローバル・ツール・バーなど)を表示するために使用したり、一時的な(ポップアップ)コンテンツ(ヘルプ・ウィンドウなど)を表示するために使用できます。図は、SlidingWindowサンプル・アプリケーションのSlidingDrawerアプリケーション機能を示しています(「サンプルのMAFアプリケーション」を参照)。このアプリケーション機能は、他のアプリケーション機能に重なりながら、アプリケーション画面の右側に表示されます。
アプリケーション機能をスライディング・ウィンドウとしてレンダリングする場合、Show on Navigation BarプロパティおよびShow on Springboardプロパティをfalseに設定する必要があります。
スライディング・ウィンドウを作成するには、oracle.adfmf.framework.api.AdfmfSlidingWindowOptionsクラスとAdfmfSlidingWindowUtilitiesクラスの組合せを、アプリケーション内のマネージドBeanまたはライフサイクル・リスナーから起動します。
次の例は、SlidingWindowサンプル・アプリケーションで、LifeCycleListenerImpl.javaのactivateメソッドから、図に示すスライディング・ウィンドウを作成する方法を示しています。スライディング・ウィンドウの作成後、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アプリケーションでのライフサイクル・リスナーの使用方法」を参照してください。
MAFアプリケーションでのカスタムURLスキームの使用
カスタムURLスキームを使用して、他のアプリケーションからネイティブ・アプリケーションを起動できます。
別のアプリケーションからMAFモバイル・アプリケーションを起動するには、次のステップを実行します。
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 の要件に対応しています。図に示すように、「セキュリティ」ページの「許可されるスキーム」セクションの「追加」アイコンをクリックして、カスタムURLスキームを追加します。
図4-13 別のアプリケーションを起動するためにMAFアプリケーションが使用するカスタムURLスキームの登録

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











