iRSSの日記

はてなダイアリーiRSSの日記の続き

Google Analytics SDK 2.0 for iOSを使う(メモ)

https://developers.google.com/analytics/devguides/collection/ios/resources

V2のトピックス

・バージョン情報も詳細にとれる
・Debugもできる
・クラッシュログもとれる
Androidの場合は、ストアからのダウンロード数もとれる
・App内課金のトラッキングができる
等の機能が増えたようです。


V2.0でできるようになったこと

Crashes and Exceptions - エラーの取得
  • @try@catchで捕まえた、NSExceptionや任意のNSErrorを送ることができる。
  • 予想しないクラッシュもグローバルにキャッチすることも可能。

The description field is automatically populated using the stack trace.

ということで、 stack traceが全部送信されて、参照できるわけではなさそう。


バイス&バージョン情報も詳細にとれる

OSのバージョン、スクリーンサイズ、アプリのバージョン

↑その他になっているのは、シミュレーターかもしれない。集計中のための模様。

後でみたら、OSが判定されていた

iPad,iPhoneの区別はつくが、iPhoneの機種(4 or 4Sの区別)まではとれない模様


Debugもできるようになった
[GAI sharedInstance].debug = YES;

NSLogを自分で書かなくてもよくなるのだけど

2012-11-28 23:30:59.403 nyarupo dev[281:907] Hit URL: http://www.google-analytics.com/collect
2012-11-28 23:30:59.404 nyarupo dev[281:907]     Method: POST
2012-11-28 23:30:59.406 nyarupo dev[281:907]     Header User-Agent: GoogleAnalytics/2.0b3 (iPhone; U; CPU iPhone OS 6.0 like Mac OS X; ja-jp)
2012-11-28 23:30:59.407 nyarupo dev[281:907]     Header Content-Length: 176
2012-11-28 23:30:59.409 nyarupo dev[281:907]     Header Content-Type: application/x-www-form-urlencoded; charset=UTF-8
2012-11-28 23:30:59.410 nyarupo dev[281:907]     Body: ul=ja&an=nyarupo+dev&_v=mi1b3&cid=734ee0621caa01c010a4a995c11883&t=appview&sd=24-bit&sr=320x480&cd=detail%2F3829&tid=UA-xxxxxxxx-10&v=1&av=1.1&qt=11880&z=11189763332405702156
2012-11-28 23:30:59.458 nyarupo dev[281:907] GoogleAnalytics 2.0b3 -[GAIDispatcher dispatchComplete:withStartTime:withRetryNumber:withResponse:withData:withError:] (GAIDispatcher.m:392) DEBUG: Hit /GAIHit/p5 dispatched (46ms): HTTP status 200
2012-11-28 23:30:59.473 nyarupo dev[281:907] GoogleAnalytics 2.0b3 -[GAIDispatcher dispatchComplete:withStartTime:withRetryNumber:withResponse:withData:withError:] (GAIDispatcher.m:413) DEBUG: Successfully dispatched hit /GAIHit/p5 (0 retries).
2012-11-28 23:30:59.476 nyarupo dev[281:907] GoogleAnalytics 2.0b3 -[GAIDispatcher dispatchComplete:withStartTime:withRetryNumber:withResponse:withData:withError:] (GAIDispatcher.m:420) DEBUG: Pending hit queue drained.
2012-11-28 23:30:59.478 nyarupo dev[281:907] GoogleAnalytics 2.0b3 -[GAIDispatcher cancelTimer] (GAIDispatcher.m:224) DEBUG: Canceled timer with interval 20.0s

のように、DEBUGすると送信ログがLogされる。ただ、ちょっと、おおすぎだなあ..


Campaign Tracking
  • インストール済みのアプリのSchemaでの起動時に、呼出し元を特定する。
"utm_campaign=my_campaign&utm_source=google&utm_medium=cpc&utm_term=my_keyword&utm_content=ad_variation1"

のように、Campaign Parametersを仕込むことができる、このパラメータごとに集計
iOSの場合は既存アプリの場合だけなので新規インストールの補足はできない。
ただAndroidの場合はGoogle Play Store Campaign Trackingとい素敵な機能があって、GooglePlayからの新規ダウンロード数も把握できる。


