Google Analytics e コマースを利用する際の注意事項とアプリ内収益がマイナスになっちゃう原因
android appでGoogle Analytics SDKのe コマースを使う際、
Google Analytics Ecommerce Tracking - Android SDK
https://developers.google.com/analytics/devguides/collection/android/v2/ecommerce
にexampleがあるんですが、
これがまともに動かないというかマイナスになるような数値が
通知されてしまうようなので
いろいろ調べた結果のコードをのせておきます。
例えば
オーダーID N00012345 合計価格8000円 税金400円 送料350円 商品A カテゴリ 食品 SKU L_123456 単価2000円 個数 2個 商品B カテゴリ コスメ SKU M_7890AB 単価4000円 個数 1個
の場合、
Transaction myTrans = new Transaction.Builder( "N00012345", //オーダーID (long) ((long)8000 * 1000000) ) //合計金額 .setAffiliation("test android shopping") //アフィリエイト情報があれば .setTotalTaxInMicros( (long) ((long)400 * 1000000) ) //税 .setShippingCostInMicros( (long) ((long)350 * 1000000) ) //送料 .setCurrencyCode("JPY") //通過 .build(); myTrans.addItem(new Item.Builder( "L_123456", //商品SKU "商品A", //商品名 (long) ((long)2000 * 1000000), //単価 2) //個数 .setProductCategory("食品") //カテゴリ .build()); myTrans.addItem(new Item.Builder( "M_7890AB", //商品SKU "商品B", //商品名 (long) ((long)4000 * 1000000) , //単価 1) //個数 .setProductCategory("コスメ") //カテゴリ .build()); Tracker myTracker = EasyTracker.getTracker(); // Get reference to tracker. myTracker.sendTransaction(myTrans); // Send the transaction.
金額を報告する際、
サンプルでは
(long) (2.16 * 1000000)
となってますが、これを日本円にしたいばっかりに2.16を8000円とかにしたりすると
マイナスの値がanalyticsの画面に表示されます。
要するに
(long) (8000 * 1000000)
を計算すると
8000はint値なので、これに1000000をかけると
-589934592の値になりますw
桁溢れというか、マイナスになっちゃうんですね。
なので、正しく報告するには
(long) ((long)8000 * 1000000)
と、8000をlong型にcastして1000000をかけるように
しないといけないようです。。。
そもそも$10000とか、数千円+銭の値を送ることは
exampleのままでは送れないから
floatなりにしないとダメでしょうね
なので、正しくは
(long) ((float)2.16 * 1000000)
な気がします。
つーか、なんで1000000を掛けた値を送るような仕様なんだろ。。。。。