Adobe Target のプリフェッチ機能では、iOS Mobile SDK がサーバーからの応答をキャッシュするので、可能な限り少ない回数で効率良くオファーコンテンツを取得できるようになります。
iOS 用のモバイル 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);
}
}
iOS でのプリフェッチに使用できるメソッドを以下に示します。
targetPrefetchContent
設定されている Target サーバーに、ロケーションの配列と共にプリフェッチの要求を送信し、指定されたコールバックで要求ステータスを返します。
このメソッドの構文を次に示します。
(void) targetPrefetchContent:(nonnull NSArray*)targetPrefetchObjectArray
withProfileParameters:(nullable NSDictionary*)profileParameters
callback:(nullable void(^)(BOOL success))callback;
このメソッドのパラメーターを次に示します。
targetPrefetchArray
プリフェッチする各 Target のロケーションの名前と mboxParameters を含む TargetPrefetchObjects
の配列。
profileParameters
この要求のすべてのロケーションプリフェッチで使用されるプロファイルパラメーターのキーと値が含まれます。
callback
プリフェッチの完了時に呼び出されます。プリフェッチが成功した場合は true
、失敗した場合は false
を返します。
targetLoadRequests
リクエスト配列に指定された複数の mbox の場所に対してバッチリクエストを実行します。配列内の各オブジェクトにコールバック関数が含まれ、指定された mbox のロケーションに対してコンテンツが使用可能になると呼び出されます。
要求されたロケーションのコンテンツが既にキャッシュされている場合は、指定されたコールバックで即座に返されます。コンテンツがキャッシュされていない場合は、SDK は Target サーバーにネットワーク要求を送信してコンテンツを取得します。
このメソッドの構文を次に示します。
(void)targetLoadRequests:(nonnullNSArray*)requests
withProfileParameters:(nullableNSDictionary*)profileParameters;
このメソッドのパラメーターを次に示します。
requests
取得するロケーションごとに、名前、デフォルトコンテンツ、パラメーターおよびコールバック関数を含む TargetRequestObjects
の配列。
profileParameters
このリクエストのすべての場所でのプリフェッチで使用するプロファイルパラメーターのキーと値を含みます。
targetPrefetchClearCache
Target プリフェッチによってキャッシュされたデータをクリアします。
このメソッドの構文を次に示します。
(void) targetPrefetchClearCache;
このメソッドにはパラメーターがありません。
targetRequestObjectWithName
指定されたデータを使用して TargetRequestObject
のインスタンスを作成し、返します。
このメソッドの構文を次に示します。
+(nullableADBTargetRequestObject*)targetRequestObjectWithName:(nonnullNSString*)name
defaultContent:(nonnullNSString*)defaultContent
mboxParameters:(nullableNSDictionary*)mboxParameters
callback:(nullablevoid(^)(NSString*__nullablecontent))callback;
このメソッドにはパラメーターがありません。
createTargetPrefetchObject
指定されたデータを使用して TargetPrefetchObject
のインスタンスを作成し、返します。
このメソッドの構文を次に示します。
+(nullable ADBTargetPrefetchObject *) targetPrefetchObjectWithName:(nonnullNSString *)name
mboxParameters:(nullableNSDictionary *)mboxParameters;
iOS でプリフェッチをサポートするパブリッククラスを以下に示します。
mbox 名と、mbox のプリフェッチで使用されるパラメーターをカプセル化します。
name
取得するロケーション/mbox の名前。
mboxParameters
mbox パラメーターのキーと値のペアを含むオプションの辞書。
orderParameters
注文パラメーターのキーと値のペアを格納するディクショナリ。
productParameters
製品パラメーターのキーと値のペアを格納するディクショナリ。
このクラスは、mbox 名、デフォルトコンテンツ、mbox パラメーターおよび Target ロケーションの要求に使用されるリターンコールバックをカプセル化します。
name
要求されるロケーションの名前。
mboxParameters
取得する場所/mboxの名前を表すNSString値。
defaultContent
ターゲットサーバーが未到達の場合に返されるデフォルトコンテンツです。
callback
バッチが Target の場所をリクエストすると、この場所でコンテンツが利用できる場合にコールバックが呼び出されます。
iOS SDK を使用したコンテンツのプリフェッチ方法の例を以下に示します。
/**
* Prefetch Content
*/
NSDictionary *mboxParameters1 = @{@"status":@"platinum"};
NSDictionary *productParameters1 = @{@"id":@"24D3412",
@"categoryId":@"Books"};
NSDictionary *orderParameters1 = @{@"id":@"ADCKKIM",
@"total":@"344.30",
@"purchasedProductIds":@"34, 125, 99"};
NSDictionary *mboxParameters2 = @{@"userType":@"Paid"};
NSDictionary *productParameters2 = @{@"id":@"764334",
@"categoryId":@"Online"};
NSArray *purchaseIDs = @[@"id1",@"id2"];
NSDictionary *orderParameters2 = @{@"id":@"4t4uxksa",
@"total":@"54.90",
@"purchasedProductIds":purchaseIDs};
// Creating Prefetch Objects
ADBTargetPrefetchObject *prefetch1 = [ADBMobile targetPrefetchObjectWithName:@"logo" mboxParameters:mboxParameters1];
prefetch1.productParameters = productParameters1;
prefetch1.orderParameters = orderParameters1;
ADBTargetPrefetchObject *prefetch2 = [ADBMobile targetPrefetchObjectWithName:@"buttonColor" mboxParameters:mboxParameters2];
prefetch2.productParameters = productParameters2;
prefetch2.orderParameters = orderParameters2;
// Creating prefetch Array
NSArray *prefetchArray = @[prefetch1,prefetch2];
// Creating Profile parameters
NSDictionary *profileParmeters = @{@"age":@"20-32"};
// Target API Call
[ADBMobile targetPrefetchContent:prefetchArray withProfileParameters:profileParmeters callback:^(BOOL isSuccess){
// do something with the Boolean result
}];
iOS SDK を使用したバッチ loadRequest
の例を以下に示します。
/**
* Batch loadRequest
*/
NSDictionary *mboxParameters1 = @{@"status":@"platinum"};
NSDictionary *productParameters1 = @{@"id":@"24D3412",
@"categoryId":@"Books"};
NSDictionary *orderParameters1 = @{@"id":@"ADCKKIM",
@"total":@"344.30",
@"purchasedProductIds":@"34, 125, 99"};
NSDictionary *mboxParameters2 = @{@"userType":@"Paid"};
NSDictionary *productParameters2 = @{@"id":@"764334",
@"categoryId":@"Online"};
NSArray *purchaseIDs = @[@"id1",@"id2"];
NSDictionary *orderParameters2 = @{@"id":@"4t4uxksa",
@"total":@"54.90",
@"purchasedProductIds":purchaseIDs};
ADBTargetRequestObject *request1 = [ADBMobile targetRequestObjectWithName:@"logo" defaultContent:@"BlueWhale" mboxParameters:mboxParameters1 callback:^(NSString *content){
// do something with the received content
}];
request1.productParameters = productParameters1;
request1.orderParameters = orderParameters1;
ADBTargetRequestObject *request2 = [ADBMobile targetRequestObjectWithName:@"buttonColor" defaultContent:@"red" mboxParameters:mboxParameters2 callback:^(NSString *content){
// do something with the received content
}];
request2.productParameters = productParameters1;
request2.orderParameters = orderParameters1;
// create request object array
NSArray *requestArray = @[request1,request2];
// Call the API
[ADBMobile targetLoadRequests:requestArray withProfileParameters:profileParmeters];
以下は、これらのサンプルの関連情報です。
ProductParameters
でのみ、以下のキーを使用できます。
id
categoryId
OrderParameters
でのみ、以下のキーを使用できます。
id
total
purchasedProductIds
purchasedProducts
は、文字列の配列を受け取ります。