現在表示中:

コンテンツ同期ハンドラーの開発については、以下のガイドラインを参照してください。

  • ハンドラーは、com.day.cq.contentsync.handler.ContentUpdateHandler を実装する必要があります(直接実装するか、これを実装するクラスを拡張します)。
  • ハンドラーは、com.adobe.cq.mobile.platform.impl.contentsync.handler.AbstractSlingResourceUpdateHandler を拡張できます。
  • ハンドラーは、コンテンツ同期キャッシュを更新した場合にのみ true を返す必要があります。誤って true を返すと、AEM で更新が作成されます。
  • ハンドラーは、コンテンツが実際に変更された場合にのみ、キャッシュを更新する必要があります。書き込みが必要ない場合は、キャッシュに書き込まないでください。不要な更新の作成は避けるようにします。

既製のハンドラー

以下に、既製のアプリハンドラーのリストを示します。

mobileapppages

アプリページをレンダリングします。

  • type - String - mobileapppages
  • path - String - ページへのパス
  • extension - String - 要求で使用する拡張子。ページの場合、これはほぼ常に html となりますが、他の拡張子も使用できます。
  • selector - String - オプションのセレクター(ドット区切りで指定します)。一般的な例として、touch(モバイルバージョンのページのレンダリング用)が挙げられます。
  • deep - Boolean - 子ページも含める必要があるかどうかを指定する、オプションのブール値プロパティ。デフォルト値は true です。
  • includeImages - Boolean画像を含める必要があるかどうかを指定する、オプションのブールプロパティ。デフォルト値は true です。
    • デフォルトでは、リソースタイプが foundation/components/image の画像コンポーネントだけが追加の対象になります。
  • includeVideos - Boolean - ビデオを含める必要があるかどうかを指定する、オプションのブールプロパティ。デフォルト値は true です。
  • includeModifiedPagesOnly - Boolean - false を指定するか、省略すると、すべてのページをレンダリングし、レンダリング時に更新をチェックします。true の場合、最後に変更されたページに対する変更に基づいて差異を処理します。
  • + rewrite (node)
          - relativeParentPath - String - 他のすべての相対パスへの書き込み時の基準となるパス。

注意:

このハンドラーによって影響を受ける画像およびビデオコンポーネントのリソースタイプは、com.adobe.cq.mobile.platform.impl.contentsync.handler.MobilePagesUpdateHandler OSGi サービスのプロパティによって設定します。

mobilepageassets

アプリページのアセットを収集します。

mobilecontentlisting

コンテンツ同期の zip の内容をリストします。これは、デバイスのクライアント側 js によって使用され、AEM アプリで必要な最初のファイルコピーを実行します。

このハンドラーは、すべての AEM アプリコンテンツ同期設定に追加する必要があります。

  • type - String - mobilecontentlisting
  • path - String - 空にします。有効なハンドラーとして認識されるには存在する必要がありますが、パスは現在のコンテンツ同期キャッシュと推定されます。この値は無視されます。
  • targetRootDirectory - String - このハンドラーのコンテンツ更新のターゲットルートとしてパスに追加するプレフィックス。
  • order - Long - コンテンツ同期でこのハンドラーを実行する順序。この番号は、他のすべてのハンドラーよりも大きい値に設定する必要があります(100 など)。従来のコンテンツハンドラーの後に実行する必要があります。

{
  "files": [
    "config.xml",
    "res/screens/ios/screen-ipad-portrait-2x.png",
    "res/screens/ios/screen-ipad-landscape.png",
    "res/screens/ios/screen-iphone-portrait-2x.png",
    "res/screens/ios/screen-iphone-landscape.png",
    "res/screens/ios/screen-iphone-portrait.png",
    "apps/weretail-app/components/splash-page/clientlibs.css",
    ...
    "pge-content-packages.json"
  ],
  "count": 382,
  "lastModified": 1422902754733
}

mobilecontentpackageslisting

特定のアプリの AEM コンテンツパッケージ、および更新要求先のサーバー URL をリストします。これは、デバイスのクライアント側 js で、コンテンツ更新の要求に使用されます。

