iOS SDK実装ガイド
この実装ガイドでは、Oracle Maxymiser Mobile Application Testingソリューション(MMTApp)をネイティブiOSアプリに統合するためのステップを説明します。また、A/Bテスト・キャンペーンの作成方法についても説明します。このガイドでは、iOS用のアプリの作成に慣れていることを前提としています。
スタート・ガイド
テスト管理およびレポート・インタフェースにアクセスするには、Oracle Maxymiserユーザー・インタフェース・ログインが必要です。オンボーディング・プロセスの一部としてログイン資格証明を受信していない場合は、Oracle Maxymiserに連絡してください。Oracle Maxymiser UIにアクセスするための関連する認可資格証明を喜んで送信します。
APIの使用およびアプリとの統合のための前提条件:
- プラットフォームおよび地域に適したSDKパッケージをダウンロードします。
 - XCodeがインストールされた開発環境。
 - アプリをテストのためにデバイスで実行する場合は、Apple Development Programアカウントが必要です。
 - Objective-CおよびネイティブiOSアプリを使用する開発能力。
 
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];
                                                    myappをOracle Maxymiser UIのサイトの名前に置き換えます。
その後は最初に作成したAPIを[MMTApp defaultApi]で参照できるため、作成したAPIへの参照を保持する必要はありません。
ノート: ストア更新のないアプローチでSDKを初期化した場合は、APIを初期化する必要はありません。
キャンペーンの作成
これで、キャンペーンを作成する準備ができました。詳細は、アプリ・テストを参照してください。
環境
Oracle Maxymiser UIはサンドボックスと本番の2つの環境をサポートしています。
サンドボックス
サンドボックスは、キャンペーンが作成および構成される開発テスト環境です。アプリケーションに対するすべてのテストはサンドボックスで実行する必要があります。すべてのサンドボックス・トラフィックは事前定義済の会社IPから提供され、レポートまたは分析の目的で保持されません。
重要: サンドボックス・モードでキャンペーンをテストする前に、サイトの会社IPリスト(Oracle Maxymiser UIのサイト管理オプションの下)にデバイスIPを追加してください。
品質管理(QC)テストのために特定のバリアントをアプリ内でプレビューする手順は、次のとおりです。
- Oracle Maxymiser UIの「Campaign Settings」→「Campaign Content」→「Elements & Variants」ページを使用して、すべてのバリアントの重みを0に設定します。
 - プレビューするバリアントの重みを100に設定します。アプリケーションを実行し、変換が正しく適用されていること、および他のすべての機能が期待どおりに動作していることを確認します。
 - ユーザー・エクスペリエンスのすべてのバリアントに対してこれらのステップを繰り返します。
 - 必要なステージを完了して、構成されたすべてのアクションをトリガーします。
 - アクション・ログ・レポートをチェックし、アクションの値および属性が正しくログに記録されていることを確認します。
 
ノート: サンドボックス・モードで収集されたデータは、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 
                                                    
+ setDefaultApi:
                                                    デフォルトのAPIを設定します。
+ (void)setDefaultApi:(id 
                                                    
パラメータ
api
                                                    
デフォルトとして設定するAPIオブジェクト。
+ apiForSite:
                                                    指定したサイトに新規APIを作成します。
+ (id 
                                                    
パラメータ
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:
                                                    ユーザーIDを設定します。
+ (void)setUserId:(NSString *)id;
                                                        
パラメータ
id
                                                        
設定するユーザーID。
+ applyOnController:
                                                    コントローラのビューに対するUI変換を強制します。動的コントローラに対して、実行時にビューのレイアウトを変更するエクスペリエンスを適用するために使用する必要があります。
+ (void)applyOnController:(UIViewController *)controller;
                                                        
パラメータ
controller
                                                        
エクスペリエンスを適用するUIViewController。
構成
+ setLogger:
                                                    SDKで使用するロガーを設定します。
+ (void)setLogger:(id 
                                                    
パラメータ
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つのOracle Maxymiserサイト・エンティティにのみ接続できます。
 - ユーザー・インタフェースには、Web固有の用語がいくつか含まれています。前述のガイドでは、サポートされている設定を取り上げており、Oracle Maxymiser UIの中のそのほかのすべての設定は無視される可能性があります。不明な場合は、Oracle MaxymiserのQCプロセスの中で調べることができます。
 - MaxPredictとRecommendはサポートされていません。
 - モバイル・アプリ・キャンペーンに使用できるユーザー属性は少数です。サポートされる属性のリストは、付録2を参照してください。
 - 「Filter Action by Referrer URL」および「Filter Action by URL」パラメータは、モバイル・アプリ・テスト内ではサポートされていません。