Help us understand the problem. What is going on with this article?

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

More than 3 years have passed since last update.

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

https://github.com/MO-AI/GADI/tree/master/GADIDemo/

おわりに

まだイベントのトラッキングのValueに対応できてないが今後対応予定です、他に要望等あればIssueくれると喜びます!

Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away