iOS SDK実装ガイド

この実装ガイドでは、Oracle Maxymiser Mobile Application Testingソリューション(MMTApp)をネイティブiOSアプリに統合するためのステップを説明します。また、A/Bテスト・キャンペーンの作成方法についても説明します。このガイドでは、iOS用のアプリの作成に慣れていることを前提としています。

スタート・ガイド

テスト管理およびレポート・インタフェースにアクセスするには、Oracle Maxymiserユーザー・インタフェース・ログインが必要です。オンボーディング・プロセスの一部としてログイン資格証明を受信していない場合は、Oracle Maxymiserに連絡してください。Oracle Maxymiser UIにアクセスするための関連する認可資格証明を喜んで送信します。

APIの使用およびアプリとの統合のための前提条件:

iOSバージョン別機能サポート:

iOSバージョン ストア更新のないアプローチ
ストア更新のないUIの変換
手動アプローチ
意思決定フェッチ用のAPI
v8.x以降 サポート対象 サポート対象
v7.x サポートされていません(SDK非アクティブ) サポート対象
v6.x以前 サポートされていません(SDK非アクティブ) サポートされていません(SDK非アクティブ)

統合ガイド

SDKを統合するには、次のステップに従ってください。

ノート: アプリの2つのバージョンを構築する準備をしてください。1つはサンドボックスが有効なバージョン、もう1つは本番用のバージョンです。setSandboxコールとprintElementIdsコールは初期化ステップで明示的に定義されず、アプリ・テストの実行時に重要であるため、このようにすると有益です。

このドキュメントとともに配布されるMMTAppライブラリのzipファイルを探して抽出します。XCodeを起動し、テストするiOSアプリケーションでプロジェクトを開きます。

SDKパッケージから次のファイルをアプリに追加します。

  • MMTApp.h

  • MMTApi.h

  • MMTExperiences.h

  • MMTLogger.h

  • UIView+MMTApp.h

  • libMMTApp.a

"-ObjC"リンカー・フラグを追加します。

アプリのターゲットを次のフレームワークにリンクします。

  • CoreData.framework

  • SystemConfiguration.framework

  • libMMTApp.a

ネイティブ・アプリのテストは、次の3つの方法で作成できます。

  • JavaScriptタグを使用するOracle Maxymiserの標準Webテスト方法を使用する: これを使用して、アプリ・コンテナ(ハイブリッド・アプリ)内でモバイルWebページまたはHTMLをテストできます。
  • Oracle Maxymiser SDKを使用するApp Storeなしのアプローチを使用する: SDKを使用して、アプリのソース・コードを変更したり、App Storeを介して更新をリリースすることなく、キャンペーン・コンテンツをアプリに直接インジェクトできます(Apple UIKitを使用して構築されたiOSアプリおよびAndroid UIキット要素を使用して構築されたAndroidアプリで使用可能)。2016年6月現在、新しいビジュアルなアプリ・キャンペーン・ビルダーを使用することもできます。詳細は、ここを参照してください。
  • 手動アプローチを使用する: このアプローチは、iOSアプリとAndroidアプリの両方で有効であり、意思決定およびレポート・エンジンとしてOracle Maxymiserを使用します。アプリのソース・コードで開発作業を行い、ユーザーに対して更新をリリースする必要がありますが、より複雑なテスト・バリアントを作成できます。Oracle Maxymiser SDKは、意思決定エンジンを提供し、結果をレポート・システムにフィードバックします。

使用する方法に応じて、次の手順に従ってSDKを初期化します。

ストア更新のないアプローチ

ストア更新のないアプローチは、ネイティブ・アプリケーション用のA/Bテストを構築する方法の1つで、ユーザー・エクスペリエンスのバリアントをリモートでアプリにインジェクトします。このアプローチを使用すると、リリース・サイクルが後に続くアプリ内のコード変更ではなく、Oracle Maxymiserからキャンペーンやバリアントの更新を公開できます。一方、手動アプローチでは、アプリにコーディングされ、一般リリースを介してユーザーにリリースされるバリアントを使用します。この場合、Oracle Maxymiserは意思決定およびレポート・エンジンとして使用されます。

