【iOS】カンタン!Firebaseによるイベントトラッキングの始め方

2016.07.10

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

おばんです、このブログをまとめつつワインを飲みながら、最近一人飲みも悪くないと気付きつつある田中です。
でも誰かと一緒に飲んだほうが楽しいので誘ってください。

仙台駅東口に新しくできたBIKiNi TAPA+のスパニッシュオムレツおいしかったです。

IMG_4435

さて今回は最近話題のFirebaseによるイベントトラッキングの方法をまとめます

プロジェクトのセットアップ

Firebaseにアクセスしてログインします。

スクリーンショット 2016-06-18 5.41.53

上記画像の「GET STARTED FOR FREE」からプロジェクト立ち上げ用の画面に遷移します。
するとプロジェクト作成用画面に遷移します。

スクリーンショット_2016-06-18_5_42_11

新規プロジェクトの作成を押します。
するとプロジェクト作成用のウィンドウが開きますので、Firebaseプロジェクトの名前を入力し、国を選択します。

スクリーンショット 2016-06-18 5.42.44

これで新たなFirebaseプロジェクトが作成されたので、iOSを選択します。

スクリーンショット_2016-06-18_5_43_00

作成したFirebaseプロジェクトと紐付けるXcodeプロジェクトのBundle Identifierを求められるので入力し、「アプリを追加」ボタンを押します。

スクリーンショット 2016-06-18 5.45.40

次の画面に行くと、Firebaseに必要なInfo.plistが自動的にダウンロードされるので紐付けたXcodeプロジェクトにそのInfo.plistを追加します。
無事に追加されたら「続行」ボタンで次に進みます。

スクリーンショット_2016-06-18_5_46_49

次にFirebaseのPodをインストールします。
画面の指示に従って、Podfileを編集し、pod installします。

スクリーンショット 2016-06-18 5.47.05

初期設定

Podのインストールを完了し、「続行」ボタンを押すとAppDelegateに記述する初期設定の説明画面が出るのですが、FirebaseをimportするとFIRAppが未定義であるとエラーが出てしまうので、FirebaseAnalyticsをimportするようにします。

// AppDelegate.swift

import UIKit
// サンプルコードでは
// import Firebaseだが、
// エラーが出るため
// import FirebaseAnalytics
import FirebaseAnalytics

@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {

    var window: UIWindow?


    func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
        
        FIRApp.configure()
        
        return true
    }
    
}

ここまでで設定は終わりです。

イベントトラッキング

次に実際のイベントトラッキングの処理に入ります。
難しいことはなく、任意の箇所でFIRAnalytics.logEventWithName(_:parameters:)メソッドを呼び出します。 サンプルは以下のコード。

// ViewController.swift
import UIKit
import FirebaseAnalytics

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
    }

    @IBAction func tapButton(sender: AnyObject) {
        FIRAnalytics.logEventWithName("tappedButton", parameters: nil)
    }

}

上記コードでは「ボタンをタップした」というイベントを送信しています。
FIRAnalytics.logEventWithName(_:parameters:)メソッドの第一引数となる箇所にイベント名を入力します。 その他付随する情報も送信したい場合はparametersにNSDictionary型のオブジェクトを代入します。

イベントトラッキングの基本はこれだけ!カンタン!

注意点

ダッシュボード

値の反映

送られたイベントのデータの閲覧は、値の反映に若干時間(数時間?)がかかるのですぐに見られない点に注意が必要な模様

初期設定

FIRApp.configure()の"Use of unresolved identifier FIRApp"エラー

原因は不明だが、import Firebaseimport FirebaseAnalyticsとすると直る。

制約

イベント名に関して

  • イベント名はアルファベットで始める

  • イベント名は英数字とアンダースコアの組み合わせで32文字まで

"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"(33文字)のイベント名でトラッキングを投げると以下のようなエラーが出ます。

2016-06-26 23:21:32.668 FirebaseTestProject[3385:] <FIRAnalytics/ERROR> Event name is too long. The maximum supported length is 32: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
  • "firebase_"をイベント名の頭につけることはできない

"firebase_ButtonTapped"というイベント名でトラッキングを投げると以下のようなエラーが出ます。

2016-06-26 23:21:32.670 FirebaseTestProject[3385:] <FIRAnalytics/ERROR> Event name uses reserved prefix. Ignoring event: firebase_ButtonTapped

なおFirebase_(頭文字が大文字)は問題ない模様。

  • いくつかの予約語があり、送れないイベント名がある

FIREventNames.hに記載されているイベント名リストは送ることができない

  • 大文字と小文字の区別がある

パラメータに関して

  • パラメータ名はアルファベットで始める
  • パラメータ名は英数字とアンダースコアの組み合わせで24文字まで
  • "firebase_"をパラメータ名の頭につけることはできない
  • パラメータのvalueはNSStringとNSNumberに対応している
  • パラメータのvalueはNSStringの場合は36文字まで

まとめ

直近の案件でFirebaseを使ったイベントトラッキングを実装してみたのですが、思いの外導入が簡単でよかったです。
イベントの命名方法など管理にコツが必要そうですが、良い方法を今後使っていく中で探っていこうと思います。
ここからあまり使われてない機能やボタンについて探っていき、アプリをブラッシュアップしていくのですね。楽しそう、そういうのやっていってみたい。

参考リンク

Firebase
Firebase Reference