このハンドラーは、AEM アプリシェルのコンテンツ同期設定で使用する必要があります(pge-type=app-instance のノード)。

  • type - String - mobilecontentpackageslisting
  • path - String - アプリシェルへのパス(pge-type=app-instance のノード)。
  • targetRootDirectory - String - このハンドラーのコンテンツ更新のターゲットルートとしてパスに追加するプレフィックス。
  • order - Long - コンテンツ同期でこのハンドラーを実行する順序。この番号は、他のすべてのハンドラーよりも大きい値に設定する必要があります(100 など)。従来のコンテンツハンドラーの後に実行する必要があります。

注意:

以下のコードブロックは厳密な実装ではなく、参考例として使用してください。

{
  "content": [
    {
      "name": "en",
      "title": "We Retail Mobile App - English",
      "type": "CONTENT",
      "path": "/content/phonegap/weretail-outdoors/en",
      "updatePath": "/content/phonegap/weretail/en/jcr:content/pge-app/app-config"
    },
    {
      "name": "shell",
      "title": "We Retail Mobile App",
      "type": "INSTANCE",
      "path": "/content/phonegap/weretail-outdoors/shell",
      "updatePath": "/content/phonegap/weretail/shell/jcr:content/pge-app/app-config"
    }
  ],
  "serverURL": "http://localhost:4503/"
}

widgetconfig

指定された config.xml を使用してコマンドセンターからおこなわれた編集内容を統合する、更新された config.xml を含めます。このハンドラーがアプリに含まれていない場合、管理インターフェイスで変更された詳細はキャッシュに含まれません。

このハンドラーは、AEM アプリシェルのコンテンツ同期設定で使用する必要があります(pge-type=[app-instance] のノード)。

  • type - Stringwidgetconfig
  • path - String - アプリシェルの子ノードへのパス(pge-type=[app-instance] のノード)。
  • targetRootDirectory - String - このハンドラーのコンテンツ更新のターゲットルートとしてパスに追加するプレフィックス。
  • targetIconDirectory - Stringアプリのアイコンを配置するディレクトリ

mobileADBMobileConfigJSON

AMS クラウドサービスが設定されている場合に ADBMobileConfig.JSON ファイルを含めます。

これは、解析をサポートするための AMS プラグインを設定するためにコンパイル時に使用されます。

このハンドラーは、AEM アプリシェルのコンテンツ同期設定で使用する必要があります(pge-type=app-instance のノード)。

  • type - String mobileADBMobileConfigJSON
  • path - String - アプリシェルへのパス(pge-type=app-instance のノードまたは /libs/mobileapps/core/components/instance を拡張する RT)
  • targetRootDirectory - String - このハンドラーのコンテンツ更新のターゲットルートとしてパスに追加するプレフィックス

notificationsconfig

デバイスで必要な通知設定を抽出します。プロパティは、アプリに関連付けられた各プッシュサービスクラウドサービス設定から抽出されます。

クラウドサービスの jcr:content ノードの非 AEM プロパティが抽出され、pge-notifications-config.json JSON ファイルに追加されて、アプリコンテンツの WWW ルートに組み込まれます。

AEM プロパティは、「cq」、「sling」または「jcr」のネームスペースが付いたプロパティです。他のプロパティは、コンテンツ同期設定ノードの「excludeProperties」プロパティを使用して除外できます。

  • type - Stringnotificationsconfig
  • excludeProperties - String[] - 除外するプロパティ

contentsyncconfigcontent

既存のコンテンツ同期設定からコンテンツを収集します。

  • type - Stringcontentsyncconfigcontent
  • path - String - 以下のいずれかへのパス。
    • 別のコンテンツ同期設定
    • コンテンツパッケージ(phonegap-exportTemplate プロパティを使用してコンテンツ同期設定を検索します)
    • モバイルリソース(このリソースの下で app-content が検索され、これらのコンテンツパッケージの pge-includeInBuild プロパティが true の場合、phonegap-exportTemplate を使用してコンテンツ同期設定が検索されます)
  • autoCreateFirstUpdateBeforeImport - Boolean - true の場合、まだ更新が存在しなければ、読み込む前にターゲット設定に初期更新を作成します。
  • autoFillBeforeImport - Boolean - true の場合、読み込む前にターゲット設定に対して更新/入力をおこないます。
  • configSuffix - Stringapp-content の「phonegap-exportTemplate」プロパティに指定されたパスに追加する文字列。これは、異なる書き出しテンプレートを識別するのに使用できます。例えば、このプロパティに「-dev」を設定すると、「/../../../appconfig」ではなく「/../../../appconfig-dev」が使用されます。

