久々にスマホアプリをSiteCatalystで計測する方法について調べる機会がありました。
現在リリースされているアプリ計測ライブラリだと、昔のような
1 2 3 4 5 | s.pageName = "top" ; s.prop1 = "main" ; s.eVar1 = "man" ; s.events = "event1" ; s.track(); |
みたいな実装をしないんですね。
Context Data and Adobe Mobile Analytics: Change is Good
で、代わりにContext Dataに入れた値をProcessing Rule (処理ルール)で変数に入れるという。
1 2 3 4 5 | HashMap cdata = new HashMap<String, Object>(); cdata.put( "my.section" , "main" ); cdata.put( "my.gender" , "man" ); cdata.put( "my.action" , "login" ); Analytics.trackState( "top" , cdata); |
みたいに実装して、Processing RulesでContext Dataからそれぞれ任意の変数に値をコピーする、と。
この方がより直感的だ、と言われてるそうですが、昔ながらのSiteCatalystのインプリに慣れてるので、かえって心地悪い。
あと、Processing RuleだとビーコンをCharlesやBloodhoundで見て目視、という確認がやりづらい。
従来のs変数に直接値を入れるやり方がもう出来ないのか?という訳でもありませんでした。
Processing Rulesがサポートしていないproducts変数や、events変数のシリアライゼーションは”&&”を付けて直接値を代入するやり方です。
Products Variable – Android SDK 4.x for Marketing Cloud Solutions
1 | cdata.put( "&&products" , "Category;Product;Quantity;Price" ); |
見慣れたproducts変数の構文です。
Event Serialization – Android SDK 4.x for Marketing Cloud Solutions
1 | cdata.put( "&&events" , "event1:12341234" ); |
実際に使った事はないんですが、お馴染みのイベントシリアライゼーションの書き方です。
というわけでビーコンパラメータ名(変数名ではない)に、”&&”を付けることで、Context Dataではなく、通常のパラメータとして処理されるようです。
パラメータ名だとこうなります。
- prop1 → c1
- eVar1 → v1
1 2 3 4 5 | HashMap cdata = new HashMap<String, Object>(); cdata.put( "&&c1" , "main" ); cdata.put( "&&v1" , "man" ); cdata.put( "&&events" , "event1" ); Analytics.trackState( "top" , cdata); |
pageNameはtrackStateの第一引数なので仕方ない。
で、ビーコンをログで見るとちゃんとパラメータに入ってますね。
&c. から &.c の間に入るとContext Data扱いになり、Context DataはProcessing Rulesで拾わない限りレポートには出てきません。
で、”&&パラメータ名”という書式でセットすれば、&c. ~ &.c の外につくので、Context Dataにならない。
そのため、Processing Rulesを使わなくても、直接値をセット出来る、という仕組みです。
この”&&パラメータ名”の仕組みを使って直接値をセットすれば、”D=”のDynamic Variablesも使えるので
1 2 | cdata.put( "&&c1" , "foobar" ); cdata.put( "&&v1" , "D=c1" ); |
という書式でprop1の値をeVar1にコピーする、おなじみのインプリも可能です。
events変数に数値を入れるカウンタ型を使う時も
1 | cdata.put( "&&events" , "event2=5" ); |
この書き方で対応します。