moxt

Just another Blog site

AndroidでGoogleTagManagerを使いたい

      2015/07/03

GoogleTagManagerとは

作成したモバイルアプリの設定値とフラグ値をすばやく簡単に変更できます。新しいバイナリをリビルドして実装しなくても、Google タグマネージャの管理画面を使用すれば、モバイルアプリの設定値(タイムアウト、広告の掲載位置、ゲームプレイの動的要素など)を変更したり、フラグ設定の機能を有効化したりできます。

引用通りだけど、GoogleTagManagerを予め仕込んでおけばリリース無しで定数をWEBから好き勝手にイジることができる。
使用例として真っ先に思い浮かぶのはABテスト。
ゲームならキャンペーン期間中にガチャの確率を操作したり、などなど、、応用の場面は多岐にわたる。

これだいぶ便利そうな機能なんだけど、ググっても日本語情報が出てこない。
英語まともに読めないし、困ったのでドキュメントを泣く泣く読みながら導入した過程をメモしておく。

ドキュメントに書いてるとおりにやれば動く。

事前準備

  • tagmanagerのアカウント作っておく
  • tagmanagerでContainerを作っておく

1.TagManagerをプロジェクトに追加する

GooglePlayServiceを追加すればおk。
AndroidStudioを使っていればdependenciesに下記を追加すれば終わり。

それから、TagManagerを使うためにはネットワーク通信が必要なのでマニフェストファイルに下記のパーミッションを追記しておく。

2. デフォルトで使うコンテナファイルをプロジェクトに追加する

基本的にデフォルトのコンテナを使い続けるわけではない。
あくまで初回起動用。
で、しばらくすると(通常、12時間周期)新しいコンテナと交換される。

もう一つ、デフォルトのコンテナが使われるケースは、新しいコンテナが取得できなかったとき。
アプリ側で指定したコンテナのidが間違っていたりすると
『そんなコンテナないです、代わりにデフォルトのコンテナ使います』
と、なる。

追加の手順は下記の通り。

  • TagManagerのWEBコンソールから使いたいバージョンのコンテナを指定してダウンロードする
  • プロジェクトルート以下のresフォルダにrawフォルダを作って、そこにコンテナファイルを置く
  • コンテナファイルは小文字、数字、アンダースコアのみからなる名前に変えておく

Rename the container binary file if necessary. It consists of only lowercase letters, digits, and underscores.

と、書いてるのでコンテナファイルをgtm_defaultみたいな感じで適当にリネームしておく。

3. TagManagerを初期化する

ドキュメントでは初回起動で表示するスプラッシュ用のActivityでTagManagerを初期化している。
最初に初期化専用のActivityを必ず経由するようなアプリであればこのようなやり方で問題ない。

自分が開発しているアプリではエントリーポイントとなるActivityがTagManagerの初期化以外の処理も行っているため、単純に初期化処理をベタ書きするとコードの見通しが悪くなる。

なので、専用のHelperクラスを用意した。
Activityのライフサイクルに応じて処理を委譲させる感じ。

で、使うActivity側でTagManagerのインスタンスを作ってonCreate(),onDestroy()を呼び出せば終わり。

コンテナを使うたびに↑のような初期化を行うのは面倒なので、一度作ったコンテナはシングルトンで管理する。
ContainerHolderSingletonがそれにあたる。

これでコンテナを使う準備はできた。

4.変数を読み込む

TagManagerのWEBコンソールで設定した変数をアプリ内で表示したい。
アプリ内で変数を受けて適当に処理できるように仕込んでおけば、変数を変えるだけで文言を変えたり、ゲームのレベルを調整できたりする。

先ほど作ったシングルトンからコンテナを取り出してgetXXXを呼ぶだけ。

こんな感じ。
で、この値をTextViewで表示するなり、レイアウトを動的に選択するためのキーとして使うなりすれば良い。

5.データレイヤーを使う

ちょっと良くわからないので省略。。

6.コンテナをプレビューして問題なければ公開する

プレビュー

コンテナを公開する前に実際に挙動を確認するニーズを叶えるため、プレビューができるようになっている。
ドキュメント通りにやれば特にハマることなくいけると思う。

このプレビューを行う方法がちょっと特殊。

WEBコンソール上で発行された特別なURL経由でアプリを開く必要がある。
で、そのURL経由でプレビューの準備をやってくれるPreviewActivityというActivityをマニフェストファイルに記載する必要がある。

下記の通り。

schemeのyour.application.packagenameの部分は自分のアプリ名(com.hogehuga.awesomeappみたいなヤツ)に変えておくこと。

あとは、WEBコンソールから 編集中のコンテナ一覧 > 使用したいバージョンのアクション > プレビュー を選択する。
で、アプリ名を入力する欄があるのでcom.hogehuga.awesomeapp的なヤツを入力して『開始プレビューリンクを作成』を押せば、テキストリンクとQRコードが表示されるので好きな方からアプリを起動する。

プレビューでの確認が終わったら『終了プレビューリンクを作成』をクリックして、表示されたリンクかQRコードでアプリを起動すればプレビュー前の状態に戻るはず。

公開に関しては前述のアクション > 公開 を選択すればイケる。

 - Android

  • このエントリーをはてなブックマークに追加
  • follow us in feedly

  関連記事

no image
[WIP]AndroidでParseを使ってみる

今更感溢れてるが。 バックエンドな実装・運用は面倒くさい、Railsとか使い方分からない、的な人はParse良いかもしれない。 …

wallpaper.big-j.cs
LeakCanaryの仕組みをある程度理解したいマン

Contents1 LeakCanaryとは何か2 …

wallpaper.big-j.cs
Facebook製の画像ライブラリFrescoのコードを読んでいる

Facebookが新たに画像ライブラリFrescoを公開した。 DraweeView,DraweeController,DraweeHierarchyというクラスを利用したMVC的な構成を成しており、画像を効率よく読み込むようになっているらしい。(雑) …

wallpaper.big-j.cs
Androidで超シンプルなWidgetを作りたい

情報が少なくてちょっとつまづいたのでメモ。 Contents1 …

wallpaper.big-j.cs
Androidアプリで使う画像素材の圧縮をgulpで一括処理する

まず、デザイナーやらディレクターやらプロデューサーやらに『圧縮された画像をgitなどのバージョン管理システム上にコミットしてもらえる』そんな幸福な環境であれば無縁な話。 大概の組織では共有ファイルシステムに新しく追加する、もしくは変更された画像をドカッと置かれて「よろしく」って感じだろう。 …

wallpaper.big-j.cs
GridViewからRecyclerViewに移行したい

GridViewからRecyclerViewにクラス名変えるだけじゃ動かない。 移行過程をメモ。 …

wallpaper.big-j.cs
手を動かしてViewDragHelperを学ぶ(無駄にKotlin)

まず、Youtubeの公式Androidアプリみたいなヤツ作りたくなった。 すでに有志がライブラリ作ってた。。 …

logo_og
ReactNativeでGiphyのデータを表示する

まずは下記をサクッとパクってみる。 当方、比較的AndroiderなのでAndroidで。 …