iOS変換ガイド
このページでは、テスト・バリアントのUIKit要素を変更するために使用されるJSONマークアップについて説明します。この情報と、サイト作成から稼働公開までのアプリ・テスト(LINK)ガイドを組み合せて使用してiOS SDK(LINK)を統合していることが前提となっています。
ストア更新のないアプローチは、ネイティブ・アプリケーション用のA/Bテストを構築する方法の1つで、JSONマークアップを使用してユーザー・エクスペリエンスのバリアントをリモートでアプリにインジェクトします。このアプローチを使用すると、リリース・サイクルが後に続くアプリ内のコード変更ではなく、Maxymiserからキャンペーンやバリアントの更新を公開できます。一方、手動アプローチでは、アプリにコーディングされ、一般リリースを介してユーザーにリリースされるバリアントを使用します。この場合、Maxymiserは意思決定およびレポート・エンジンとして使用されます。
ストア更新のないアプローチは、iOS 8.0以降でのみサポートされています。iOS 7以前では、SDKでバリアント変換の適用やアクションのトラッキングは行われません。
| iOSバージョン | ストア更新なし | 手動アプローチ | 
|---|---|---|
| v8.x以降 | サポート対象 | サポート対象 | 
| v7.x | サポートされていません(SDK非アクティブ) | サポート対象 | 
| v6.x以前 | サポートされていません(SDK非アクティブ) | サポートされていません(SDK非アクティブ) | 
JSONスキーマ参照
{ "MMTApp": [ { "scope": { "device": ["iphone", "ipad"], "orientation": ["landscape", "portrait"], "scale": ["@1x", "@2x", "@3x"] }, "config": [ { "id": "DemoViewController/UIView[0]/UILabel[0]", "props": { "text": "Hello", "background-color": "#008B7D" } }, { "id": "DemoViewController/UIView[0]/UIButton[0]", "props": { "background-color": "#008B7D" } } ], "constraints": { "update": [ { "item1": "DemoViewController/UIView/UIButton", "attribute1": "Top", "relation": "Equal", "item2": "DemoViewController/UIView/UITextView", "attribute2": "Bottom", "priority": 1000, "multiplier": 1.0, "values": { "constant": 100 } } ] }, "actions": [ { "id": "DemoViewController/UIView/UIButton", "type": "TouchUpInside", "name": "Click_through" } ] } ] }
要素ID
IDは、画面上のUI要素を選択するために使用します。IDは、ViewControllerのルート・ビューから始まるUI要素へのパスです。たとえば、"id": "DemoViewController/UIView[0]/UIButton[1]"
は、DemoViewControllerのルート・ビューの最初のUIView上にある2番目のButtonのIDです。デフォルトでは、DemoViewControllerのルート・ビューには、コントローラのクラス名と同じIDがあります。
コードからUI要素にカスタムIDを割り当てることができます。これにより、正確なコンテキストに応じて要素をターゲットにできます。次の例では、"Product-123" IDをProductDetailsViewControllerのルート・ビューに設定します。
これにより、特定の製品のProductDetailsViewControllerのUI要素をターゲットにすることができます。"id": "Product-123/UIButton[0]"
ノート: カスタムIDは自動生成されたIDをオーバーライドしないため、キャンペーンでカスタムIDと自動生成されたIDの両方を使用できます。
すべてのUI要素のIDを画面に表示するには、要素IDの出力を有効にしてこのページにナビゲートします。[MMTApp setPrintElementsIDs:YES];
SDKによってすべての要素IDがアプリケーション・ログに出力されます。
スコープ
スコープは、様々なデバイス構成に対する様々な変換またはアクションの使用を許可するオプションのブロックです。構成は、デバイス・タイプ、向き、スケールなどのパラメータのセットです。
スコープには、様々なスコープ・パラメータを定義するオブジェクトが含まれています。
"device"は、変換が適用されるデバイスの列挙です。使用可能な値は次のとおりです
- "
iphone" - "
ipad" 
たとえば、列挙に"iphone"のみが含まれている場合、このスコープの変換はiPhoneにのみ適用されます。
"device"が明示的に設定されていない場合は、["iphone", "ipad"]とみなされ、すべてのデバイスが含まれます。
"orientation"は、変換が適用される向きの列挙です。使用可能な値は次のとおりです
- "
landscape" - "
portrait" 
たとえば、列挙に"landscape"のみが含まれている場合、このスコープにおける変換は向きが横方向に変更された場合にのみ適用されます。
"orientation"が明示的に設定されていない場合は、["landscape", "portrait"]とみなされ、すべての向きが含まれます。
重要: 特定のスコープに対して適用された変換は、向きが変更されてもロールバックされません。そのため、必ず両方の向きについて変換を記述してください。
"scale"は、変換が適用される画面スケールの列挙です。使用可能な値は次のとおりです
- Retina以外の画面の場合は"
@1x" - Retina画面の場合は"
@2x"(Retina画面のiPhone 4-5s、iPads) - iPhone 6 Plus画面の場合は"
@3x" 
たとえば、列挙に"@3x"のみが含まれている場合、このスコープにおける変換はiPhone 6 Plusにのみ適用されます
"scale"が明示的に設定されていない場合は、["@1x", "@2x", "@3x"]とみなされ、すべてのスケールが含まれます。
制約
Constraintsブロックでは、変更する制約を記述します。
変更する制約を選択するには、次のプロパティを指定する必要があります。
- "
item1- 制約の最初の項目のID。順序は重要です。このオブジェクトは必須です。指定しなければ、変更は適用されません。" - "
attribute1" - 最初の項目の属性。オブジェクトはオプションです。オブジェクトが存在しない場合、制約検索中は無視されます。属性名を含む文字列をパラメータとして受け取ります。使用可能な属性名は後述します。 - "
relation" - 2つの属性間の関係。オプション。パラメータは、関係名を含む文字列です。パラメータの使用可能なすべてのバリアントは後述します。 - "
item2" - 2番目の項目のID。このオブジェクトは、2番目の要素が含まれる場合のみ必須です。制約に要素が1つしか存在しない場合もあります。この場合、"item2"オブジェクトは省略できます。 - "
attribute2" - 2番目の項目の属性。オプション。 - "
priority" - 制約優先度。浮動小数点値をパラメータとして受け取ります。オプション。 - "
multiplier" - 制約乗数。浮動小数点値をパラメータとして受け取ります。オプション。 - "
constant" - 制約定数。浮動小数点値をパラメータとして受け取ります。オプション。 
これらのプロパティでは、変更する制約を明示的に定義する必要があり、複数の制約が指定されたプロパティに一致する場合は更新されません。
"update"ブロックで、変更する値を指定します。
現時点では"constant"プロパティのみがサポートされています。
"attribute1"または"attribute2"には、次の値を使用できます。
- "
left" - ビューの左側の座標(x) - "
right" - ビューの右側の座標(x + width) - "
top" - ビューの一番上の座標(y) - "
bottom" - ビューの一番下の座標(y + height) - "
leading" - インタフェースに依存し、英語の場合は"left"と等しく、アラビア語(またはその他のRTL言語)の場合は"right"と等しくなります - "
trailing" - インタフェースに依存し、英語の場合は"right"と等しく、アラビア語(またはその他のRTL言語)の場合は"left"と等しくなります。 - "
width" - ビューの幅 - "
height" - ビューの高さ - "
centerX" - X座標上のビューの中心 - "
centerY" - Y座標上のビューの中心 - "
baseline" - テキスト・ベースライン(複数行の場合は最後の行ベースライン) - "
lastBaseline" - 前を参照 - "
firstBaseline" - テキスト・ベースライン(複数行の場合、最初の行ベースライン) - "
leftMargin" - 左側のビュー・マージン - "
rightMargin" - 右側のビュー・マージン - "
topMargin" - 上側のビュー・マージン - "
bottomMargin" - 下側のビュー・マージン - "
leadingMargin" - インタフェースに依存し、英語の場合は"leftMargin"に等しく、アラビア語(またはその他のRTL言語)の場合は"rightMargin"に等しくなります - "
trailingMargin" - インタフェースに依存し、英語の場合は"rightMargin"に等しく、アラビア語(またはその他のRTL言語)の場合は"leftMargin"に等しくなります - "
centerXWithinMargins" - マージンを考慮したビューのX中心 - "
centerYWithinMargins" - マージンを考慮したビューのY中心 - "notAnAttribute" - 予約済キーワード。存在しない場合(および2番目のビューがnilの場合)は2番目の属性として使用されます
 