Ecommerce Tracking

App内課金のトラッキングができる。


Events

イベントの取得。「Likeボタンを押した」とか


Screens

画面ごとの閲覧。


Sessions

デフォルトでは30分でセッションがきれるが、タイムアウトをのばしたり、任意のタイミングでセッションを新規にしたりできる。


User Timings

特定の動作がどのくらいの頻度時間かかっているのかをで発生しているかを測定記録できる。たとえば、起動時間とか。ロード時間とか
User Timings - iOS SDK  |  Analytics for iOS v2 (Legacy)  |  Google Developersのサンプルコードは以下だが、

- (void)onLoad:(NSTimeInterval *)loadTime {
    [tracker trackTimingWithVariableCategory:@"resources"
                            withTimeInterval:loadTime
                                    withName:@"high scores"
                                   withLabel:nil];
    ... // The rest of your onLoad: code.
}

withTimeIntervalが間違い。withValueにすべし

- (void)onLoad:(NSTimeInterval *)loadTime {
            [tracker trackTimingWithCategory:@"resources"
                            withValue:loadTime
                                    withName:@"high scores"
                                   withLabel:nil];


画像アップロードの速度を取得してみた。



v1->v2のマイグレーションの方法

https://developers.google.com/analytics/devguides/collection/ios/v2/migration#migrate-all
プロファイルは、新しくつくる必要あり。
これまでもプロフォールも、そのまま使えると思われるが、V2ならではの情報は新しくつくった、プロファイルでないととらえれないと予想(まだ確認できてないです)
プロファイルをつくっても、そのプロファイルには、これまでの情報ははいらない。


埋め込み方

https://developers.google.com/analytics/devguides/collection/ios/v2/
1.xのときよりもheadファイルが増えたり、viewのトラッキング方法が微妙にかわったりといろいろ、作業はある。

#import "GAITrackedViewController.h"

@interface AboutViewController : GAITrackedViewController

ViewControllerの親クラスが提供されていて、これを使って、self.trackedViewNameを指定すれば

- (void)viewDidLoad {
  [super viewDidLoad];
  self.trackedViewName = @"About Screen";
}

自動的に、トラックできるとのことだけど、ちょっと、怖い。

これまでどおり

[tracker trackView:@"About Screen"];

を任意の場所に埋め込むことも可能

ビルド時に"_OBJC_CLASS_$_GAI"のエラーがでたときの対処法

Google Analytics Library IOS - Stack Overflowに回答ありました。
1.5から2.0にマイグレーとしたときに、1.5のライブラリのパスを参照し続けるようになっているのが、原因の可能性が高いです。

ターゲットのLibrary Search Pathsに、1.5のライブラリパスが指定されていたらそれを、削除すればOKになります(他の原因でなければ)


おまけ

アカウント、ユーザー、プロパティ、プロファイルの関係

googleアカウントに複数のAnalyticsアカウントの閲覧、操作権限を与えることが可能
一つのAnalyticsアカウントには複数のプロパティを作成可能
プロパティ毎に、トラッキング ID(例: UA-xxxxxxx-1 )が1つひもづく
プロパティに複数のプロファイルを作成可能。
ユーザーはプロファイル毎に指定可能

組織、アカウント、ユーザー、プロパティ、ビューの階層構造 - アナリティクス ヘルプ

プロパティの分割方針

複数のアプリはそれぞれ異なるプロパティでトラッキングする。
同じアプリの別バージョンは、同じプロパティでトラッキングする。

↑ここまでは、違和感ないですが↓は悩みどころでした

同じアプリの別プラットフォーム版は、同じプロパティでトラッキングする。
複数のプラットフォーム向けに同じアプリを作成した(「アプリ A Android 版」と「アプリ A iOS 版」がある)場合は、同じプロパティでトラッキングします。その上で、それぞれ新しいプロファイルを設定すれば、Google アナリティクスのレポート内でパフォーマンス データを整理、比較することができます。