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

前
 
次
 

13 ユーザー・プリファレンスの有効化

この章では、ADFモバイルのアプリケーションレベルとアプリケーション機能レベルの両方のユーザー・プリファレンス・ページを作成する方法について説明します。

この章には次の項が含まれます:

13.1 ADFモバイル・アプリケーションのユーザー・プリファレンス・ページの作成

プリファレンスによって、エンド・ユーザーが構成可能な設定を追加できます。adfmf-application.xmlおよびadfmf-feature.xmlの両方のファイル内で、<adfmf:preferernces>要素を使用してユーザー・プリファレンス・ページを定義します。例13-1に示すとおり、<adfmf:preferenceGroup>と呼ばれる<adfmf:preferences>の子要素とその子要素によってユーザー・プリファレンスを定義します。これには、読取り専用文字列、ドロップダウン・メニューや、例13-1のケースのようにアプリケーション設定の追加オプションをユーザーに提示する子ページなど、様々な形でオプションを提示するページを作成します。

また、<adfmf:preferences>要素を使用して、各アプリケーション機能内でユーザーが管理するプリファレンスを作成します。

例13-1 <adfmf:preferences>要素を使用したアプリケーションレベルのプリファレンスの定義

<?xml version="1.0" encoding="UTF-8" ?>
<adfmf:application xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                   xmlns:adfmf="http://xmlns.oracle.com/adf/mf"
                   name="MobileApplication" 
                   id="com.company.MobileApplication"
                   appControllerFolder="ApplicationController"  
                   version="1"
                   vendor="oracle"
                   listener-class="application.LifeCycleListenerImpl">
  <adfmf:description>This is an ADF Mobile application</adfmf:description>
  <adfmf:featureReference id="PROD"/>
  <adfmf:featureReference id="HCM"/>
  <adfmf:featureReference id="Customers"/>
      <adfmf:preferences>
<adfmf:preferenceGroup id="a" label="Prefs Group A">
        <adfmf:preferenceBoolean id="a1_sound" label="Sound Effects"/>
        <adfmf:preferenceNumber id="a2_retries" label="Retries" default="3"/>
        <adfmf:preferenceList id="a3_background" label="Background" default="3">
          <adfmf:preferenceValue name="None" value="0" id="pv4"/>
          <adfmf:preferenceValue name="Field" value="1" id="pv1"/>
          <adfmf:preferenceValue name="Galaxy" value="2" id="pv5"/>
          <adfmf:preferenceValue name="Mountain" value="3" id="pv6"/>
        </adfmf:preferenceList>
        <adfmf:preferenceText id="a4_name" label="Default Name"/>
        <adfmf:preferencePage id="aa" label="Prefs SubGroup AA">
          <adfmf:preferenceGroup id="aa_sec" label="Security">
            <adfmf:preferenceBoolean id="aa_sec_useSec" label="Use Security"/>
            <adfmf:preferenceNumber id="aa_sec_timeout" label="Timeout (secs)" default="120"/>
          </adfmf:preferenceGroup>
        </adfmf:preferencePage>
      </adfmf:preferenceGroup>
      <adfmf:preferenceGroup id="b" label="Prefs Group B">
        <adfmf:preferenceBoolean id="b_cloudSync" label="Cloud Sync"/>
        <adfmf:preferenceList id="b_dispUsage" label="Display Usage As" default="1">
          <adfmf:preferenceValue name="Percent" value="1" id="pv2"/>
          <adfmf:preferenceValue name="Minutes" value="2" id="pv3"/>
        </adfmf:preferenceList>
      </adfmf:preferenceGroup>
    </adfmf:preferences>
</adfmf:application>

図13-1では、子ユーザー・プリファレンス・ページを開くことでそれに続くオプションを提供する方法の例を示しています。

図13-1 ユーザー・プリファレンス・ページ

iOSデバイス上で起動されるユーザー・プリファレンス・ページの例

プリファレンス・ページは<adfmf:preferenceGroup>要素内で定義され、次の子要素が存在します。

これらの要素およびその属性の詳細は、Oracle Fusion Middleware Oracle ADFモバイルのタグ・リファレンスを参照してください。

ADFモバイル・アプリケーションおよびアプリケーション機能レベルの両方のプリファレンス・ページを作成する例については、PrefDemoサンプル・アプリケーションを参照してください。このサンプル・アプリケーションは、開発コンピュータのJDeveloperインストール・ディレクトリ内で次の場所にあるPublicSamples.zipファイルに置かれています。