次の値は"relation"に使用できます。
- "
lessThanOrEqual" - "
equal" - "
greaterThanOrEqual" 
Actions
各アクションには、次のパラメータが必要です。
- "
id" - アクションのトラッキングに使用される要素のID - "
type" - アクションのタイプ - "
name" - Maxymiserでのアクションの名前 
現在、次のアクション・タイプを使用できます。
- "
ElementView" - すべての要素でサポートされます。ビュー・ツリーに要素が表示されるたびにトリガーされます - "
TouchUpInside" - UIButton要素でサポートされます。ユーザーがボタンをタップしたときにトリガーされます - "
DidSelectCell" - UITableViewまたはUITableViewCellでサポートされます。ユーザーが表のセルを選択したときにトリガーされます 
重要: 各セルでアクション・トラッキングが発生するため、'ElementView'アクションを表セルにバインドしないでください。
サポートされるUI要素の変換
重要: 一部の変換には最小値または最大値のチェックがないため、バリアントを慎重にテストしてから稼働中に公開してください。
UIView変換
要素の表示を変更します。
例:
"hidden": true
                                                            
要素の不透明度を変更します。
例:
"opacity": 0.5
                                                                
要素の背景色を変更します。
例:
"background-color": "#FF0000"
                                                                    
要素の背景イメージを変更します。
例:
"background-image": "http://www.mydomain.com/image.png"
                                                                        
