Show Menu
トピック×

Android でのオファーコンテンツのプリフェッチ

Adobe Target のプリフェッチ機能では、サーバーからの応答をキャッシュすることで、Android Mobile SDK を使用して可能な限り少ない回数でオファーコンテンツを取得できます。
Android 用のモバイル SDK のプリフェッチ機能は、Adobe Target の自動ターゲット、自動配分、自動パーソナライゼーションアクティビティタイプではサポートされていません。
このプロセスにより、読み込み時間が短縮され、複数のネットワーク呼び出しが回避されるほか、モバイルアプリユーザーがどの mbox を訪問したかを Adobe Target に通知することができます。プリフェッチ呼び出し中にすべてのコンテンツが取得され、キャッシュされます。このコンテンツは、指定された mbox 名のキャッシュされたコンテンツを含む今後のすべての呼び出しに対してキャッシュから取得されます。
プリフェッチコンテンツは、起動間で保持されません。プリフェッチコンテンツは、アプリケーションが存続するか、 clearPrefetchCache() メソッドが呼び出されるまでキャッシュに保持されます。
Target Prefetch API は、SDK バージョン 4.14.0 以降で使用できます。パラメーターの制限について詳しくは、「 バッチ入力パラメーター 」を参照してください。
SDK バージョン 4.14 以降で、 environmentId が指定されている場合、v2 バッチ mbox TnT 呼び出しを開始すると、 ADBMobileConfig.json ファイルから environmentId を取得します。このファイルで environmentId が指定されていない場合、TNT バッチ mbox 呼び出しで環境パラメーターは送信されず、オファーはデフォルト環境に配信されます。
以下に例を示します。
if (MobileConfig.getInstance().mobileUsingTarget()){ 
            long environmentID = MobileConfig.getInstance().getEnvironmentID(); 
            if(environmentID != 0L){ 
                parametersJson.put(TargetJson.ENVIRONMENT_ID, environmentID); 
            } 
        }

プリフェッチメソッド

以下に、Android でのプリフェッチで使用できるメソッドを示します。
  • prefetchContent
    設定されている Target サーバーに、ロケーションの配列と共にプリフェッチの要求を送信し、指定されたコールバックで要求ステータスを返します。
    • このメソッドの構文を次に示します。
      public static void prefetchContent(
      final List<TargetPrefetchObject> targetPrefetchArray,
      final Map<String, Object> profileParameters,
      final TargetCallback<Boolean> callback)
      
      
    • このメソッドのパラメーターを次に示します。
      • targetPrefetchArray
        プリフェッチする各 Target のロケーションの名前と mboxParameters を含む TargetPrefetchObjects の配列。
      • profileParameters
        この要求のすべてのロケーションプリフェッチで使用されるプロファイルパラメーターのキーと値が含まれます。
      • callback
        プリフェッチの完了時に呼び出されます。プリフェッチが成功した場合は true 、失敗した場合は false を返します。
  • loadRequests
    リクエスト配列に指定された複数の mbox の場所に対してバッチリクエストを実行します。配列内の各オブジェクトにコールバック関数が含まれ、指定された mbox のロケーションに対してコンテンツが使用可能になると呼び出されます。
    要求されたロケーションのコンテンツが既にキャッシュされている場合は、指定されたコールバックで即座に返されます。コンテンツがキャッシュされていない場合は、SDK は Target サーバーにネットワーク要求を送信してコンテンツを取得します。
    • このメソッドの構文を次に示します。
      public static void loadRequests( final List<TargetRequestObject> requestArray,  final Map<String, Object> profileParameters)
      
      
    • このメソッドのパラメーターを次に示します。
      • requestArray
        取得するロケーションごとに、名前、デフォルトコンテンツ、パラメーターおよびコールバック関数を含む TargetRequestObjects の配列。
      • profileParameters
        このリクエストのすべての場所でのプリフェッチで使用するプロファイルパラメーターのキーと値を含みます。
  • clearPrefetchCache
    Target プリフェッチによってキャッシュされたデータをクリアします。
    • このメソッドの構文を次に示します。
      public static void clearPrefetchCache();
      
      
    • このメソッドにはパラメーターがありません。
  • createTargetRequestObject
    指定されたデータを使用して TargetRequestObject のインスタンスを作成し、返します。
    • このメソッドの構文を次に示します。
      public static TargetPrefetchObject createTargetRequestObject( 
      final String mboxName,
      final String defaultContent, 
      final Map<String, Object> mboxParams, 
      final Map<String, Object> orderParams, 
      final Map<String, Object> productParams, 
      final Target.TargetCallback<String> callback)
      
      
  • createTargetPrefetchObject
    指定されたデータを使用して TargetPrefetchObject のインスタンスを作成し、返します。
    • このメソッドの構文を次に示します。
      public static TargetPrefetchObject createTargetPrefetchObject( 
      final String mboxName, 
      final Map<String, Object> mboxParams) 
      final Map<String, Object> orderParams, 
      final Map<String, Object> productParams)
      
      

