ヘッダーをスキップ

Oracle® Fusion Middleware Oracle Mobile Application Frameworkでのモバイル・アプリケーションの開発 2.0.1 E57592-01 |
| 目次

前 | 次 |

# 13 リモートURLを使用したアプリケーション機能コンテンツの実装

この章では、デバイス・サービスに対して、リモートURLからのコンテンツを使用するアプリケーション機能をアクセス可能(または制限可能)にする方法について説明します。

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

- 第13.1項「リモートURLアプリケーションの概要」

- 第13.2項「アプリケーション・コンポーネントのホワイトリストの作成」

- 第13.3項「リモートURLページでのブラウザ・ナビゲーション・バーの有効化」

- 第13.4項「リモート・コンテンツの作成について」

## 13.1 リモートURLアプリケーションの概要

図13-1に示すように、`maf-feature.xml`ファイルの概要エディタにあるアプリケーション機能のコンテンツ・タイプをリモートURLとして構成することで、構成されたURLから供給されるブラウザベースのアプリケーションを作成します。このようなサーバー・ホスト型のアプリケーションは、偶発的な使用を目的としている点およびデバイスのメモリーまたはサービス(カメラ、連絡先、GPSなど)に直接アクセスできない点で、MAF AMX、ローカルHTML、またはObjective-Cなどのプラットフォーム固有言語で記述されたクライアント・アプリケーションとは異なります。かわりに、これらのやり取りはデバイスのブラウザの機能によって異なります。ただし、MAF Webビュー内で開いているリモート・アプリケーションは、Apache Cordova JavaScript APIを使用してデバイス機能にアクセスします(およびMAF JavaScript APIを使用してMAFコンテナ・サービスにアクセスします)。Apache Cordova JavaScript APIライブラリはプラットフォームに固有のライブラリであるため、リモートURLアプリケーションに使用するコンテンツが、ターゲット・プラットフォームに対応したApache Cordovaライブラリを参照していることを確認する必要があります。第B.1項「MAF APIを使用したカスタムHTML Springboardアプリケーション機能の作成」を参照してください。

図13-1 リモートURLコンテンツの構成

### 13.1.1 ホワイトリストを使用したリモート・アプリケーションによるデバイス・サービスへのアクセスの有効化

リモートで供給されるコンテンツのセキュリティを確保するために、MAFはホワイトリスト(GPS、カメラ、ファイル・システムなどの様々なデバイス・サービスにアクセスするためにアプリケーションのWebビュー内で開いているURLのレジストリ)の概念をサポートしています。Webページがホワイトリストに含まれていない(つまりホワイトリストされていない)場合は、そのかわりに、MAFのApache Cordova実装によってデバイス・ブラウザ(Safariなど)でWebページが開かれます。ホワイトリストがない場合、リモートWebページはMAF Webビュー内で開くことができないため、埋込みデバイス機能へのアクセスが制限されます。図13-2に示すように、MAF Webビュー内で開いているURLはアプリケーション機能として示されます。

図13-2 デバイス・ブラウザおよびMAF Webビュー内のURL

### 13.1.2 リモートURL実装によるApache Cordovaへのアクセスの有効化

リモートURL実装は、Apache Cordova JavaScript APIを使用してデバイス機能にアクセスし、MAF JavaScript APIを使用してMAFコンテナ・サービスにアクセスします。付録B「ローカルHTMLおよびアプリケーション・コンテナAPI」に記載されているとおり、`www/js/base.js`ライブラリを参照するJavaScript `<script>`タグによって、このアクセスが可能になります。これらのライブラリは、プラットフォームに固有のライブラリです。つまり、リモートURLアプリケーションに使用するコンテンツが、ターゲット・プラットフォームに対応したApache Cordovaライブラリを参照していることを確認する必要があります。Apache Cordova JavaScript APIライブラリはプラットフォームに固有のライブラリであるため、リモートURLアプリケーションに使用するコンテンツが、ターゲット・プラットフォームに対応したApache Cordovaライブラリを参照していることを確認する必要があります。第B.1項「MAF APIを使用したカスタムHTML Springboardアプリケーション機能の作成」を参照してください。

### 13.1.3 ホワイトリストされたドメインによるデバイス機能へのアクセス方法