jdev_install/jdeveloper/jdev/extensions/oracle.adf.mobile/Samples

PrefDemoアプリケーションは、アプリケーションレベルの設定ページと、ADFモバイルAMXとして実装されている3つのアプリケーション機能のプリファレンス・ページで構成されています。図13-2は、通常の設定ページから起動する、PrefDemoアプリケーションの設定ページを示しています。この図では、プリファレンス設定ページをiOSの設定アプリケーションから起動しています。

図13-2 PrefDemoアプリケーションの設定ページ

PrefDemo設定ページは「設定」で利用できます。

図13-3「App」「Feature1」(これが選択されています)および「Feature 2」と表示されているアプリケーション機能のプリファレンス・ページでは、ADFモバイル・ブール・スイッチ、入力テキストおよび出力テキストの各コンポーネントから構築されたプリファレンス・ページの例が示されています。これらのコンポーネントは、EL(式言語)を使用してアプリケーション機能やその内部に構成されている様々な<adfmf:preferences>コンポーネントにアクセスします。詳細は、第13.3項「ユーザー・プリファレンス・ページ用に格納された値を取得するEL式の使用方法」を参照してください。

図13-3 PrefDemoアプリケーションに表示されたアプリケーション機能のプリファレンス・ページ

アプリケーション機能の設定ページ

PrefDemoアプリケーションでは、ビュー・アクティビティとページ・リフレッシュが可能な制御フロー・ケースで構成される単一のバインド・タスク・フローによって、ADFモバイルAMXの各プリファレンス・ページが参照されます。

13.1.1 モバイル・アプリケーションレベルのプリファレンス・ページの作成方法

adfmf-application.xml概要エディタの「プリファレンス」ページ(図13-4を参照)では、<adfmf:preferenceGroup>内の子プリファレンス・ページ要素をネストすることでアプリケーションレベルのプリファレンス・ページ・セットを構築できます。このページでは、<adfmf:preferencesGroup>およびその子要素が同様に名付けられたオプション(「プリファレンス・グループ」、「プリファレンス・ページ」、「プリファレンス・リスト」など)として示され、JDeveloperの「構造」ウィンドウと同様にこれらを階層(またはツリー)にアセンブルします。

図13-4 プリファレンス・ページを使用したモバイル・アプリケーションレベルのプリファレンスの追加

概要エディタの「プリファレンス」ページ

adfmf-application.xmlファイルを正しく構成するには、図13-4に示す「プリファレンス」ページの「追加」ドロップダウン・リストを使用してユーザー・プリファレンス・ページを構築します。また、図13-5に示す「プリファレンス」パレットからコンポーネントをドラッグして、エディタ、「ソース」ウィンドウまたは「構造」ウィンドウのいずれかにドロップできる一方で、そのページのドロップダウン・リストには、選択されたプリファレンス要素に対して、適切な親、子または兄弟の関係を持つことができる要素のみが提示されます。たとえば、図13-4には、プリファレンス・グループ要素であるOracleモバイル・アプリケーション内に挿入できるコンポーネントのみが示されています。また、このエディタでは、各プリファレンス要素に固有の属性に対して値を入力できます。

図13-5 「コンポーネント・パレット」内の「プリファレンス」

「コンポーネント・パレット」から要素を選択します。

プリファレンス・ページを作成するには:

  1. 「プリファレンス」をクリックします。

  2. 「追加」をクリックして、親である<adfmf:preferenceGroup>要素を作成します。

  3. 次の情報を「プリファレンス・グループの挿入」ダイアログ(図13-6を参照)に入力します。

    図13-6 親プリファレンス・グループ要素の定義

    親プリファレンス・グループ要素を定義します。
    • プリファレンス・グループ要素の一意の識別子を入力します。

    • ユーザー・インタフェースに表示される説明テキストを入力します。ユーザー・インタフェースにこのテキストを表示する方法の例は、図13-1を参照してください。

  4. 「追加」をクリックし、「前に挿入」「内部に挿入」「後ろに挿入」の各オプションを使用してさらにプリファレンス・ページを定義し、XML文書が正しく構成されるようにします。

13.1.1.1 新しいユーザー・プリファレンス・ページの作成方法

