30
30

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

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

Last updated at Posted at 2015-04-22

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

30
30
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
30
30

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?