iOS用のGAのトラッキング埋め込みライブラリ作った - GADI
以前からGA用にDI的に埋め込むコードのライブラリ化を行ってたのがひと段落したので公開します
概要
GADI(Google Analytics Dependency Injection)の略
iOSでのGoogleAnalyticsによるトラッキング処理を外部から注入することが可能となる
内部の処理としてAOPライブラリのMOAspectsを使ってAOP的にトラッキング処理を埋め込んでいて、既に実装してあるコードをほぼ汚さずにGA埋め込みが実現できるということになる
始め方
Podfile
以下記述をPodfileに記載し、pod install
する
pod 'GADI'
設定ファイルのインポート
このライブラリは設定用のPropertyListファイル(.plist)を基に処理を行うため、以下のplistファイルをプロジェクト内のリソースファイルにインポートする必要がある
GoogleAnalyticsConfig.plist
設定項目
設定名 | 詳細 | 必須 |
---|---|---|
Class | GAのトラッキング対象とするクラス | ○ |
MethodSignature | GAのトラッキング対象とするメソッド 先頭に+/-付けることでクラス/インスタンス指定可能 |
○ |
GA:Type | トラッキング種別、"Screen" か "Event" のどちらかを設定する | ○ |
GA:Screen | GAの画面のトラッキングに必要なScreenの文字列 | × |
GA:Category | GAのイベントのトラッキングに必要なCategoryの文字列 | × |
GA:Action | GAのイベントのトラッキングに必要なActionの文字列 | × |
GA:Label | GAのイベントのトラッキングに必要なLabelの文字列 | × |
GA:Value | GAのイベントのトラッキングに必要なValueの文字列(現状未対応) | - |
実例
GAの埋め込み箇所の指定は全てこの設定ファイルの中で完結する
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<array>
<dict>
<key>Class</key>
<string>AppleViewController</string>
<key>MethodSignature</key>
<string>viewDidAppear:</string>
<key>GA:Type</key>
<string>Screen</string>
<key>GA:Screen</key>
<string></string>
<key>GA:Category</key>
<string></string>
<key>GA:Action</key>
<string></string>
<key>GA:Label</key>
<string></string>
<key>GA:Value</key>
<string></string>
</dict>
<dict>
<key>Class</key>
<string> AppleViewController</string>
<key>MethodSignature</key>
<string>didTapAppleButton</string>
<key>GA:Type</key>
<string>Event</string>
<key>GA:Screen</key>
<string></string>
<key>GA:Category</key>
<string>Apple</string>
<key>GA:Action</key>
<string>Tap</string>
<key>GA:Label</key>
<string>Button</string>
<key>GA:Value</key>
<string></string>
</dict>
</array>
</plist>
準備完了
ここまで設定したら以下のメソッドを一度だけ実行することでGAのトラッキングの実装は完了となる
Objective-C
[GADInjector injectWithTrackingID:@"" /* Please GoogleAnalytics tracking ID */
configPropertyListPath:[[NSBundle mainBundle] pathForResource:@"GoogleAnalyticsConfig.plist" ofType:nil]];
Swift
GADInjector.injectWithTrackingID("", /* Please GoogleAnalytics tracking ID */
configPropertyListPath:NSBundle.mainBundle().pathForResource("GoogleAnalyticsConfig.plist", ofType: ""))
デモ
りんご、バナナ、オレンジが各画面で出てくるデモアプリ、実際にGAのトラッキングIDを埋め込んで動かすことでトラッキングできてることが確認できると思う
GADIDemo
おわりに
まだイベントのトラッキングのValueに対応できてないが今後対応予定です、他に要望等あればIssueくれると喜びます!