プリファレンス・ページ・コンポーネントでは新しいユーザー・インタフェース・ページを作成できます。「前に挿入」「内部に挿入」「後ろに挿入」の各オプションを使用してプリファレンス・ページを作成します。

始める前に:

プリファレンス・グループ要素を作成する必要があります。

新しいユーザー・プリファレンス・ページを作成するには: 

  1. 「プリファレンス・グループ」要素を選択します。

  2. 「追加」をクリックして「内部に挿入」(プリファレンス・グループ)を選択し、「プリファレンス・ページ」を選択します。図13-7に示すとおり、プリファレンス・グループはMobileAppと呼ばれています。

    図13-7 プリファレンス・ページ・コンポーネントの選択

    プリファレンス・ページを選択します。
  3. 「プリファレンス・ページの挿入」ダイアログ(図13-8を参照)に次のプリファレンス・ページ属性を定義します。

    • プリファレンス・ページ要素の一意の識別子を入力します。

    • ユーザー・インタフェースに表示される説明テキストを入力します。

    図13-8 「プリファレンス・ページの挿入」ダイアログ

    一意の識別子と表示名を入力します。
  4. プリファレンス・ページを選択し、図13-9に示すとおり、「内部に挿入」(プリファレンス・ページ)→「プリファレンス・グループ」と選択することで、子プリファレンス・グループ要素を挿入し、プリファレンス・ページの本体を作成します。子プリファレンス・グループの一意の識別子と表示名を定義すると、これにプリファレンス・リスト要素などの他の要素を移入できます(例13-2を参照)。

    図13-9 プリファレンス・グループのプリファレンス・ページへの追加

    子グループをページ・グループに挿入します。

13.1.1.2 プリファレンス・ページを追加する場合の処理

概要エディタでプリファレンス・ページとその子プリファレンス・グループ・コンポーネントを定義すると、JDeveloperでは、例13-2と同様の属性を使用して<adfmf:preferencePage>が生成されます。<adfmf:preferencePage>は、親<adfmf:preferenceGroup>要素内にネストされます。

例13-2 <adfmf:PreferencePage element>の追加

<adfmf:preferences>
          <adfmf:preferenceGroup id="gen"
                                 label="Oracle Mobile App">
                     <adfmf:preferencePage id="application_version"
                                           label="Version">
                    <adfmf:preferenceGroup id="version_select"
                                           label="Select Your Version">
                         <adfmf:preferenceList id="edition"
                                                label="Edition"
                                                default="PERSONAL">
                              adfmf:preferenceValue name="Enterprise"
                                                    id="pv2"/>
                              <adfmf:preferenceValue name="Personal"
                                                     value="PERSONAL"
                                                     id="pv1"/>
                         </adfmf:preferenceList>
                    </adfmf:preferenceGroup>
                     </adfmf:preferencePage>
</adfmf:preferences>

13.1.1.3 ユーザー・プリファレンス・リストの作成方法

プリファレンス・リスト・コンポーネントを追加してオプションのリストを作成します。

始める前に:

プリファレンス・リストまたは他のすべてのリストに関連するコンポーネントの親としてプリファレンス・グループを作成する必要があります。

ユーザー・プリファレンス・リストを作成するには:

  1. 「プリファレンス・グループ」または「プリファレンス・ページ」を選択して、「追加」→「内部に挿入」→「プリファレンス・リスト」の順にクリックします。例13-2には、Select Your Versionという名前のプリファレンス・グループ・コンポーネントの子としてプリファレンス・リストを追加する例が示されています。

    図13-10 プリファレンス・リスト・コンポーネントのプリファレンス・グループへの追加

    プリファレンス・リスト・コンポーネントの追加
  2. 「プリファレンス・リストの挿入」ダイアログ(図13-2を参照)を使用して次の属性を定義し、「OK」をクリックします。

    • 一意の識別子を入力します。

    • ユーザー・インタフェースに表示される説明テキストを入力します。

      図13-11 「プリファレンス・リストの挿入」ダイアログ

      一意の識別子と表示テキストを入力します。
  3. 「プリファレンス値」表(図13-12を参照)で「追加」をクリックし、読取り専用アイテムのリストを定義します。プリファレンス値を選択してから「削除」をクリックすることで、この値を削除することもできます。プリファレンス値の表示順番を変更するには、プリファレンス値を選択してから上および下の矢印を使用します。

    ユーザーにデフォルト設定を提供するには、「デフォルト」を選択します。例13-2に示すように、<adfmf:preferenceList>要素内でデフォルト・ステータスは、default="ENTERPIRSE"と定義されています。


    ヒント:

    「追加」をクリックするほか、それらをドラッグして「構造」ウィンドウまたは「ソース」ウィンドウのいずれかにドロップしても、プリファレンス値コンポーネントを追加できます。


    図13-12 プリファレンス値の追加

    プリファレンス値を追加します。