パブリッククラス

以下に、Android でのプリフェッチをサポートするパブリッククラスを示します。

クラス参照:TargetPrefetchObject

mbox 名と、mbox のプリフェッチで使用されるパラメーターをカプセル化します。
  • name
    プリフェッチするロケーションの名前。
    • :String
  • mboxParameters
    この mboxParameters の要求の TargetPrefetchObject として添付されるキー値のペアのコレクション。
    • :マップ <String, Object>
  • orderParameters
    order ノード下の現在の mbox に添付されるキー値のペアのコレクション。
    • :マップ <String, Object>
  • productParameters
    product ノード下の現在の mbox に添付されるキー値のペアのコレクション。
    • :マップ <String, Object>

クラス参照:TargetRequestObject

このクラスは、mbox 名、デフォルトコンテンツ、mbox パラメーターおよび Target ロケーションの要求に使用されるリターンコールバックをカプセル化します。
  • mboxName
    要求されるロケーションの名前。
    • :String
  • mboxParameters
    この mboxParameters TargetRequestObject として添付されるキー値のペアのコレクション。
    • <String, Object> :マップ
  • orderParameters
    order ノード下の現在の mbox に添付されるキー値のペアのコレクション。
    • :マップ <String, Object>
  • productParameters
    product ノード下の現在の mbox に添付されるキー値のペアのコレクション。
    • :マップ <String, Object>
  • defaultContent
    SDK が Target サーバーからコンテンツを取得できない場合にコールバックで返される文字列値。
    • :String
  • callback
    指定された TargetRequestObject のコンテンツが使用可能な場合に呼び出される関数ポインター。
    • :Target.TargetCallback <String>

コードサンプル

以下に、Android SDK を使用してコンテンツをプリフェッチする方法の例を示します。
// When your app launches, prefetch the content for a list of locations. 
// Define the list of mboxes that you want to prefetch. 
List<TargetPrefetchObject> prefetchMboxesList = new ArrayList<>(); 
  
Map<String, Object> mboxParameters1 = new HashMap<>(); 
mboxParameters1.put("status", "platinum"); 
prefetchMboxesList.add(Target.createTargetPrefetchObject("mboxName1", mboxParameters1));

Map<String, Object> mboxParameters2 = new HashMap<>(); 
mboxParameters2.put("userType", "paid"); 
 
List<String> purchasedIds = new ArrayList<String>(); 
purchasedIds.add("34"); 
purchasedIds.add("125");  
Map<String, Object> orderParameters2 = new HashMap<>(); 
orderParameters2.put("id", "ADCKKIM"); 
orderParameters2.put("total", "344.30"); 
orderParameters2.put("purchasedProductIds",  purchasedIds); 
  
Map<String, Object> productParameters2 = new HashMap<>(); 
productParameters2.put("id", "24D3412"); 
productParameters2.put("categoryId","Books"); 
  
prefetchMboxesList.add(Target.createTargetPrefetchObject("mboxName2", mboxParameters2, orderParameters2, productParameters2));

// Define the profile parameters map. 
Map<String, Object> profileParameters = new HashMap<>(); 
profileParameters.put("ageGroup", "20-32");

// Define the target callback for the prefetch call status. 
Target.TargetCallback<Boolean> prefetchStatusCallback = new Target.TargetCallback<Boolean>() { 
    @Override 
    public void call(final Boolean status) { 
        // check the returned status for the prefetch call 
    }};

// Call the prefetchContent API. 
Target.prefetchContent(prefetchMboxesList, profileParameters, prefetchStatusCallback);

// When the content is required, you can initiate the locations request. 
// Define the list of target request objects. 
List<TargetRequestObject> locationRequests = new ArrayList<>(); 
  
Target.TargetCallback<String> callback1 = new Target.TargetCallback<String>() { 
    @Override 
    public void call(final String content) { 
        // check the returned content for mboxName1. 
    }}; 
  
locationRequests.add(Target.createTargetRequestObject("mboxName1", "defaultContent1", mboxParameters1, callback1));

Target.TargetCallback<String> callback2 = new Target.TargetCallback<String>() { 
    @Override 
    public void call(final String content) { 
        // check the returned content for mboxName2. 
    }}; 
  
locationRequests.add(Target.createTargetRequestObject("mboxName2", "defaultContent2", mboxParameters2, orderParameters2, productParameters2, callback2)); 
  
// Call the loadRequests API. 
Target.loadRequests(locationRequests, profileParameters); 

追加情報

以下は、これらのサンプルの関連情報です。
  • ProductParameters でのみ、以下のキーを使用できます。
    • id
    • categoryId
  • OrderParameters でのみ、以下のキーを使用できます。
    • id
    • total
    • purchasedProductIds
  • purchasedProducts は、文字列の ArrayList を受け付けます。