デフォルトでは、`connections.xml`ファイルに定義されているドメイン(モバイル・アプリケーションに定義されているすべての接続のリポジトリ)は、自動的にホワイトリストされます。リモートURLコンテンツのこれらのドメインは、図13-3に示すように、「URL接続の作成」ダイアログを使用して作成されます。MAFでは、各接続文字列からドメインを解析して、これらのドメインをホワイトリストに追加します。

図13-3 リモートURLアプリケーション機能のコンテンツを取得するための接続の作成

次に、JDeveloperは、「アプリケーション・リソース」パネルにある`connections.xml`ファイルに接続情報を入力し、さらに接続リソースも作成します。

`maf-application.xml`ファイルに次のものを構成することで、MAFが`connections.xml`ファイルから含めるドメインの他に、MAF Webビューで開くリモートURLコンテンツを有効化(または制限)できます。

- 1つ以上のホワイトリストされたドメイン

- デバイス・アクセス権限: 第21.6項「デバイス機能へのアクセスの許可」に記載されているとおり、アプリケーション機能はアプリケーション・レベルで付与されているデバイス機能にのみアクセスします。デフォルトでは、MAFアプリケーションはApache Cordova APIへのアクセスを許可しません。アプリケーションのユーザー・インタフェースがリモートでホストされたコンテンツを使用して実装され、`maf-application.xml`ファイルの構成に要求されたAPIの`access="true"`定義が含まれている場合、MAF Webビュー内でのみそのインタフェースを開いてデバイス機能およびサービスにアクセスできます。

始める前に

第4.6.1項「モバイル・アプリケーションのコンテンツの指定方法」の説明に従って、`maf-feature.xml`ファイルの概要エディタを使用して、アプリケーションのコンテンツをリモートURLとして指定し、接続を作成します。

デバイス・サービスへのアクセスを制限するには:

1. `maf-application.xml`ファイルの概要エディタで「デバイス・アクセス」ページを開きます。

2. 図13-4に示すように「付与」オプションをオフにするか、または`access=false` (たとえば、`<adfmf:deviceCamera id="dc1" access="false"/>`)としてmaf-application.xmlを更新します。

   図13-4 ドメインによるデバイス・サービスへのアクセスの禁止

### 13.1.4 13.1.4 ホワイトリストを作成(またはドメインを制限)する方法

図13-5に示すとおり、`maf-application.xml`の「セキュリティ」ページでホワイトリストを構成します。

図13-5 ホワイトリストの構成

始める前に

モバイル・アプリケーションで構成された一部のURLが他のドメインで開かれる可能性があることに注意してください。

ホワイトリストを作成するには:

1. `maf-application.xml`ファイルを開いて、「セキュリティ」ページを選択します。

2. 「追加」をクリックして、アプリケーション機能のWebビュー内からコールされる可能性があるドメインを入力します。これらのドメインにはワイルドカード(*)を含めることができます。たとえば、`*.example.com`は、`*.example.*`と同様に有効なドメイン・エントリです。完全修飾パスは入力できません。

   注意: ワイルドカードのみを入力すると、Webビューではすべてのドメインをリクエストできるため、セキュリティ上のリスクを招く可能性があります。また、すべてのドメインをホワイトリストに追加すると、それらのすべてがWebビュー内で開けるのみではなく、それらのすべてがデバイスにアクセスできるようになります(そのように意図しているかどうかは無関係に)。

### 13.1.5 ホワイトリストにドメインを追加する場合の処理

ドメインを追加すると、JDeveloperでは、例13-1に示すとおり`<adfmf:remoteURLWhiteList>`要素が更新されます。

例13-1 ホワイトリストの構成

    ...
    <adfmf:remoteURLWhiteList>
      <adfmf:domain id="domain_1">*.oracle.*</adfmf:domain>
      <adfmf:domain id="domain_2">www.oracle.*</adfmf:domain>
      </adfmf:remoteURLWhiteList>
    ...

### 13.1.6 リモートURLに関する必知事項

一部のURLは、ホワイトリスト・ドメインの一部ではない可能性のあるURLにリダイレクトされます。これらのURLは、アプリケーションのWebビューよりもデバイス・ブラウザで開かれる可能性があります。たとえば、`www.oracle.com` (`<adfmf:domain>www.oracle.com<adfmf:domain>`)をホワイトリストした場合、MAFはこのサイトのモバイル・バージョン(`www.m.oracle.com`)をデバイス・ブラウザに開きますが、これはモバイル・バージョンがホワイトリストを通過しないためです。図13-6は、ホワイトリストに追加されていないWebページをデバイス・ブラウザ内で開いたものを示しています。