13.1.1.4 プリファレンス・リストを作成する場合の処理

プリファレンス・リスト・コンポーネントをプリファレンス・グループに追加し、一連のプリファレンス値を定義すると、例13-2に示すように、JDeveloperでは<adfmf:preferenceList>要素を使用して<adfmf:preferences>セクションが更新されます。

13.1.1.5 ブール型のプリファレンス・リストの作成方法

たとえば、例13-1を参照してください。

始める前に:

<adfmf:preferenceBoolean>要素は<adfmf:preferenceGroup>要素内にネストされる必要があるため、まずプリファレンス・グループ・コンポーネントを階層に挿入する必要があります。

ブール型のプリファレンス・リストを作成するには:

  1. 図13-13のGPS設定など、プリファレンス・グループ要素を選択します。

    図13-13 ブール型プリファレンスのプリファレンス・グループへの追加

    ブール型プリファレンス・グループを選択します。
  2. 「ブール型のプリファレンスの挿入」ダイアログ(図13-14を参照)を使用して次の属性を定義し、「OK」をクリックします。

    • 一意の識別子を入力します。

    • ユーザー・インタフェースに表示される説明テキストを入力します。

    図13-14 「ブール型のプリファレンスの挿入」ダイアログ

    一意のIDおよび表示テキストを追加します。
  3. デフォルト値のfalseをそのまま使用するか、trueを選択します。

13.1.1.6 ブール型のプリファレンスを追加する場合の処理

ブール型のプリファレンスを追加してそのデフォルト値を指定した場合、例13-3に示すように、JDeveloperでは、<adfmf:preferenceBoolean>要素を使用してadfmf-application.xmlファイルの<adfmf:preferences>セクションが更新されます。

例13-3 <adfmf:preferenceBoolean>要素の追加

<adfmf:preferencePage id="gps_tracking" 
                      label="Your_GPS_Locations">
   <adfmf:preferenceGroup id="gps" 
                          label="GPS Settings">
      <adfmf:preferenceBoolean id="trackGPS"
                               label="Auto Track Location" 
                               default="true"/>
</adfmf:preferencePage>

13.1.1.7 テキストのプリファレンスの追加方法

図13-15に示すように、挿入オプションを使用して、ユーザーが情報を格納したりデフォルト・テキストを閲覧できるようにする「テキストのプリファレンス」というダイアログを作成します。図13-15は、「セキュリティ」という名前のプリファレンス・グループ内にテキストのプリファレンスを作成する例を示しています。

図13-15 「テキストのプリファレンス」の挿入

「テキストのプリファレンスの挿入」を選択します。

始める前に:

プリファレンス・グループ要素を作成します。

テキストのプリファレンスを作成するには:

  1. プリファレンス・グループ要素を選択します。

  2. 「内部に挿入」「テキストのプリファレンス」を選択します。

  3. 「テキストのプリファレンスの挿入」ダイアログ(図13-16を参照)に次の情報を入力して、「OK」をクリックします。

    • 一意の識別子を入力します。

    • ユーザー・インタフェースに表示される説明テキストを入力します。

    図13-16 「テキストのプリファレンスの挿入」ダイアログ

    テキストのプリファレンスを挿入します。
  4. テキストのプリファレンス・ダイアログに次を定義します。

    • デフォルトのテキスト値を入力します。

    • テキストのプリファレンスを非表示にするには、「機密」を選択します。

図13-17 テキストのプリファレンスの定義

テキストのプリファレンスを作成します。

13.1.1.8 テキストのプリファレンスを定義する場合の処理

テキストのプリファレンスを追加してそのデフォルト値を指定すると、例13-4に示すように、JDeveloperでは、<adfmf:preferenceText>要素を使用してadfmf-application.xmlファイルの<adfmf:preferences>セクションが更新されます。

