Oracle® Fusion Middleware Oracle Application Development Frameworkモバイル開発者ガイド 11g リリース2 (11.1.2.3.0) B70750-01 |
|
前 |
次 |
この章では、デバイス・サービスに対して、リモート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モバイル・ブラウザ開発者ガイド』を参照してください。 |
デフォルトでは、コンタクト先またはGPS(グローバル・ポジショニング・システム)などのデバイス機能へのアクセスは、ローカルで格納されたHTMLページのバンドルまたはADFモバイルAMXとして実装されたADFモバイル・アプリケーションに制限されています。後者の場合は、ADFモバイルAMX UIコンポーネントにデバイスのデータ・コントロールを追加することで、アプリケーション機能によるデバイス機能へのアクセスが可能になります。詳細は、第9.5項「DeviceFeaturesデータ・コントロールの使用方法」を参照してください。ただし、リモートURL実装では、PhoneGap JavaScript APIを使用したデバイスネイティブのコントロールにのみアクセスできます。第6章「アプリケーション機能の表示制御」の説明のとおり、ADFモバイルJavaScriptファイルは、ADFモバイルがPhoneGapと連携するために使用するメカニズムです。
ADFモバイルはホワイトリスト(アプリケーションのWebビュー内で開いているURLのレジストリ)の概念をサポートしており、GPS、カメラ、ファイル・システムなどの様々なデバイス・サービスにアクセスできます。Webページがホワイトリストに含まれていない(つまりホワイトリストされていない)場合は、そのかわりに、ADFモバイルPhoneGap実装によってデバイス・ブラウザ(Safariなど)でWebページが開かれます。ホワイトリストしないかぎり、Webビュー内にリモートWebページを開くことはできません。
デフォルトでは、connections.xml
ファイルに定義されているドメイン、つまりADFモバイル・アプリケーションに定義されているすべての接続のリポジトリは、自動的にホワイトリストされます。図12-4に示すとおり、これらの接続は、「URL接続の作成」ダイアログを使用して定義されます。ADFモバイルでは、各接続文字列からドメインを解析して、これらのドメインをホワイトリストに追加します。
次に、JDeveloperでは、「アプリケーション・リソース」パネルにあるconnections.xml
ファイルに接続情報が移入され、図12-2のoracleやconnection 1などのような接続リソースが作成されます。
注意: ホワイトリストされたドメインのみがWebビューで開かれ、その他の(ホワイトリストされていない)ドメインはすべてデバイス・ブラウザで開かれます。 |
adfmf-application.xml
ファイルを編集することによって、図12-2に示すとおり、PhoneGapが有効化されたデバイス・サービスへのアクセスをアプリケーション機能単位で制限できます。デフォルトでは、すべてのアプリケーション機能にこのようなアクセス権があるため、ADFモバイル・アプリケーションに構成されているホワイトリストされたドメインはすべてデバイスにアクセスできます。ADFモバイルがconnections.xml
ファイルから追加するドメインに加えて、第12.3.2項「ホワイトリストの作成方法」の説明のとおり、adfmf-application.xml
ファイルの「セキュリティ」ページを使用してドメインをホワイトリストすることもできます。
図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」ノードの下に配置されています)をダブルクリックします。
ソース・エディタ、「構造」ウィンドウおよびプロパティ・エディタを使用してこの属性を構成できます。
デバイス・サービスへのアクセスを制限するには:
adfmf-application.xml
ファイルを開いて、「機能参照」ページを開きます。
図12-3に示すとおり、「機能参照」テーブルの「デバイス・アクセスの許可」列でドロップダウン・メニューを使用してデフォルト値(<default> true
)をfalse
に変更します。
図12-4に示すとおり、adfmf-application.xml
の「セキュリティ」ページでホワイトリストを構成します。
始める前に:
ADFモバイル・アプリケーションで構成された一部のURLが他のドメインで開かれる可能性があることに注意してください。
ホワイトリストを作成するには:
adfmf-application.xml
ファイルを開いて、「セキュリティ」ページを選択します。
「追加」をクリックして、アプリケーション機能のWebビュー内からコールされる可能性があるドメインを入力します。これらのドメインにはワイルドカード(*)を含めることができます。たとえば、*.example.com
は、*.example.*
と同様に有効なドメイン・エントリです。完全修飾パスは入力できません。
注意: ワイルドカードのみを入力すると、Webビューではすべてのドメインをリクエストできるため、セキュリティ上のリスクを招く可能性があります。また、すべてのドメインをホワイトリストに追加すると、それらのすべてがWebビュー内で開けるのみではなく、それらのすべてがデバイスにアクセスできるようになります(そのように意図しているかどうかは無関係に)。 |
ドメインを追加すると、JDeveloperでは、例12-1に示すとおり<adfmf:remoteURLWhiteList>
要素が更新されます。
一部のURLは、ホワイトリスト・ドメインの一部ではない可能性のあるURLにリダイレクトされます。これらのURLは、アプリケーションのWebビューよりもデバイス・ブラウザで開かれる可能性があります。たとえば、www.oracle.com
(<adfmf:domain>www.oracle.com<adfmf:domain>
)をホワイトリストしてデバイス上でそのサイトを開いた場合、ADFモバイルがそのサイトのモバイル・バージョン(www.oracle.mobi
)にリダイレクトされます。これは、ホワイトリストの受渡しが行われないからです。図12-5は、ホワイトリストに追加されていないWebページをデバイス・ブラウザ内で開いたものを示しています。
www.oracle.com
をアプリケーションのWebビュー内で開けるようにするには、例12-1に示すように*.oracle.*
またはwww.oracle.*
を指定する必要があります。
ADFモバイルのホワイトリストはドメインレベルのため、アプリケーション機能のWebビューで開くことをホワイトリストされたドメイン内の個々のページについて制限することはできず、すべてのページが許可されます。
別のドメインを指す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コンポーネントの作成と使用方法」も参照してください。
ADFモバイルでは、図12-6に示すように、ADFモバイルのWebビュー内で開く、リモートで供給されるWebコンテンツとして実装されるアプリケーション機能に対して、戻る、進むおよびリフレッシュの各アクション用のボタンが付いたナビゲーション・バーを追加できます。進むまたは戻るのいずれかの移動が不可能な場合は、進むと戻るのボタンが無効になります。
注意: 戻るボタンは、Androidデバイスでは無効になります。 |
adfmf-feature.xml
ファイルの概要エディタの「コンテンツ」タブで、ユーザーがリモート・コンテンツを移動またはリフレッシュできるようにします。
始める前に:
第5.9項「アプリケーション機能のコンテンツ・タイプの定義」の説明に従って、まず「リモートURL」を選択し、次にホスト・サーバーへの接続を作成することにより、リモートでホストされるアプリケーションから配信されるアプリケーション機能のコンテンツを指定します。
ドメインがホワイトリストに含まれていることを確認します。
ナビゲーション・バーを有効にするには:
adfmf-feature.xml
ファイルの「機能」表にリストされている「リモートURL」アプリケーション機能を選択します。
「コンテンツ」をクリックします。
図12-7に示すとおり、「ブラウザ・ナビゲーション・ボタンの表示」を選択します。
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ページに適用されます。