特別天然記念物

日本ぱんだ(@nihonpanda)です。エンジニアです。プログラム談義とかします。

Firebase AnalyticsのlogEventWithNameでハマった話

お久しぶりです。僕です。

先日、Google I/OでFirebaseの新バージョンが発表されましたね。
無料で各種機能が使えるようになって、モバイルアプリエンジニアの皆さんはさぞワクワクしたことでしょう。
僕も例に漏れず、喜び勇んで弊社の開発中のiOSアプリに導入致しました。

ここで導入の仕方とか話すつもりは無いんですけど、
cocoapodsでさくっと入れて、1行初期化API叩くだけで、Firebaseのコンソールにあらゆる情報が表示されて「ひょえーーーーーーーーーーこいつぁすげーーなーーーーーー」と思ったものです。

さて本題です。

今開発中のアプリは、Screen TrackingとEvent TrackingをGoogle Analyticsにまかせていたのですが、FirebaseにScreen Trackingの機能が無いから仕方ないとして、Event Trackingやその他FirebaseでできることはすべてFirebaseに移行しようということになりました。

と言っても、いくつかのイベントのTrackingするコードをFirebaseに書き換えるだけで特に苦労はしなかったです。
Firebaseが自動で取得するイベント(first_open、os_update等)以外に、独自のイベントを取得したいときは、以下の1行で良いです。

FIRAnalytics.logEventWithName("eventName", parameters: params)

第1引数にStringでイベント名、
第2引数に[String : NSObject]の詳細情報を付与できます。
簡単ですね。

簡単だと思ったんだけどなぁ・・・・・・

待てど暮らせど、Firebaseのコンソールにイベントが表示されません。
しびれを切らして色々調べましたが全くわからず。

そんな中、救世主のような これ を発見。

回答は意訳すると「とりあえず、Firebaseが出力するデバッグ文をちゃんとよんでみな。」とのこと。
早速Xcodeここに書いてある設定を加えました。

それで実行!!
早速エラー!!!

<FIRAnalytics/ERROR> Event name is too long. The maximum supported length is 32: 
<FIRAnalytics/ERROR> Event name must contain only letters, numbers, or underscores

イベント名は32文字までって言ってるのと、
イベント名に、英数字アンダースコア以外は使うなって言ってますね。

言うとおりに直したらエラー出なくなりました。

ドキュメントちゃんと読め案件でしたね。

以上でーす。