重要: ストア更新のないアプローチは、iOS 8.0以降でのみサポートされています。iOS 7以前では、SDKでバリアント変換の適用やアクションのトラッキングは行われません。

SDKの初期化

アプリケーションの初期化中に、次のコードを使用してSDKを初期化します。

// Show interstitial page
[MMTAppstartForSite: @"myapp"
	options: options
	handler: ^{
// Hide interstitial page and display Home page
}];

myappをOracle Maxymiser UIのサイトの名前に置き換えます。

オプションで、タイムアウトや使用するOracle Maxymiser環境などの初期化パラメータを設定できます。

重要: 初期化されたハンドラでアプリケーションのホーム・ページを表示してください。SDKの初期化前に表示されるページでは、キャンペーンを実行できません。

キャンペーンの作成

これで、キャンペーンを作成する準備ができました。詳細は、アプリ・テストを参照してください。

ノート: 最新のOracle Maxymiser UIリリース(2016年6月にリリースされたバージョン16.4)には、アプリ・テスト・キャンペーンを構築するための新しいビジュアル・エディタが含まれています。これにより、キャンペーン管理およびバリアント作成が自動化され、デバイスとOracle Maxymiser UI間のリアルタイム・ストリーミングが可能になり、バリアントとQAテストの構築に役立ちます。詳細は、アプリ・キャンペーン・ビルダーを参照してください。
このパッケージに含まれているSDKは、新しいビジュアル・ツールを使用する前にアプリに統合する必要がある更新です。完全な下位互換性があり、統合プロセスに変更はありません。

手動アプローチ

SDKの初期化

アプリ委任に次のコードを挿入します。