"background-image": "embedded-image.png"
要素の色合いを変更します。
例:
"tint-color": "#FF0000"
                                                                        
UIImageViewのコンテンツ・モードを変更します。
例:
"content-mode": "scaleToFill"
                                                                            
使用可能な値:
- "
scaleToFill" - "
scaleAspectFit" - "
scaleAspectFill" - "
redraw" - "
center" - "
top" - "
bottom" - "
left" - "
right" - "
topLeft" - "
topRight" - "
bottomLeft" - "
bottomRight" 
要素のフレームを変更します。
ノート: これが機能するのは、アプリが要素位置付けに自動サイズ変更(SpringsおよびStruts)アプローチを使用している場合のみです。自動レイアウトを使用する場合は、「制約」の項を参照してください。
例:
"x" : 10, }"frame": {
                                                                                
"y" : 10,
"width" : 110,
"height" : 50
すべてのプロパティを指定する必要はありません。変更するもののみを指定します。
UIControl変換
コントロールの有効状態を変更します。
例:
"enabled": false
                                                                                        
コントロールの強調表示された状態を変更します。
例:
"highlighted": true
                                                                                        
コントロールの選択済状態を変更します。
例:
"selected": true
                                                                                        
コントロールのコンテンツの水平方向の位置合せを変更します。
例:
"horizontal-alignment": "left"
                                                                                        
使用可能な値:
- "
left" - "
right" - "
center" - "
fill" 
コントロールのコンテンツの垂直方向の位置合せを変更します。
例:
"vertical-alignment": "top"
                                                                                        
使用可能な値:
- "
left" - "
right" - "
center" - "
fill" 
UILabel変換
UILabelのテキストを変更します。
例:
"text" : "Hello!"
                                                                                                            
UILabelがテキストの格納に使用できる行数を変更します。
例:
"lines" : 3
                                                                                                            
テキストの色を変更します。
例:
"text-color" : "#BE67FA"
                                                                                                                
強調表示された状態を変更します。
例:
"highlighted" : true
                                                                                                                
フォントを変更します。
例:
"font-name": "Arial-BoldMT"
                                                                                                                
フォント・サイズを変更します。
例:
"font-size": 14.5
                                                                                                                                
テキストの位置合せを変更します。
例:
"text-alignment": "left"
                                                                                                                                
使用可能な値:
- "
left" - "
right" - "
center" 
UIView変換
UILabelでは、UIViewのすべての変換がサポートされています
UITextField変換
UITextFieldのテキストを変更します。
例:
"text" : "Hello!"
                                                                                                                                        
テキストの色を変更します。
例:
"text-color" : "#BE67FA"
                                                                                                                                            
フォントを変更します。
例:
"font-name": "Arial-BoldMT"
                                                                                                                                            
フォント・サイズを変更します。
例:
"font-size": 14.5
                                                                                                                                                
UITextFieldのプレースホルダ・テキストを変更します。
例:
"placeholder" : "Username"
                                                                                                                                                
有効にすると、ユーザーがテキストフィールドを編集対象として選択すると、そのテキストフィールドの前のテキストがクリアされます。
例:
"clear-on-edit" : true
                                                                                                                                                
テキストの位置合せを変更します。
例:
"text-alignment": "left"
                                                                                                                                                        
使用可能な値:
- "
left" - "
right" - "
center" - "
justified" - "
natural" 
UIControl変換
UITextFieldでは、UIControlのすべての変換がサポートされています。
UIView変換
UITextFieldでは、UIControlのすべての変換がサポートされています。
UITextView変換
UITextViewのテキストを変更します。
例:
"text" : "Hello!"
                                                                                                                                                                    
テキストの色を変更します。
例:
"text-color" : "#BE67FA"
                                                                                                                                                                    
テキスト編集モードを変更します。
例:
"editable": true
                                                                                                                                                                    
テキスト選択モードを変更します。
例:
"selectable": true
                                                                                                                                                                    
テキスト内のリンク、電話番号、住所およびイベントの検出をオン/オフにします。
例:
"detection": ["link","phonenumber","address","event"]
                                                                                                                                                                    
Specify "null" to disable detection.
                                                                                                                                                                    
フォントを変更します。
例:
"font-name": "Arial-BoldMT"
                                                                                                                                                                    
フォント・サイズを変更します。
例:
"font-size": 14.5
                                                                                                                                                                    
テキストの位置合せを変更します。
例:
"text-alignment": "left"
                                                                                                                                                                    
使用可能な値:
- "
left" - "
right" - "
center" - "
justified" - "
natural 
UIView変換
UITextViewでは、UIViewのすべての変換がサポートされています。
UIImageView変換
イメージを変更します。
例:
Example: "background-image": "http://www.mydomain.com/image.png"
                                                                                                                                                                                                    
"background-image": "embedded-image.png"
UIView変換
UIImageViewでは、UIViewのすべての変換がサポートされています。
UIButton変換
テキストを変更します。様々なボタン状態に設定できます。
例:
"text" : "Buy Now!"
                                                                                                                                                                                                        
"text" : [
{
value: "Highlighted Button",
state: ["highlighted"]
},
{
value: "Selected and Highlighted Button",
state: ["highlighted", "selected"]
},
{
value: "Button"
}
]
状態に使用可能な値:
- "
highlighted" - "
selected" - "
disabled" 
テキストの色を変更します。様々なボタン状態に設定できます。
例:
"text-color" : "#BE67FA"
                                                                                                                                                                                                        
"text-color" : [
{
value: "#BE67FA",
state: ["highlighted"]
},
{
value: "#BEFFFA",
state: ["highlighted", "selected"]
}
]
状態に使用可能な値:
- "
highlighted" - "
selected" - "
disabled 
フォントを変更します
例:
"font-name": "Arial-BoldMT"
                                                                                                                                                                                                        
イメージを変更します。様々なボタン状態に設定できます。
例:
"image" : "embedded-image.png"
                                                                                                                                                                                                        
"image" : "http://www.mydomain.com/image.png"
"image" : [
{
value: "http://www.mydomain.com/highlighted.png",
state: ["highlighted"]
},
{
value: "embedded_highlighted_selected.png",
state: ["highlighted", "selected"]
},
{
value: "embedded_settings.png"
}
]
状態に使用可能な値:
- "
highlighted" - "
selected" - "
disabled 
背景イメージを変更します。様々なボタン状態に設定できます。
例:
"background-image" : "embedded-image.png"
                                                                                                                                                                                                        
"background-image" : "http://www.mydomain.com/image.png"
"background-image" : [
{
value: "http://www.mydomain.com/highlighted.png",
state: ["highlighted"]
},
{
value: "embedded_highlighted_selected.png",
state: ["highlighted", "selected"]
},
{
value: "embedded_normal.png"
}
]
状態に使用可能な値:
- "
highlighted" - "
selected" - "
disabled 
UIControl変換
UIButtonでは、すべてのUIControl変換がサポートされています
UIView変換
UIButtonでは、すべてのUIView変換がサポートされています
UITableView
UIView変換
UITableViewでは、すべてのUIView変換がサポートされています
セル変換
変換は、表のセルとそのコンテンツに適用できます。