app-assets

アプリインスタンスに関連付けられているすべてのアセットを含めます。このハンドラーは、指定されたパスの下にあるすべてのアセットと、アプリインスタンスの appAssetPath プロパティによって参照されているすべてのアセットを含めます。

  • type - String - app-assets
  • path - String - アプリのアセットが保存されているアプリインスタンスの下の場所へのパス。

mobileappoffers

パーソナライゼーションの使用例でターゲットコンテンツをレンダリングするために、新しいコンテンツ同期ハンドラーが導入されています。「mobileappoffers」ハンドラーは、コンテンツ作成者によって作成された、関連するターゲットオファーをレンダリングする方法を認識しています。mobileappoffers ハンドラーは抽象ページ更新ハンドラーを拡張するので、プロパティの多くは同じです。mobileappoffers ハンドラーの詳細には、次のプロパティがあります。

mobileappsoffers ハンドラーは mobileappspages ハンドラーを拡張し、以下のプロパティが追加されます。

  • locationRoot - String - モバイルアプリケーションの場所を指定します。
  • includePageTypes - String - cq/personalization/components/teaserpage および cq/personalization/components/offerproxy をサポートするようにデフォルト値が設定されます。
  • selector - String - tandt に設定する必要があります。
  • path - String - キャンペーンのブランドへのパス。

mobileappconfig

mobileappconfig コンテンツ同期ハンドラーを使用すると、JSON データを MobileAppsConfig.json に挿入できます。プロバイダークラスを登録するには、開発者はプロバイダーのリストに MobileAppsInfoProvider クラスを追加します。ハンドラーは MobileAppsInfoProvider のリストを反復処理し、プロバイダーは結果として生成される json ファイルにデータを挿入できます。このハンドラーがサポートするプロパティのリストは以下のとおりです。

  • path - String - pge-type=app-instance のアプリインスタンスノードまたは /libs/mobileapps/core/components/instance を拡張する RT へのパス
  • providers - String [] - 完全修飾 MobileAppsInfoProvider のリスト
  • targetRootDirectory - String - MobileAppsConfig.json ファイルを書き出す先のディレクトリ。
  • fileName - String - JSON を書き出す先のファイルのオプションの名前。デフォルトは MobileAppsConfig.json です。

それぞれが異なる JSON ファイルに書き出す固有のプロバイダーセットを持つ、複数の mobileappconfig ハンドラーを設定することもできます。

コンテンツ同期ハンドラーのテスト

整合性を確認する手順

  • キャッシュをクリア

  • ハンドラーを実行(キャッシュが更新されます)

  • ハンドラーを再実行(キャッシュは更新されません)

デバッグの手順

  • 設定を実行
  • 設定を書き出すか、デバイス上で確認
  • レンダリングに失敗した場合は、styles/assets/libs があるかどうか、または styles/assets/libs へのパスが正しいかを確認

ログ

OSGI ロガー設定を通じて、パッケージ「com.day.cq.contentsync」に対するコンテンツ同期デバッグのログを有効にします。これにより、ハンドラーが実行した内容と、ハンドラーがキャッシュを更新したか、キャッシュの更新をレポートしたかを追跡できます。

その他のリソース

管理者および開発者の役割と責任について詳しくは、以下のリソースを参照してください。

注意:

AEM Mobile アプリの開発の概要については、こちらを参照してください。

本作品は Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License によってライセンス許可を受けています。  Twitter™ および Facebook の投稿には、Creative Commons の規約内容は適用されません。

法律上の注意   |   プライバシーポリシー