例13-4 <adfmf:preferenceText>要素の追加

   <adfmf:preferenceGroup id="security" label="Security">
      <adfmf:preferenceText id="serviceURL"
                            label="Security URL" 
                            default="http://security.example.com/provider"/>
      <adfmf:preferenceText  id="username"  
                             label="User Name"/>
      <adfmf:preferenceText  id="password"   
                             label="Password"
                             secret="true"/>
   </adfmf:preferenceGroup>

セキュリティURL、ユーザー名およびパスワードのプリファレンス設定を定義するプリファレンス・グループ要素は図13-18のように表示されます。

図13-18 テキストのプリファレンス

iOSシミュレータ上のテキストのプリファレンス

図13-18は、セキュリティURLがシードされた値、ユーザー名が入力値の<adfmf:preferenceText>要素を示しています。ADFモバイルのプリファレンスはiOS設定アプリケーションと統合されているため、パスワード入力テキストのsecret="true"属性により、ユーザーの入力を黒丸で覆うiOSの表記規則に従うアプリケーションとなります。詳細は、iOS Developer Library(http://developer.apple.com/library/ios/navigation/)で入手可能な『Settings Application Schema Reference』isSecureテキスト・フィールド要素の説明および第13.4項「プラットフォームによる表示の差異」を参照してください。

13.1.2 アプリケーションレベルのプリファレンス・ページを作成する場合の処理

ADFモバイル・アプリケーションをデプロイすると、アプリケーション全体のプリファレンス設定ページがiOSデバイスの設定アプリケーションなど、デバイスのグローバル設定アプリケーションに伝播されます。詳細は、第17.2.3.6項「AndroidエミュレータまたはAndroidデバイスにアプリケーションをデプロイする場合のJDeveloperでの処理」第17.4.5.1項「iOSシミュレータまたはiOSデバイスにアプリケーションをデプロイする場合のJDeveloperでの処理」および付録C「デプロイメントでのプリファレンスの変換」を参照してください。

13.2 アプリケーション機能のユーザー・プリファレンス・ページの作成

第5.12項「機能アーカイブ・ファイルの使用」で説明するように、アプリケーション機能をADFモバイル・アプリケーションと別個に配布するには、そのアプリケーション機能を含む機能アプリケーション・アーカイブ (FAR) .jarファイルを、別のADFモバイル・アプリケーションに追加します。その後、このアプリケーション機能を、アプリケーションのadfmf-application.xmlファイル内で参照します。アプリケーション機能において、使用先のアプリケーション用に定義した全般的なプリファレンスだけでなく、特定のユーザー・プリファレンスのセットが必要になる場合は、adfmf-feature.xmlの概要エディタの「プリファレンス」タブを使用して、該当するプリファレンスを定義できます(図13-19を参照)。第13.1項「ADFモバイル・アプリケーションのユーザー・プリファレンス・ページの作成」の説明に従い、アプリケーション・レベルのプリファレンスを構築する方法で、アプリケーション機能のプリファレンスを構築します。adfmf-feature.xml file内でプリファレンスを定義したら、次は第7.3項「UIコンポーネントの作成と使用方法」で説明したブール・スイッチ、入力および出力の各コンポーネントに埋め込むADFモバイルAMXページを参照するアプリケーション機能を作成することによって実際のプリファレンス・ページを作成します。

図13-19 アプリケーション機能レベルのプリファレンスの設定

「プリファレンス」タブ

13.3 ユーザー・プリファレンス・ページ用に格納された値を取得するEL式の使用方法

アプリケーション機能レベルのプリファレンス・ページを作成する場合、例13-5の入力テキスト・コンポーネントなど、ADFモバイルAMXコンポーネントに対してEL式を追加します。

例13-5 ADFモバイルAMXコンポーネントでELを使用したプリファレンス値の参照

<amx:inputText label="Number" id="it1" inputType="number"
               value="#{preferenceScope.feature.Feature1.f1top.f1Number}"/>

例13-5に示すとおり、EL式では、preferenceScopeオブジェクトを使用して、アプリケーションがアプリケーション機能レベルのプリファレンスにアクセスできるようにします。これらのEL式の書式は次のとおりです。

preferenceScope.feature.feature-id.group-id.property-id

図13-20は、式ビルダーを使用したEL式の作成について説明しています。アプリケーション機能(<adfmf:feature id="Feature1">)のID、プリファレンス・グループ(<adfmf:preferenceGroup id="f1top">)のID、プリファレンス・プロパティ(<adfmf:preferenceNumber id="f1Number">)のIDなど、adfmf-feature.xml内の様々なコンポーネントに対して構成されるIDによってプリファレンス自体が指定されています。

EL式には、ゼロ個以上のgroup-id要素およびproperty-id要素が含まれる可能性があります。

図13-20 プリファレンスに対するEL式の構築

EL式でのpreferenceScopeオブジェクトの使用

13.3.1 preferenceScopeに関する必知事項

EL式には次の解決パターンがあります。

  • JavaScriptレイヤーから、次のJavaScript関数を使用してEL値式を解決します。

    adf.mf.el.getValue(expression, success, failed)
    

    adf.mf.el.getValueの解決では、まずJS-ELパーサーとJavaScriptコンテキスト・キャッシュをローカルで使用して式の解決を試みます。式がローカルで解決できない場合は、その式を埋込みJavaレイヤーに評価用として渡し、そこでJava ELパーサーによって解決されます。これは、モデルのgetValueメソッドに対するGenericInvokeRequestを使用して処理されます。

  • Javaレイヤーで、次の手法を使用してEL値式を解決します。

    String val = AdfmfJavaUtilities.evaluateELExpression("#{preferenceScope.feature.f0.vendor}");
    

    setValueメソッドでは、次のように式を解決します。

    ValueExpression ve = AdfmfJavaUtilities.getValueExpression("#{preferenceScope.feature.f0.vendor}");
    ve.setValue(AdfmfJavaUtilities.getADFELContext(), value);
    

    EL式の評価には、preferenceScopeオブジェクトの検索が含まれます。評価は左から右に行われ、各トークンは別個に解決されます。トークンが解決されると、これは次の(その右側の)トークンの解決に使用されます。

preferenceScopeオブジェクトがない場合は、プリファレンスを公開できません。

13.3.2 iOSネイティブ・ビューでのプリファレンス値の読取り

ADFモバイルでは、ネイティブUI(UIViewUIViewControllerなど)に提供されているAPIが統合され、iOSプラットフォームで一定の構成が可能です。

ネイティブUIを初期化すると、ADFSession オブジェクトのインスタンスが利用可能になります。そのgetPreferencesメソッドを使用して、ADFモバイルに対し、adfmf-application.xmlファイルで定義されているアプリケーションで利用可能なプリファレンスのリストを提供するように命令できます。例13-6に示すとおり、このメソッドでは、プリファレンスにidvalueおよびlabelを含めることができるプリファレンス・プロパティ・オブジェクトのNSArray*が戻されます。このAPIコールでは、エンド・ユーザーによって特定のプリファレンスの値が提供されたこと、またはプリファレンスのデフォルト値が戻されていることのいずれかを確認します。

例13-6 プリファレンスの取得

//...
-(id) initWithADFSession:(id<ADFSession>) providedSession
{
   id me = [self init];
   session = providedSession;
   //...
   // Dump the preferences to the data display
   NSArray* prefsArray = [session getPreferences];
   NSString* prefs = [prefsArray JSONRepresentation];
   self.theData.text = [[NSString alloc ] initWithFormat:
        :@"%@\nUser Preferences = --> %@ <--", self.theData.text, prefs];
   //...
   return me;
}

13.4 プラットフォームによる表示の差異

ADFモバイルのプリファレンス・ページでは、iOSおよびAndroidの両プラットフォームでネイティブのルック・アンド・フィールが維持されます。その結果、ADFモバイルのプリファレンス・ページの表示は2つのプラットフォームで異なります。表13-1に示すとおり、iOSプラットフォームではプリファレンスがインラインで表示されるため、そのシステムではダイアログ・ページを起動しません。いくつかの例外を除いて、Androidプラットフォームではこれらのコンポーネントがダイアログで表示されます。

表13-1 プラットフォームごとのプリファレンス・コンポーネントの比較

コンポーネント iOS iOSの表示例 Android Androidの表示例

ブール型のプリファレンス・リスト

ブール型のプリファレンスは、onoffなどのペアの値で表示されます。

iOSのブール値

Androidでは、ブール型のプリファレンスをチェック・ボックスで表示します。

Androidのブール型プリファレンス・リストの例

テキストのプリファレンス(デフォルトは読取り専用のテキスト)

iOSは読取り専用のテキストをインラインで表示します。

iOSの出力テキストのプリファレンスの例

Androidは読取り専用のテキストをインラインで表示します。

Androidの出力テキストのプリファレンスの例

テキストのプリファレンス(入力テキスト)

iOSプラットフォームでは、ユーザーはテキストをインラインで入力します。

iOSの入力テキストのプリファレンスの例

Androidでは、入力テキスト・ダイアログを起動します。

Androidの入力テキストのプリファレンスの例

テキストのプリファレンス(機密入力テキスト)

iOSプラットフォームでは、ユーザーはテキストをインラインで入力し、各文字はその入力後に黒丸で覆われます。詳細は、第13.1.1.8項「テキストのプリファレンスを定義する場合の処理」を参照してください。

iOSの非表示テキスト・プリファレンスの例

Androidでは、入力テキスト・ダイアログが起動し、各文字はその入力後に黒丸で覆われます。

Androidの非表示プリファレンスの例

単一のアイテム選択リスト(プリファレンス・リストから)

iOSプラットフォームでは別のプリファレンス・ページに単一のアイテム選択リストが表示されます。

iOSの単一アイテム・リストの例

Androidでは、ダイアログ内に単一のアイテム選択リストが表示されます。

Androidの単一アイテム・リストの例

プリファレンス・グループ(カテゴリ選択)

iOSでは、その親プリファレンス・グループ内にプリファレンス要素が表示されます。

iOSのカテゴリ選択の例

Androidでは、その親プリファレンス・グループ内にプリファレンス要素が表示されます。

Androidのカテゴリ選択コンポーネントの例

プリファレンス・ページ

iOSでは、プリファレンス・グループから子プリファレンス・ページを起動します。

iOSでネストされたページの例

Androidでは、プリファレンス・グループから子プリファレンス・ページを起動します。

Androidでネストされたページの例

iOSおよびAndroidのプラットフォームには設定アプリケーションがありますが、図13-21のプリファレンスで示すように、設定アプリケーションへのアプリケーション・レベルのプリファレンスの統合はiOSプラットフォームのみでサポートされます。

図13-21 iOS設定アプリケーションでのOracleモバイル・プリファレンス

iOS設定でのOracleプリファレンス

Androidデバイスでは、ユーザーは、アプリケーションが実行されている場合のみ、図13-22のようなアプリケーション固有のプリファレンス・ページにアクセスします。

図13-22 Androidデバイスのプリファレンス・メニュー

Androidのプリファレンス・メニュー

13.5 構成サービスのURLに対するプリファレンスの作成

構成サービスのプロンプト・ダイアログで、構成サービスのURLエンドポイントに移行するときに発生するユーザー・エラーを最小限に抑えるには、デフォルトのURLを取得するプリファレンスを、構成サービスのURLに対して作成します(図13-23を参照)。ダイアログに移入されるURLはプリファレンス値に基づくため、ADFモバイルでは、ユーザーがプリファレンスを更新するタイミングにかかわらず、そのダイアログに新しいURLを移入できます。

図13-23 構成URLのプリファレンス(iPhone上)

文字列のURL値を含むテキストのプリファレンス。

オプションで、構成URLのデフォルト値(企業固有のURLなど)を含めることができます。これにより、第10.2項「構成サービスの使用」に記載されている、adf-config.xmlファイルのadfmf-configuration-service-seed-urlプロパティに対して定義された値が置き換えられます。

13.5.1 デフォルトの構成URLのシード方法

構成サービスのURLのデフォルト値を含むテキストのプリファレンスを作成し、そのテキストのプリファレンスを参照するように、adf-config.xmlファイルを更新します。


ヒント:

構成サービスは個々のアプリケーション機能に関連付けられていないため、アプリケーション・レベルのテキストのプリファレンスを作成します。


始める前に:

第10.2項「構成サービスの使用」を参照してください。

アプリケーション全体のプリファレンスを作成する手順は次のとおりです。

  1. 第13.1.1.7項「テキストのプリファレンスの追加方法」の説明に従い、プリファレンス・グループ内にテキストのプリファレンスを作成します。

  2. 構成サービスのURLをデフォルト値として入力します(例13-7を参照)。

例13-7 構成サービスのURLに対するテキストのプリファレンスの作成

</adfmf:preferenceGroup>
        <adfmf:preferenceGroup id="Configuration_Service"
                               label="Configuration
                               Service Seed URL">
            <adfmf:preferenceText id="seed_URL"
                                  label="Seed URL"
                                  default="http://www.example.com"/>
        </adfmf:preferenceGroup>

プリファレンス値を参照する手順は次のとおりです。

  1. adf-config.xmlファイル(アプリケーション・ナビゲータのADF META-INFディレクトリ内にあります)のソース・エディタで、adfmf-configuration-service-seed-url-preferenceプロパティを追加します。

  2. adfmf-application.xmlファイル内で構成された、プリファレンス・グループとテキストのプリファレンスに対するid値を参照します(例13-7を参照)。例13-8は、application.Configuration_Service.seed_URLという形式を使用してこの参照を作成する方法を示しています。

    例13-8 adfmf-configuration-service-seed-url-preferenceプロパティの構成

     <adf:adf-properties-child xmlns="http://xmlns.oracle.com/adf/config/properties">
       <adf-property name="adfAppUID" 
                     value="Employees-2494"/>
       <adf-property name="adfmf-configuration-service-seed-url-preference"
                    value="application.Configuration_Service.seed_URL"/>
       <adf-property name="adfmf-configuration-service-seed-url"
                    value="http://myhost.us.example.com:7777/
       </adf:adf-properties-child>
    

注意:

use-configuration-service-at-startupプロパティを含めると、Androidデバイスでは、ユーザーがアプリケーション・レベルの設定にアクセスしてからADFモバイル・アプリケーションを起動できなくなるため、問題が発生する場合があります。このプロパティを使用する場合は、テキストのプリファレンス内で、デフォルトのURLを定義します。


13.5.2 テキストのプリファレンスを使用してURLをシードする場合の処理

checkForNewConfigurationメソッドでは、adfmf-configuration-service-seed-url-preferenceプロパティ内で定義された、参照先のテキストのプリファレンスがadf-config.xmlファイル内にあるかどうかをチェックするよう、ADFモバイルに求めます。プリファレンスに、構成サーバーのURLに対して定義されたdefault値が含まれている場合、ADFモバイルでは、この文字列を構成サービスのプロンプト・ダイアログに移入します(図13-24を参照)。

図13-24 構成サービスのダイアログへのプリファレンス値の移入

ダイアログ内に表示されるプリファレンス値。

プリファレンスにこの文字列が含まれていない場合(ADFモバイル・アプリケーションがAndroidデバイスにデプロイされているが、まだ起動していない場合など)、ADFモバイルでは、adfmf-configuration-service-seed-urlプロパティに対して定義された、ハードコード化された値をフィールドに移入します。以降のチェックに対して(つまり、ユーザー資格証明がローカル・ストア内にキャッシュされたとき)、ADFモバイルでは、テキストのプリファレンスのdefault値を、構成サービスのURLとしてダイアログに移入します。詳細は、第B.2.3項「checkforNewConfiguration」を参照してください。

ランタイムでは、「テキストのプリファレンス」のデフォルト値がフェッチされますが、URLがダイアログ内に存在しない場合、この動作はプラットフォームによって異なります。ユーザーが初めてAndroidデバイス上でADFモバイル・アプリケーションを実行した場合、ADFモバイルでは、プリファレンス値を使用して構成サービスのプロンプト・ダイアログを移入できません。adfmf-application.xml内で定義された値は、まだランタイムによってプリファレンスに移入されていないため、かわりに、adfmf-configuration-service-seed-urlプロパティに対して定義された文字列が使用されます。さらにユーザーは、アプリケーションが実行されていない場合、アプリケーション固有の設定をこのURLで更新できません。アプリケーションの起動後のみ、ユーザーはプリファレンスを構成サービスのURLで更新でき、そのプリファレンスは、次回のADFモバイル・アプリケーションの起動時から使用されます。詳細は、第13.4項「プラットフォームによる表示の差異」を参照してください。


ヒント:

このようなデバイスおよび状態に関連した考慮事項に対処するため、テキストのプリファレンスに対してデフォルトのURL値を定義するか、adfmf-configuration-service-seed-urlプロパティとadfmf-configuration-service-seed-url-preferencesプロパティの両方をadf-config.xmlファイル内に指定してください。