先日Googleタグマネージャーを使ってA/Bテストを実施してみたのでそれを書いてみます。
やったこと
今回はレビュー依頼のポップアップで3種類の文言を出してどれが一番"レビューする"ボタンを押してくれるかを計測しました。
テスト経過の表示は下の通りです。
数字はデバッグ時のものになります。
やり方
GoogleAnalyticsをアプリに導入する
最初にGoogleAnalyticsをアプリに導入します。
アプリに入れる前にGoogleAnalyticsのサイトでタグを取得しておきます。
インストールは下のようにPodfile
に記述してpod install
すれば完了です。
pod 'GoogleAnalytics'
使い方は下の通りです。
AppDelegate
で先ほど取得したタグを元に初期化して、使いたい所でイベントを飛ばします。
// AppDelegateで下のように初期化 GAI.sharedInstance().trackerWithTrackingId("TAG_ID") // 計測したい箇所で下のようにイベントを飛ばす var tracker = GAI.sharedInstance().defaultTracker let dic = GAIDictionaryBuilder.createEventWithCategory( "Top", action: "show", label: nil, value: nil).build()! tracker.send(dic as [NSObject : AnyObject])
Swiftから使えるようにブリッヂファイルにimport
もしておきます。
#import "GAI.h" #import "GAIDictionaryBuilder.h"
これでGoogleAnalyticsで計測できているかと思います。
"GoogleAnalytics"の"行動"の"イベント"で下のように表示されるようになります。
A/Bテストの設定をする
タグマネージャーの設定をする前にGoogleAnalytics上で目標を作ります。
GoogleAnalyticsのAnalytics設定
の目標
にある新しい目標
ボタンから作成します。
目標の名前は適当に入力して、目標のタイプは"イベント"、イベント条件ではアクションに"Review"と入力して保存します。
次にタグマネージャーの設定をします。
最初にタグマネージャーのサイトにアクセスしてコンテナーを作ります。
そしてメニューの"変数"で"新規"ボタンを押下します。
変数作成画面に飛ぶので、"Googleアナリティクスのウェブテスト"を選択します。
そこで下のように好きな種類のパターンを作ってそれぞれに対してJSONをセットします。
最後にタグマネージャーの公開ボタンを押せば設定は完了です。
タグマネージャーのインストール
タグマネージャーもCocoaPodsに対応しているので、下のように書いてpod install
すればインストール完了です。
pod 'GoogleTagManager'
それとタグマネージャーのバージョン画面からバイナリのダウンロードをしてそれをプロジェクトに追加しておきます。
タグマネージャーの利用
そこまで終わったら実際にタグマネージャーを使っていきます。
初期化は下のように行います。
#import "TagContainer.h" #import "TagContainerOpener.h" #import "TagManager.h" @interface AppDelegate ()<TAGContainerOpenerNotifier> @property (nonatomic, strong) TAGManager *tagManager; @property (nonatomic, strong) TAGContainer *container; @end
self.tagManager = [TAGManager instance]; [TAGContainerOpener openContainerWithId:@"GTM-XXXX(自分のコンテナのID)" tagManager:self.tagManager openType:kTAGOpenTypePreferFresh timeout:nil notifier:self];
初期化が終わると下のコールバックメソッドが呼び出されるのでそこでタグマネージャーのコンテナをセットします。
- (void)containerAvailable:(TAGContainer *)container { // Note that containerAvailable may be called on any thread, so you may need to dispatch back to // your main thread. dispatch_async(dispatch_get_main_queue(), ^{ self.container = container; [self showReviewPopup]; }); }
コンテナからは下のように値を取得します。
reviewMessage
は先ほど設定したパターンのうちのどれかが入っています。
値が取得できない場合は端末上のアプリを一度削除すると取得できるようになる事があります。
[self.container stringForKey:@"reviewMessage"];
最後にレビュー成功時のアクションを送ってあげれば下のように計測されます。
まとめ
タグマネージャーは色々な設定があって慣れるまで大変ですが、一度使えるようになると非常に便利です。
今後はこの機能を使ってアプリ改善をしていきたいと思います。