図13-6 MAF Webビューではなくデバイス・ブラウザで開かれたWebページ

`www.oracle.com`をアプリケーションのWebビュー内で開けるようにするには、例13-1に示すように`*.oracle.*`または`www.oracle.*`を指定する必要があります。

MAFのホワイトリストはドメインレベルのため、アプリケーション機能のWebビューで開くことをホワイトリストされたドメイン内の個々のページについて制限することはできず、すべてのページが許可されます。

## 13.2 アプリケーション・コンポーネントのホワイトリストの作成

別のドメインを指すURLへのリンクを含むページにホワイトリストを使用します。このようなページは、MAF Webビューではなくデバイス・ブラウザで別途開かれます。このような場合、例13-2の`<goLink2>`にある`url`属性など、アプリケーションの外部を指す`<amx:goLink>`コンポーネントの`url`属性を使用して、アンカー・タグまたは`<amx:goLink>`コンポーネントを作成できます。

例13-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コンポーネントの作成と使用方法」も参照してください。

## 13.3 リモートURLページでのブラウザ・ナビゲーション・バーの有効化

MAFでは、図13-7に示すように、MAF Webビュー内で開く、リモートで供給されるWebコンテンツとして実装されるアプリケーション機能に対して、戻る、進むおよびリフレッシュの各アクション用のボタンが付いたナビゲーション・バーを追加できます。進むまたは戻るのいずれかの移動が不可能な場合は、進むと戻るのボタンが無効になります。

注意: 戻るボタンは、Androidデバイスでは無効になります。

図13-7 ナビゲーション・ボタンとリフレッシュ・ボタンを表示するリモートWebページ

### 13.3.1 リモートURLアプリケーション機能へのナビゲーション・バーの追加方法

`maf-feature.xml`ファイルの概要エディタの「コンテンツ」タブで、ユーザーがリモート・コンテンツを移動またはリフレッシュできるようにします。

始める前に

第4.10項「アプリケーション機能のコンテンツ・タイプの定義」の説明に従って、まず「リモートURL」を選択し、次にホスト・サーバーへの接続を作成することにより、リモートでホストされるアプリケーションから配信されるアプリケーション機能のコンテンツを指定します。

ドメインがホワイトリストに含まれていることを確認します。

ナビゲーション・バーを有効にするには:

1. `maf-feature.xml`ファイルの「機能」表にリストされている「リモートURL」アプリケーション機能を選択します。

2. 「コンテンツ」をクリックします。

3. 図13-8に示すとおり、「ブラウザ・ナビゲーション・ボタンの表示」を選択します。

   図13-8 ナビゲーション・オプションの選択

### 13.3.2 リモートURLアプリケーション機能のブラウザ・ナビゲーション・ボタンを有効にする場合の処理

JDeveloperでは、`showNavButtons`と呼ばれる属性で`adfmf:remoteURL`要素を更新します。例13-3に示すとおり、ここでは`true`に設定されています。

例13-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>

アプリケーションをデプロイすると、図13-9に示すとおり、MAFでは、進む、戻るおよびリフレッシュの各ボタンがリモートURLアプリケーション機能のホームページから移動されるWebページに適用されます。

Figure 13-9 リモートURLアプリケーション機能での移動

## 13.4 13.4 リモート・コンテンツの作成について

Apache Trinidadコンポーネント(`http://myfaces.apache.org/trinidad/`の説明を参照)はスマートフォンまたはフィーチャー・フォンのいずれのブラウザ内でも等しく適切に表示されるため、ブラウザベースのユーザー・インタフェースがそれらのコンポーネントを使用して作成される場合があります。最近のスマートフォンおよびタブレット・デバイスに対応するために、Oracle Fusion Middleware Oracle ADF FacesによるWebユーザー・インタフェースの開発に記載されているとおり、ADF Rich Facesコンポーネントを使用してWebアプリケーションが作成される場合もあります。

注意: リモートURLからコンテンツを導出するアプリケーション機能にはADFモバイル・ブラウザを使用することをお薦めします。ADFモバイル・ブラウザ・アプリケーションは、Apache Trinidadコンポーネントが移入されたJSFページで構成されます。詳細は、『Oracle Fusion Middleware Oracle ADFモバイル・ブラウザ・アプリケーションの開発』を参照してください。