Oracle® Mobile Application Framework Oracle Mobile Application Frameworkでのモバイル・アプリケーションの開発 2.2.1 E72509-01 |
|
![]() 前 |
![]() 次 |
この章の内容は次のとおりです。
図20-1 に示すように、maf-feature.xml
ファイルの概要エディタにあるアプリケーション機能のコンテンツ・タイプをリモートURLとして構成することで、指定されたURLから供給されるブラウザベースのアプリケーションを作成します。このようなサーバー・ホスト型のアプリケーションは、偶発的な使用を目的としている点およびデバイスのメモリーまたはサービス(カメラ、コンタクト先、GPSなど)に直接アクセスできない点で、MAF AMX、ローカルHTML、またはObjective-Cなどのプラットフォーム固有言語で記述されたクライアント・アプリケーションとは異なります。そのかわりに、これらのやり取りはデバイス・ブラウザの機能に左右されます。リモートURLコンテンツの構成の詳細は、「アプリケーション機能のコンテンツをリモートURLまたはローカルHTMLとして定義する方法」を参照してください。
図20-1 リモートURLコンテンツの構成
リモートで供給されるコンテンツのセキュリティを確保するために、MAFはホワイトリスト(GPS、カメラ、ファイル・システムなどの様々なデバイス・サービスにアクセスするためにアプリケーションのWebビュー内で開かれるURLのレジストリ)の概念をサポートしています。Webページがホワイトリストに含まれていない(つまりホワイトリスト化されていない)場合は、そのかわりに、MAFのApache Cordova実装によってデバイス・ブラウザ(Safariなど)でWebページが開かれます。ホワイトリストを使用しないとリモートWebページはMAFのWebビュー内で開くことはできないので、アクセスが埋込みデバイス機能に制限されます。図20-2 に示されているように、MAFのWebビュー内で開かれたURLはアプリケーション機能として表示されます。
図20-2 デバイス・ブラウザとMAFのWebビューのURL
MAFのWebビュー内で開かれるリモートURLアプリケーションは、Apache Cordova JavaScript APIを使用してデバイス機能にアクセスし、MAF JavaScript APIを使用してMAFコンテナ・サービスにアクセスします。このアクセスを可能にするには、base.js
ライブラリを参照するJavaScriptの<script>
タグ使用します。
サーバーによってレンダリングされたWebアプリケーション内からMAFまたはCordova JavaScript APIにアクセスするには(たとえば、EL式の取得と設定、アプリケーションに関する情報の取得、写真の撮影、連絡先へのアクセスなど)、base.js
のインクルード時に仮想パス/~maf.device~/
を使用して、ブラウザがリクエストをリモート・サーバーではなくMAFリソースに対するものとして識別できるようにする必要があります。このアプローチはリモートとローカルの両方のHTMLページで機能するので、(提供元にかかわらず) base.js
をHTML機能にインクルードする方法として最適です。次の例に、デバイスのHTMLページまたはリモートのHTMLページからbase.js
をインクルードする方法を示します。
<html> <head> <script src="/~maf.device~/www/js/base.js"></script> ...
コンテナ・コードでは、リクエストされたURLの/~maf.device~/
を読み取ると、次の例に示すように、そのURLをローカルに解決してネイティブ・リクエストとして処理します。
<script src="http://your.domain.ip/~maf.device~/www/js/base.js"></script>
your.domain.ip
は、リモートURLのドメインです。リモート・アプリケーションの機能やリクエストが確実に成功するように、「ホワイトリストの作成方法(ドメインの制限方法)」の説明に従って、MAFアプリケーションのホワイトリストにドメインのURLを追加します。
次に、MAFがコンテナ・コード内のファイル・システムからファイルを読み取って、ローカル・ファイル・コンテンツをWebビューに送信します。
すでに説明したように、仮想パス/~maf.device~/
の使用に加え、そのコンテンツ・タイプとしてリモートURLのアプリケーションを指定するアプリケーション機能のmaf-application.xml
ファイルで、ネイティブ・アクセスを許可するプロパティ(allowNativeAccess
)がデフォルト値のtrue
に設定されていることを確認します。次の例に、maf-application.xml
ソース・ファイル内のこのプロパティを示します。
<adfmf:featureReference refId="remoteAppfeature1" id="fr1" allowNativeAccess="true"/>
このプロパティがfalse
の場合、リモートURLのアプリケーション機能からコンテナ・サービスにアクセスできません。
デフォルトでは、connections.xml
ファイル(モバイル・アプリケーションに定義されているすべての接続のリポジトリ)に定義されているドメインは、自動的にホワイトリストに含められます。リモートURLコンテンツのこれらのドメインは、図20-3 に示すように、「URL接続の作成」ダイアログを使用して作成されます。MAFでは、各接続文字列からドメインを解析して、これらのドメインをホワイトリストに追加します。
図20-3 リモートURLアプリケーション機能のコンテンツを取得するための接続の作成
次に、JDeveloperは、「アプリケーション・リソース」パネルにあるconnections.xml
ファイルに接続情報を入力し、さらに接続リソースも作成します。
maf-application.xml
ファイルにホワイトリストされたドメインを構成することで、MAFがconnections.xml
ファイルから含めるドメインの他に、MAF Webビューで開くリモートURLコンテンツを有効化(または制限)できます。
図20-4
に示すとおり、maf-application.xml の「セキュリティ」ページでホワイトリストを構成します。
図20-4 ホワイトリストの構成
始める前に:
モバイル・アプリケーションで構成された一部のURLが他のドメインで開かれる可能性があることに注意してください。
ホワイトリストを作成するには:
ドメインを追加すると、JDeveloperでは、次の例に示すとおり<adfmf:remoteURLWhiteList>
要素が更新されます。
... <adfmf:remoteURLWhiteList> <adfmf:domain id="domain_1">*.oracle.com</adfmf:domain> <adfmf:domain id="domain_2">http://*.example.com</adfmf:domain> </adfmf:remoteURLWhiteList> ...
一部のURLは、ホワイトリスト・ドメインの一部ではない可能性のあるURLにリダイレクトされます。これらのURLは、アプリケーションのWebビューよりもデバイス・ブラウザで開かれる可能性があります。たとえば、www.oracle.com
(<adfmf:domain>www.oracle.com<adfmf:domain>
)をホワイトリストに加えた場合、MAFによってそのサイトのモバイル・バージョン(www.m.oracle.com
)がデバイス・ブラウザで開かれます。これは、ホワイトリストで許可されていないからです。図20-5 は、ホワイトリストに追加されていないWebページをデバイス・ブラウザ内で開いたものを示しています。
図20-5 MAFのWebビューではなくデバイス・ブラウザで開かれたWebページ
www.oracle.com
をアプリケーションのWebビューで開けるようにするには、「ホワイトリストにドメインを追加する場合の処理」に示すように、*.oracle.com
またはwww.oracle.com
を指定する必要があります。
MAFのホワイトリストはドメインレベルのため、アプリケーション機能のWebビューで開くことをホワイトリストに含まれるドメイン内の個々のページについて制限することはできず、すべてのページが許可されます。
別のドメインを指すURLへのリンクを含むページにホワイトリストを使用します。このようなページは、MAFのWebビューではなくデバイス・ブラウザで別途開かれます。このような場合、次の例の<goLink2>
にあるurl
属性など、アプリケーションの外部を指す<amx:goLink>
コンポーネントのurl
属性を使用して、アンカー・タグまたは<amx:goLink>
コンポーネントを作成できます。
<?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:panelGroupLayout id="panelGroupLayout1"> <amx:goLink text="This opens in the device browser" id="golink1" url="http://www.example.com" shortDesc="Opens in device browser"/> <amx:goLink text="This opens in the web view" id="golink2" url="http://www.example2.com" shortDesc="Accesses device services"/> </amx:panelGroupLayout> </amx:panelPage> </amx:view>
「UIコンポーネントの作成と使用方法」も参照してください。
MAFでは、図20-6 に示すように、MAFのWebビュー内で開く、リモートで供給されるWebコンテンツとして実装されるアプリケーション機能に対して、戻る、進むおよびリフレッシュの各アクション用のボタンが付いたナビゲーション・バーを追加できます。進むまたは戻るのいずれかの移動が不可能な場合は、進むと戻るのボタンが無効になります。
注意:
戻るボタンは、Androidデバイスでは無効になります。
図20-6 ナビゲーション・ボタンとリフレッシュ・ボタンを表示するリモートWebページ
maf-feature.xml
ファイルの概要エディタの「コンテンツ」タブで、ユーザーがリモート・コンテンツを移動またはリフレッシュできるようにします。
始める前に:
「アプリケーション機能のコンテンツをリモートURLまたはローカルHTMLとして定義する方法」の説明に従って、まず「リモートURL」を選択し、次にホスト・サーバーへの接続を作成することにより、リモートでホストされるアプリケーションから配信されるアプリケーション機能のコンテンツを指定します。
ドメインがホワイトリストに含まれていることを確認します。
ナビゲーション・バーを有効にするには:
JDeveloperでは、showNavButtons
と呼ばれる属性でadfmf:remoteURL
要素を更新します。次の例に示すとおり、ここではtrue
に設定されています。
<?xml version="1.0" encoding="UTF-8" ?> <adfmf:features xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:adfmf="http://xmlns.oracle.com/adf/mf"> <adfmf:feature id="oraclemobile" name="oraclemobile"> <adfmf:content id="oraclemobile.1"> <adfmf:remoteURL connection="connection1" showNavButtons="true"/> </adfmf:content> </adfmf:feature> </adfmf:features>
アプリケーションをデプロイすると、図20-8 に示すとおり、MAFでは、進む、戻るおよびリフレッシュの各ボタンがリモートURLアプリケーション機能のホームページから移動されるWebページに適用されます。
Figure 20-8 リモート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 9の要件に対応できます。図20-9に示すように、「セキュリティ」ページの「許可されるスキーム」セクションの「追加」アイコンをクリックして、カスタムURLスキームを追加します。
図20-9 別のアプリケーションを起動するためにMAFアプリケーションが使用するカスタムURLスキームの登録