| Oracle® Enterprise Pack for Eclipse Oracle Mobile Application Framework (OEPE Edition)でのモバイル・アプリケーションの開発 リリース2.0.1 E57593-01 |
|
![]() 前 |
![]() 次 |
この章では、デバイス・サービスに対して、リモートURLからのコンテンツを使用するアプリケーション機能をアクセス可能(または制限可能)にする方法について説明します。
この章には次の項が含まれます:
図12-1のように、MAF機能エディタにあるアプリケーション機能のコンテンツ・タイプをリモートURLとして構成することで、構成されたURLから供給されるブラウザベースのアプリケーションを作成します。このようなサーバー・ホスト型のアプリケーションは、偶発的な使用を目的としていて、デバイスのメモリーまたはサービス(カメラ、連絡先、GPSなど)に直接アクセスできない点が、MAF AMX、ローカルHTML、またはObjective-Cなどのプラットフォーム固有言語で記述されたクライアント・アプリケーションとは異なります。そのかわりに、これらのやり取りはデバイス・ブラウザの機能に左右されます。ただし、MAFのWebビュー内で開かれるリモート・アプリケーションは、Apache Cordova JavaScript API (およびMAFコンテナ・サービスにアクセスするためのMAF JavaScript API)を使用してデバイス機能にアクセスします。Apache Cordova JavaScript APIライブラリは、プラットフォームに固有のライブラリです。つまり、リモートURLアプリケーションに使用するコンテンツが、ターゲット・プラットフォームに対応したApache Cordovaライブラリを参照していることを確認する必要があります。第B.1項「MAF APIを使用したカスタムHTML Springboardアプリケーション機能の作成」を参照してください。
リモートで供給されるコンテンツのセキュリティを確保するために、MAFはホワイトリスト(GPS、カメラ、ファイル・システムなどの様々なデバイス・サービスにアクセスするためにアプリケーションのWebビュー内で開かれるURLのレジストリ)の概念をサポートしています。Webページがホワイトリストに含まれていない(つまりホワイトリスト化されていない)場合は、そのかわりに、MAFのApache Cordova実装によってデバイス・ブラウザ(Safariなど)でWebページが開かれます。ホワイトリストを使用しないとリモートWebページはMAFのWebビュー内で開くことはできないので、アクセスが埋込みデバイス機能に制限されます。図12-2に示されているように、MAFのWebビュー内で開かれたURLはアプリケーション機能として表示されます。
リモートURL実装は、Apache Cordova JavaScript APIを使用してデバイス機能にアクセスし、MAF JavaScript APIを使用してMAFコンテナ・サービスにアクセスします。付録B「アプリケーション・コンテナAPI」に記載されているとおり、www/js/base.jsライブラリを参照するJavaScriptの<script>タグによって、このアクセスが可能になります。これらのライブラリは、プラットフォームに固有のライブラリです。つまり、リモートURLアプリケーションに使用するコンテンツが、ターゲット・プラットフォームに対応したApache Cordovaライブラリを参照していることを確認する必要があります。Apache Cordova JavaScript APIライブラリは、プラットフォームに固有のライブラリです。つまり、リモートURLアプリケーションに使用するコンテンツが、ターゲット・プラットフォームに対応したApache Cordovaライブラリを参照していることを確認する必要があります。第B.1項「MAF APIを使用したカスタムHTML Springboardアプリケーション機能の作成」を参照してください。
デフォルトでは、connections.xmlファイル(モバイル・アプリケーションに定義されているすべての接続のリポジトリ)に定義されているドメインは、自動的にホワイトリストに含められます。リモートURLコンテンツのこれらのドメインは、図12-3に示すように、「URL接続の作成」ダイアログを使用して作成されます。MAFでは、各接続文字列からドメインを解析して、これらのドメインをホワイトリストに追加します。
次に、Oracle Enterprise Pack for Eclipseでは、adf→META-INFのアセンブリ・プロジェクトにあるconnections.xmlファイルに接続情報が移入され、接続リソースが作成されます。
MAFによってconnections.xmlファイルから追加されるドメインに加えて、MAFアプリケーション・エディタで下記を構成することで、MAFのWebビューで開くリモートURLコンテンツを有効にする(または制限する)ことができます。
ホワイトリスト内の1つ以上のドメイン
デバイス・アクセス権限: 第21.6項「デバイス機能へのアクセスの許可」に記載されているように、アプリケーション機能はアプリケーション・レベルで承諾されたデバイス機能にのみアクセスします。デフォルトでは、MAFアプリケーションはApache Cordova APIへのアクセスを一切許可しません。アプリケーションのユーザー・インタフェースがリモートでホストされたコンテンツを使用して実装されている場合、maf-application.xmlファイルの構成にリクエストされたAPIに対する定義としてaccess="true"が含まれていないと、インタフェースはデバイス機能とサービスにアクセスするためにMAFのWebビュー内で開くことはできません。
始める前に:
第4.7.1項「モバイル・アプリケーションのコンテンツの指定方法」の説明に従い、MAF機能エディタを使用して、アプリケーションのコンテンツをリモートURLとして指定してから接続を作成します。
デバイス・サービスへのアクセスを制限するには:
MAF機能エディタで「デバイス・アクセス」ページを開きます。
図12-4のように付与されたオプションをクリアするか、access=falseを指定してmaf-application.xmlを更新します(たとえば、<adfmf:deviceCamera id="dc1" access="false"/>)。
図12-5のように、maf-application.xmlの「セキュリティ」ページでホワイトリストを構成します。
始める前に:
モバイル・アプリケーションで構成された一部のURLが他のドメインで開かれる可能性があることに注意してください。
ホワイトリストを作成するには:
MAFアプリケーション・エディタを開いて、アウトラインでセキュリティを選択します。
「リモートURL Whitelist」で「追加」をクリックし、ホワイトリストに含めるドメインの追加ダイアログで、アプリケーション機能のWebビュー内から呼び出せるドメインを入力して、「OK」をクリックします。ホワイトリストに含めるドメインの追加を続けます。
これらのドメインにはワイルドカード(*)を含めることができます。たとえば、*.example.comは、*.example.*と同様に有効なドメイン・エントリです。完全修飾パスは入力できません。
|
注意: ワイルドカードのみを入力すると、Webビューではすべてのドメインをリクエストできるため、セキュリティ上のリスクを招く可能性があります。また、すべてのドメインをホワイトリストに追加すると、それらのすべてがWebビュー内で開けるのみではなく、それらのすべてがデバイスにアクセスできるようになります(そのように意図しているかどうかは無関係に)。 |
ドメインを追加すると、Oracle Enterprise Pack for Eclipseでは、例12-1に示すとおり<adfmf:remoteURLWhiteList>要素が更新されます。
一部のURLは、ホワイトリスト・ドメインの一部ではない可能性のあるURLにリダイレクトされます。これらのURLは、アプリケーションのWebビューよりもデバイス・ブラウザで開かれる可能性があります。たとえば、www.oracle.com (<adfmf:domain>www.oracle.com<adfmf:domain>)をホワイトリストに加えた場合、MAFによってそのサイトのモバイル・バージョン(www.m.oracle.com)がデバイス・ブラウザで開かれます。これは、ホワイトリストで許可されていないからです。図12-6は、ホワイトリストに追加されていないWebページをデバイス・ブラウザ内で開いたものを示しています。
www.oracle.comをアプリケーションのWebビュー内で開けるようにするには、例12-1に示すように*.oracle.*またはwww.oracle.*を指定する必要があります。
MAFのホワイトリストはドメインレベルのため、アプリケーション機能のWebビューで開くことをホワイトリストに含まれるドメイン内の個々のページについて制限することはできず、すべてのページが許可されます。
別のドメインを指すURLへのリンクを含むページにホワイトリストを使用します。このようなページは、MAFのWebビューではなくデバイス・ブラウザで別途開かれます。このような場合、例12-2の<goLink2>にあるurl属性など、アプリケーションの外部を指す<amx:goLink>コンポーネントのurl属性を使用して、アンカー・タグまたは<amx:goLink>コンポーネントを作成できます。
例12-2 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>
また、第6.3項「UIコンポーネントの作成と使用方法」も参照してください。
MAFでは、図12-7に示すように、MAFのWebビュー内で開く、リモートで供給されるWebコンテンツとして実装されるアプリケーション機能に対して、戻る、進むおよびリフレッシュの各アクション用のボタンが付いたナビゲーション・バーを追加できます。進むまたは戻るのいずれかの移動が不可能な場合は、進むと戻るのボタンが無効になります。
|
注意: 戻るボタンは、Androidデバイスでは無効になります。 |
maf-feature.xmlファイルの概要エディタの「コンテンツ」タブで、ユーザーがリモート・コンテンツを移動またはリフレッシュできるようにします。
始める前に:
第4.11項「アプリケーション機能のコンテンツ・タイプの定義」の説明に従って、まず「リモートURL」を選択し、次にホスト・サーバーへの接続を作成することにより、リモートでホストされるアプリケーションから配信されるアプリケーション機能のコンテンツを指定します。
ドメインがホワイトリストに含まれていることを確認します。
ナビゲーション・バーを有効にするには:
MAF機能エディタのアウトラインの「機能」にリストされているリモートURLアプリケーション機能を選択します。
「コンテンツ」を展開してリモートURLコンテンツを選択します。
図12-8のように、「コンテンツ」セクションで、「ボタンの表示」を選択します。
Oracle Enterprise Pack for Eclipseでは、showNavButtonsと呼ばれる属性でadfmf:remoteURL要素を更新し、例12-3に示すとおり、ここではtrueに設定されています。
例12-3 showNavButtons属性
<?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>
アプリケーションをデプロイすると、図12-9に示すとおり、MAFでは、進む、戻るおよびリフレッシュの各ボタンがリモートURLアプリケーション機能のホームページから移動されるWebページに適用されます。
ブラウザベースのユーザー・インタフェースは、スマートフォンまたはフィーチャー・フォンのどちらのブラウザ内でも同じように適切に表示される、Apache Trinidadコンポーネントを使用して作成できます(http://myfaces.apache.org/trinidad/を参照)。最新のスマートフォンとタブレット・デバイスに対応するために、WebアプリケーションはADF Rich Facesコンポーネントを使用して作成することもできます(『Oracle Fusion Middleware Oracle ADF FacesによるWebユーザー・インタフェースの開発』を参照)。
|
注意: リモートURLからコンテンツを導出するアプリケーション機能にはADFモバイル・ブラウザを使用することをお薦めします。ADFモバイル・ブラウザ・アプリケーションは、Apache Trinidadコンポーネントが移入されたJSFページで構成されます。詳細は、『Oracle Fusion Middleware Oracle ADFモバイル・ブラウザ・アプリケーションの開発』を参照してください。 |