Adobe Flex 3 ヘルプ

ディープリンクについて

Flex アプリケーションの利点の 1 つは、サーバーから新しいページを取得したりブラウザを更新したりしなくても、アプリケーションでスムーズに 1 つの状態から別の状態にトランジションできることです。ページが頻繁に更新されないため、表示がより滑らかで連続したものになります。また、アプリケーションを一度しか返す必要がないため、ユーザーがビューを変更するたびに新しいページを返す場合に比べて、サーバーの負荷が大幅に減少します。

一方、ブラウザのページ指向モデルの利点の 1 つは、通常はアプリケーションのナビゲーション状態が URL に明確に連結されていることです。このため、アプリケーションの状態が変化した場合、ユーザーは通常、次の操作を実行できます。

  • その URL をブックマークに登録して、アプリケーションのその状態に戻れるようにします。
  • 友人に URL を電子メールで送信します。
  • 「戻る」および「進む」ボタンを使用して、最近アクセスしたアプリケーションの状態に移動します。

ブラウザが管理する URL をアプリケーションの特定の状態に連結できないことは、アプリケーションの作成において、かなり大きな欠点です。ディープリンクによって、URL をマップする機能(すなわち、「ブックマーク作成」機能)が Flex アプリケーションに追加されます。概略を説明すると、ディープリンクを使用すると以下を実行できます。

  • アプリケーションの状態が変化したときに URL を更新します。また、これによって、ブラウザの履歴に新しいエントリが作成されます。
  • URL から値を読み取って、アプリケーションの状態を変更します。例えば、ブックマークを使用すると、アプリケーションが特定の状態で読み込まれます。
  • ブラウザのアドレスバーにある URL がいつ変更されたかを認識します。ユーザーが「戻る」または「進む」ボタンをクリックしたか、アドレスバーの URL を変更した場合、Flex アプリケーションに変更が通知され、その変更を処理できます。

アプリケーションのどの状態でブックマークに登録できるかはアプリケーションによって異なりますが、ログインページ、製品ページ、検索結果ページ、またはデータのドリルダウンビューなどが挙げられます。

ディープリンクは特定のブラウザのみで機能します。次のブラウザがディープリンクをサポートしています。

  • Microsoft Internet Explorer 6 以降
  • Windows 版および Macintosh 版の FireFox
  • Macintosh 版の Safari

上記のブラウザだけでなく、ディープリンクではクライアントブラウザでスクリプト実行を有効にする必要もあります。ディープリンクは、単独の Adobe® Flash® Player や Adobe AIR™ では動作しません。

ディープリンクを使用するアプリケーションを作成する場合、HistoryManager の使用の説明にあるように、HistoryManager クラスは使用できません。ディープリンク機能を使用すると、アプリケーションの historyManagementEnabled プロパティが false に自動的に設定されます。

ディープリンクが動作する仕組み

ディープリンクは、ブラウザと Flex アプリケーションとの間の通信に依存します。通信は双方向に行われます。アプリケーションで変更が発生した場合はブラウザに通知する必要があり、ブラウザで変更が発生した場合はアプリケーションに通知する必要があります。この通信は、BrowserManager クラスによって処理されます。このクラスは、HTML ラッパーの JavaScript のメソッドを使用してイベントを処理し、ブラウザのアドレスバーを更新して、他のメソッドを呼び出します。別のクラス URLUtil は、Flex アプリケーションで URL を読み込んでブラウザに戻す際に、より簡単に URL を解析できるようにするために用意されています。

ディープリンクは、JavaScript と、Flex の履歴管理機能で使用される SWF ファイルを使用します。履歴管理とディープリンクは、同一アプリケーションで共存できません。このため、ディープリンクを使用するときは履歴管理を無効にする必要があります。履歴管理を無効にしない場合、BrowserManager クラスのシングルトンの初期化時に履歴管理が無効にされます。

ディープリンクを使用するには、URL の特定の部分を設定および取得して、アプリケーションの状態を示したり判別したりする ActionScript を作成します。これらの部分はフラグメントと呼ばれ、URL のシャープ記号(#)の後ろにあります。次の例では、view=1 がフラグメントです。

http://my.domain.com#view=1

ユーザーがアプリケーションの新しいビューに移動する場合、URL を更新し、URL フラグメントに view=2 を設定します。次にユーザーがブラウザの「戻る」ボタンをクリックすると、BrowserManager にイベントが通知され、URL フラグメントが view=1 に戻ったことに応答してアプリケーションの状態を変更できるようになります。

URL を解析するには、通常は URLUtil クラスのメソッドを使用します。このクラスには、URL のサーバー名、ポート番号、およびプロトコルを検出するメソッドが用意されています。さらに、objectToString() メソッドを使用して、ActionScript オブジェクトをストリングに変換して URL の末尾に追加できます。また、URLUtil クラスの stringToObject() メソッドを使用して、クエリ文字列の任意の数の名前と値のペアをオブジェクトに変換できます。これによって、アプリケーションロジックでより簡単にフラグメントを操作できるようになります。

ディープリンクを使用するアプリケーションのデプロイ

ディープリンクを使用するには、ラッパーに次の履歴管理ファイルが必要です。

  • history.css
  • history.js
  • historyFrame.html

つまり、ラッパーに history.js および history.css ファイルを含める必要があります。次の例では、JS および CSS ファイルがインポートされます。

<!--  BEGIN Browser History required section -->
<link rel="stylesheet" type="text/css" href="history/history.css"/>
<script src="history/history.js" language="javascript"></script>
<!--  END Browser History required section -->

historyFrame.html ファイルを Flex アプリケーションとともにデプロイする必要もあります。このファイルは、/history サブディレクトリに存在する必要があります。この場所は、デプロイされたアプリケーションの SWF ファイルの場所を基準にしています。

Adobe® Flex™ Builder™ の場合、history.css、history.js および historyFrame.html ファイルは次のディレクトリにあります。

  • flex_builder_install/3.0.0/templates/client-side-detection-with-history/history
  • flex_builder_install/3.0.0/templates/express-installation-with-history/history
  • flex_builder_install/3.0.0/templates/no-player-detection-with-history/history

SDK の場合、これらのファイルは、sdk_install/templates ディレクトリの同じサブディレクトリにあります。

プロジェクトでディープリンクを有効にすると、history.css、history.js および historyFrame.html ファイルがプロジェクトの出力ディレクトリに生成されます。

Flex Builder でのディープリンクの有効化

  1. プロジェクト/プロパティを選択します。
  2. 「Flex コンパイラ」オプションを選択します。
  3. 「ブラウザのナビゲーションとの統合を有効にする」オプションを選択します。

Flex Builder の複数の SDK 機能を使用していて、SDK を 3 から 2.0.1 に変更した場合は、履歴管理サポート用に異なるファイルセットが生成されます。詳しくは、Flex Builder での複数の SDK の使用を参照してください。

HistoryManager について

Flex History Manager を使用すると、ユーザーは、Web ブラウザの「戻る」および「進む」ナビゲーション機能を使用して、Flex アプリケーション内を移動できます。例えば、ユーザーは、Flex アプリケーションのいくつかの Accordion コンテナペインを移動した後、ブラウザの「戻る」ボタンをクリックしてアプリケーションを前の状態に戻すことができます。

HistoryManager と BrowserManager は互換性がないので、同一のアプリケーション内では使用できません。HistoryManager の使用について詳しくは、HistoryManager の使用を参照してください。

 

このページに新しいコメントが追加された場合に、電子メールでの通知を希望する。 | コメントレポート