S用のGAのトラッキング埋め込みライブラリ作った - GADI


iOS用のGAのトラッキング埋め込みライブラリ作った - GADI

以前からGA用にDI的に埋め込むコードのライブラリ化を行ってたのがひと段落したので公開します

MO-AI/GADI

概要

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の埋め込み箇所の指定は全てこの設定ファイルの中で完結する

GoogleAnalyticsConfig.plist
<?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くれると喜びます!