ヘッダーをスキップ
Oracle® Fusion Middleware Oracle Application Development Frameworkモバイル開発者ガイド
11g リリース2 (11.1.2.3.0)
B70750-01
  目次へ
目次

前
 
次
 

12 リモートURLとしてのアプリケーション機能の実装

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

この章では、次の項目について説明します。

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

第5.9.1項「アプリケーション・コンテンツの定義方法」の説明に従って、adfmf-feature.xmlファイルの概要エディタにあるアプリケーション機能のコンテンツ・タイプをリモートURLとして構成することで、構成されたURLから供給されるブラウザベースのアプリケーションを作成します。このようなサーバー・ホスト型のアプリケーションは、ADFモバイルAMXまたはObjective-Cなどのプラットフォーム固有言語で記述されたアプリケーションとは次の2つの点で異なります。1つはこれらは偶発的な使用を目的としている点、もう1つはこれらのやり取りがデバイス・ブラウザの機能によって異なるためデバイスのメモリーまたはサービスに直接アクセスできない点です。

スマートフォン向けのブラウザベースのアプリケーションはApache Trinidadコンポーネントで作成され(http://myfaces.apache.org/trinidad/を参照)、様々なフィーチャー・フォンおよびスマートフォンの適切なレンダリングが可能です。タブレット上で実行されるアプリケーションは、ADFデスクトップのWebアプリケーションと同じ方法で作成できます。


注意:

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


12.2 リモートURL実装によるPhoneGapへのアクセスの有効化の概要

デフォルトでは、コンタクト先またはGPS(グローバル・ポジショニング・システム)などのデバイス機能へのアクセスは、ローカルで格納されたHTMLページのバンドルまたはADFモバイルAMXとして実装されたADFモバイル・アプリケーションに制限されています。後者の場合は、ADFモバイルAMX UIコンポーネントにデバイスのデータ・コントロールを追加することで、アプリケーション機能によるデバイス機能へのアクセスが可能になります。詳細は、第9.5項「DeviceFeaturesデータ・コントロールの使用方法」を参照してください。ただし、リモートURL実装では、PhoneGap JavaScript APIを使用したデバイスネイティブのコントロールにのみアクセスできます。第6章「アプリケーション機能の表示制御」の説明のとおり、ADFモバイルJavaScriptファイルは、ADFモバイルがPhoneGapと連携するために使用するメカニズムです。

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

ADFモバイルはホワイトリスト(アプリケーションのWebビュー内で開いているURLのレジストリ)の概念をサポートしており、GPS、カメラ、ファイル・システムなどの様々なデバイス・サービスにアクセスできます。Webページがホワイトリストに含まれていない(つまりホワイトリストされていない)場合は、そのかわりに、ADFモバイルPhoneGap実装によってデバイス・ブラウザ(Safariなど)でWebページが開かれます。ホワイトリストしないかぎり、Webビュー内にリモートWebページを開くことはできません。

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

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

アプリケーション・サーバーURLを指定します。

次に、JDeveloperでは、「アプリケーション・リソース」パネルにあるconnections.xmlファイルに接続情報が移入され、図12-2oracleconnection 1などのような接続リソースが作成されます。


注意:

ホワイトリストされたドメインのみがWebビューで開かれ、その他の(ホワイトリストされていない)ドメインはすべてデバイス・ブラウザで開かれます。


12.3.1 デバイス機能へのアクセスの制御方法

adfmf-application.xmlファイルを編集することによって、図12-2に示すとおり、PhoneGapが有効化されたデバイス・サービスへのアクセスをアプリケーション機能単位で制限できます。デフォルトでは、すべてのアプリケーション機能にこのようなアクセス権があるため、ADFモバイル・アプリケーションに構成されているホワイトリストされたドメインはすべてデバイスにアクセスできます。ADFモバイルがconnections.xmlファイルから追加するドメインに加えて、第12.3.2項「ホワイトリストの作成方法」の説明のとおり、adfmf-application.xmlファイルの「セキュリティ」ページを使用してドメインをホワイトリストすることもできます。

図12-2 ドメイン・アクセスを制限するための<adfmf-FeatureReference>の編集

allowDeviceAccess属性を編集します。

図12-2で説明した「ソース」エディタには、allowDeviceAccess属性が移入された<adfmf-feature-reference>要素が示されています。JDeveloperは、リモートURLコンテンツを含むすべてのアプリケーション機能にこの属性を移入します。この属性はデフォルトでtrueに設定されています。このデフォルトの設定では、すべてのURLでPhoneGap APIにアクセスできるようになっています。

始める前に:

adfmf-feature.xmlファイルの概要エディタ(「アプリケーション・ナビゲータ」の「プロジェクト」パネルの「ViewController」ノードおよび「META-INF」ノードの下に配置されている)を使用して、第5.5.1項「モバイル・アプリケーションのコンテンツの指定方法」の説明に従い、アプリケーションのコンテンツをリモートURLとして指定して、接続を作成します。

adfmf-application.xmlファイルの概要エディタを開くには、adfmf-application.xmlファイル(図12-2に示すとおり、「アプリケーション・リソース」パネルの「リソース」ノードおよび「ADF META-INF」ノードの下に配置されています)をダブルクリックします。

ソース・エディタ、「構造」ウィンドウおよびプロパティ・エディタを使用してこの属性を構成できます。

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

  1. adfmf-application.xmlファイルを開いて、「機能参照」ページを開きます。

  2. 図12-3に示すとおり、「機能参照」テーブルの「デバイス・アクセスの許可」列でドロップダウン・メニューを使用してデフォルト値(<default> true)をfalseに変更します。

    図12-3 「機能参照」ページを使用したドメインによるデバイス・サービスへのアクセスの防止

    PhoneGapサービスへのアクセスの設定

12.3.2 ホワイトリストの作成方法

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

図12-4 ホワイトリストの構成

モバイル・アプリケーションにホワイトリストされたドメインを追加します。

始める前に:

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

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

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

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


    注意:

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


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

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

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

...
<adfmf:remoteURLWhiteList>
  <adfmf:domain>*.oracle.*</adfmf:domain>
  <adfmf:domain>www.oracle.*</adfmf:domain>
  </adfmf:remoteURLWhiteList>
...

12.3.4 リモートURLについて

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

図12-5 ADFモバイルのWebビューではなくデバイス・ブラウザで開かれたWebページ

Webビュー以外のコンテンツ

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

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

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

別のドメインを指すURLへのリンクを含むページにホワイトリストを使用します。このようなページは、ADFモバイルの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>

また、第8.3項「UIコンポーネントの作成と使用方法」も参照してください。

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

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


注意:

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


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

WebビューでのリモートURLの表示

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

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

始める前に:

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

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

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

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

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

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

    図12-7 ナビゲーション・オプションの選択

    ナビゲーション・アイコンを選択します。

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

JDeveloperでは、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-8に示すとおり、ADFモバイルでは、進む、戻るおよびリフレッシュの各ボタンがリモートURLアプリケーション機能のホームページから移動されるWebページに適用されます。

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

デプロイされたアプリケーションの戻る、進むおよびリフレッシュの各ボタン