// Create API for 'myapp' site
[id  api = [MMTApp apiForSite:@"myapp"
// Use Sandbox configuration, not Production
[api useSandbox:YES];

myappOracle Maxymiser UIのサイトの名前に置き換えます。

その後は最初に作成したAPIを[MMTApp defaultApi]で参照できるため、作成したAPIへの参照を保持する必要はありません。

ノート: ストア更新のないアプローチでSDKを初期化した場合は、APIを初期化する必要はありません。

キャンペーンの作成

これで、キャンペーンを作成する準備ができました。詳細は、アプリ・テストを参照してください。

環境

Oracle Maxymiser UIはサンドボックスと本番の2つの環境をサポートしています。

サンドボックス

サンドボックスは、キャンペーンが作成および構成される開発テスト環境です。アプリケーションに対するすべてのテストはサンドボックスで実行する必要があります。すべてのサンドボックス・トラフィックは事前定義済の会社IPから提供され、レポートまたは分析の目的で保持されません。

重要: サンドボックス・モードでキャンペーンをテストする前に、サイトの会社IPリスト(Oracle Maxymiser UIのサイト管理オプションの下)にデバイスIPを追加してください。

品質管理(QC)テストのために特定のバリアントをアプリ内でプレビューする手順は、次のとおりです。

  1. Oracle Maxymiser UIの「Campaign Settings」→「Campaign Content」→「Elements & Variants」ページを使用して、すべてのバリアントの重みを0に設定します。
  2. プレビューするバリアントの重みを100に設定します。アプリケーションを実行し、変換が正しく適用されていること、および他のすべての機能が期待どおりに動作していることを確認します。
  3. ユーザー・エクスペリエンスのすべてのバリアントに対してこれらのステップを繰り返します。
  4. 必要なステージを完了して、構成されたすべてのアクションをトリガーします。
  5. アクション・ログ・レポートをチェックし、アクションの値および属性が正しくログに記録されていることを確認します。

ノート: サンドボックス・モードで収集されたデータは、Oracle Maxymiserのアナリティクス・レポートには表示されません。このモードはQCテストのためにのみ存在します。サービス・レベル合意(SLA)はサポートされず、レポートが使用できないため、サンドボックス環境にテストが接続されているユーザーにはアプリをリリースしないでください。

本番

本番は本番(稼働中ユーザー)トラフィックの処理に使用される環境です。

この環境から収集されたデータは、どのバリアントのパフォーマンスが最良かを判断する分析のためにレポート領域で使用できます(Oracle Maxymiser UIの「Analytics」タブを参照)。

MMTAppでは、次のように環境を切り替えることができます。

ストア更新のないアプローチ:

// Show interstitial page 
[MMTAppstartForSite: @"myapp"
    options: @{
    MMTAppOptionUseSandbox : @YES
        }
    handler: ^{
//Hide interstitial page and display Home page
}];

手動アプローチ:

#ifdef DEBUG
[api useSandbox:YES];
#endif

重要: サンドボックス環境に接続されたキャンペーンを含むエンド・ユーザーに対して、アプリをリリースしないでください。

APIリファレンス

MMTApp

SDKの最上位クラス。サイトのAPIを作成する機能を提供し、SDK構成のメソッドが含まれます。

タスク

APIの管理

クローズ済+ defaultApi

デフォルトAPIを返します。

+ (id )defaultApi;

クローズ済+ setDefaultApi:

デフォルトのAPIを設定します。

+ (void)setDefaultApi:(id )api;

パラメータ

api

デフォルトとして設定するAPIオブジェクト。

クローズ済+ apiForSite:

指定したサイトに新規APIを作成します。

+ (id )apiForSite:(NSString *)site;

パラメータ

site

サイトの名前。

戻り値

指定したサイトにリンクされたAPIオブジェクト。

クローズ済+ startForSite: options: handler:

サイトに対してUIKitアプローチ・モードでSDKを起動します。

+ (void)startForSite:(NSString *)site options:(NSDictionary *)options handler:(void (^)())handler

パラメータ

site

サイトの名前。

options

次の表は、追加パラメータを含めることができるオプション・ディクショナリを示しています。使用可能なパラメータを表の下に示します。

キー 値タイプ 説明
MMTAppOptionTimeout NSNumber * エクスペリエンスのフェッチのタイムアウト(秒)
MMTAppOptionUseSandbox NSNumber * ブール値、サンドボックスまたは本番モード
MMTAppOptionWiFiOnly NSNumber * ブール値。Wi-Fiに接続されている場合のみ、
エクスペリエンスのフェッチをオンまたはオフにします
MMTAppOptionGenerationsPage NSString * 生成に使用されるAdminインタフェースの
ページのデフォルト名をオーバーライドします。
MMTAppOptionActionsPage NSString * アクションに使用される管理インタフェースの
ページのデフォルト名をオーバーライドします。

handler

エクスペリエンスがフェッチされると呼び出されるブロック。

クローズ済+ fetchExperiences:

+ startForSite: options: handler:で使用されるオプションを使用して、Oracle Maxymiserプラットフォームから新しいエクスペリエンスをフェッチします。フェッチは、バックグラウンド・スレッドで実行されます。

+ (void)fetch:(void (^)())handler

パラメータ

handler

エクスペリエンスがフェッチされると呼び出されるブロック。

クローズ済+ stop

UIKitアプローチ・モードでSDKを停止します。

+(void)stop;

エディタ

クローズ済+ startEditor

エディタUIとのペアリングを開始します。

+(void)startEditor;

クローズ済+ stopEditor

エディタUIから切断します。

+(void)stopEditor;

パーソナライズおよびターゲッティング

クローズ済+ setUserAttribute: value:

ユーザー属性を設定します。

+ (void)setUserAttribute:(NSString *)name value:(NSString *)value;

パラメータ

name

属性の名前。この名前のカスタム属性が存在することを確認してください。

value

属性値。

クローズ済+ setUserAttribute: block:

ユーザー属性を設定します。

+ (void)setUserAttribute:(NSString *)name block: (NSString *(^)())block

パラメータ

name

属性の名前。この名前のカスタム属性が存在することを確認してください。

value

属性値を取得するために呼び出されるブロック。

クローズ済+ setUserId: クローズ済+ applyOnController:

構成

クローズ済+ setLogger:

SDKで使用するロガーを設定します。

+ (void)setLogger:(id )logger;

パラメータ

logger

使用するロガー。

クローズ済+ setLogLevel:

ロギング・レベルを設定します。

+ (void)setLogLevel:(MMTLogLevel) level;

パラメータ

level

ロギング・レベル。

クローズ済+ setPrintElementsIDs:

要素ID出力のオン/オフを切り替えます

+ (void)setPrintElementsIDs:(BOOL)printIDs;

パラメータ

printIDs

YESの場合 - IDがコンソールに出力されます。デフォルトはNOです。

MMTApi

エクスペリエンスをフェッチしてアクションをトラッキングするために使用されるプロトコル。

タスク

構成

クローズ済- setRequestTimeOut:

サーバーにリクエストを実行する最大時間を設定します。デフォルトは3秒です。この時間を超えると、フェッチの試行は行われなくなり、前のユーザー・エクスペリエンスが選択されます。

- (void)setRequestTimeOut:(NSTimeInterval)timeout;

パラメータ

timeout

使用するタイムアウト。

クローズ済- setWiFiOnly:

ユーザーがWi-Fiネットワークに接続しているときにのみ新しいエクスペリエンスをフェッチできるかどうかを指定します。デフォルトでは、任意の使用可能なネットワークが使用されます。

- (void)setWiFiOnly:(BOOL)wifiOnly;

パラメータ

wifiOnly

Wi-Fiネットワークのみを使用する場合はYES、使用可能なネットワークを使用する場合はNO。

クローズ済- useSandbox:

サンドボックスの構成を使用するかどうかを指定します。デフォルトでは、本番構成が使用されます。

- (void)useSandbox:(BOOL)sandbox;

パラメータ

sandbox

サンドボックス構成を使用する場合はYES、本番構成を使用する場合はNO。

エクスペリエンス

クローズ済- fetchExperiences:

「Generations」という名前のデフォルト・ページについて、Oracle Maxymiserプラットフォームから新しいエクスペリエンスをフェッチします。フェッチはバックグラウンド・スレッドで実行されます。

- (void)fetchExperiences:(void (^)())handler;

パラメータ

handler

エクスペリエンスがフェッチされると呼び出されるブロック。

クローズ済- fetchExperiences: forPage:

指定されたページについて、Oracle Maxymiserプラットフォームから新しいエクスペリエンスをフェッチします。フェッチはバックグラウンド・スレッドで実行されます。

- (void)fetchExperiences:(void (^)())handler forPage:(NSString *)page;

パラメータ

handler

エクスペリエンスがフェッチされると呼び出されるブロック。

page

エクスペリエンスをフェッチするページ。

クローズ済- getExperiences

コンテンツ変換に使用するフェッチ済エクスペリエンスを返します。

- (void)fetchExperiences:(void (^)())handler forPage:(NSString *)page;

戻り値

前にOracle Maxymiserプラットフォームからフェッチしたエクスペリエンスで、フェッチされたエクスペリエンスがなかった場合はnilです。

トラッキング

クローズ済- trackAction: value: attribute:

「Actions」という名前のデフォルト・ページのユーザー・アクションをトラッキングします。

- (void)trackAction:(NSString *)name value:(NSInteger)value attribute:(NSString *)attr;

パラメータ

name

Oracle Maxymiser UIのサイト構成内に存在する必要があるアクションの名前。

value

アクションの整数値。これは、金額や合計などの様々なパラメータのトラッキングに使用できます。

attr

アクション属性。これは、アクションに関連する追加情報のトラッキングに使用できます。

クローズ済- trackAction: value: attribute: forPage:

指定されたページのユーザー・アクションをトラッキングします。

- (void)trackAction:(NSString *)name value:(NSInteger)value attribute:(NSString *)attr forPage:(NSString *)page;

パラメータ

name

Oracle Maxymiser UIのサイト構成内に存在する必要があるアクションの名前。

value

アクションの整数値。これは、金額や合計などの様々なパラメータのトラッキングに使用できます。

attr

アクション属性。これは、アクションに関連する追加情報のトラッキングに使用できます。

page

アクションをトラッキングするページ。

クローズ済- trackContentSeen:

ユーザーがコンテンツを提供したことを確認するための特別なタイプのアクションをトラッキングします。

- (void)trackContentSeen:(NSString *)campaign;

パラメータ

campaign

コンテンツが提供されたキャンペーン名。

MMTExperiences

フェッチされたエクスペリエンス用に生成済バリアントを取得するために使用するプロトコルです。

タスク

バリアント

クローズ済- getVariantNameForCampaign: element:

キャンペーンの生成済バリアント名およびOracle Maxymiser UIのテスト構成に関連する要素を取得します。

- (NSString *)getVariantNameForCampaign:(NSString *)campaign element:(NSString *)element;

パラメータ

campaign

バリアント名を取得するキャンペーンの名前。

element

バリアント名を取得するキャンペーン内の要素の名前。

戻り値

キャンペーンの要素に対して生成されたバリアントの名前。

次の場合、nilを返します。

  • キャンペーンが開始されていない。
  • キャンペーンが完了した。
  • キャンペーンが一時停止している。
  • サイトが無効である。

前述のすべてについて、デフォルト・コンテンツをレンダリングするプロセスを実装する必要があります。

クローズ済- getVariantContentForCampaign: element:

キャンペーンの生成済バリアント・コンテンツと、Oracle Maxymiser UIのテスト構成に関連する要素を取得します。

- (NSString *)getVariantContentForCampaign:(NSString *)campaign element:(NSString *)element;

パラメータ

campaign

バリアント・コンテンツを取得するキャンペーンの名前。

element

バリアント・コンテンツを取得するキャンペーンの要素の名前。

戻り値

キャンペーンの要素の生成済バリアントのコンテンツ。

次の場合、nilを返します。

  • キャンペーンが開始されていない。
  • キャンペーンが完了した。
  • キャンペーンが一時停止している。
  • サイトが無効である。

前述のすべてについて、デフォルト・コンテンツをレンダリングするプロセスを実装する必要があります。

MMTLogger

これは、SDKからメッセージをロギングするために使用するプロトコルです。

タスク

ロギング

クローズ済- debug:

ログ・レベルがデバッグのメッセージをログに記録します。

- (void)debug:(NSString *)message;

パラメータ

message

ログに記録するメッセージ。

クローズ済- warning:

ログ・レベルが警告のメッセージをログに記録します。

- (void)warning:(NSString *)message;

パラメータ

message

ログに記録するメッセージ。

クローズ済- error:

ログ・レベルがエラーのメッセージをログに記録します。

- (void)error:(NSString *)message;

パラメータ

message

ログに記録するメッセージ。

クローズ済- print:

ロガーがオフの場合でも、ログにメッセージを出力します。ユーザー・リクエスト時の技術情報の出力に使用されます。

- (void)print:(NSString *)message;

パラメータ

message

ログに記録するメッセージ。

システム制限

現在、Oracle Maxymiserモバイル・ライブラリには次のシステム制限があります。

  1. 各アプリは1つのOracle Maxymiserサイト・エンティティにのみ接続できます。
  2. ユーザー・インタフェースには、Web固有の用語がいくつか含まれています。前述のガイドでは、サポートされている設定を取り上げており、Oracle Maxymiser UIの中のそのほかのすべての設定は無視される可能性があります。不明な場合は、Oracle MaxymiserのQCプロセスの中で調べることができます。
  3. MaxPredictとRecommendはサポートされていません。
  4. モバイル・アプリ・キャンペーンに使用できるユーザー属性は少数です。サポートされる属性のリストは、付録2を参照してください。
  5. 「Filter Action by Referrer URL」および「Filter Action by URL」パラメータは、モバイル・アプリ・テスト内ではサポートされていません。