Googleを搭載した新しいFirebaseをテストしており、リモート通知とクラッシュレポートを実装しています。ただし、Analyticsを機能させるには大きな問題があります。
FIRAnalytics.logEventWithName(...)
でイベントを追跡し、FIRAnalytics.setUserPropertyString(...)
でユーザーのプロパティを保存します。ただし、私が何をしても、Firebase Analyticsコンソールにデータは表示されません。
まあ、私はいくつかのイベントを受け取りますが、それらは私から送信されません(first_openやsession_startなど)。また、このデータは非常に長い時間を経て低下しているようです。
さらに、イベントを追跡してユーザーデータを保存すると、次のメッセージが表示されます。
Upload task scheduled to be executed in approx. (s): 3102.294599890709
これは本当に奇妙に思えます-次のデータのバッチを送信しようとする前にFirebaseがほぼ1時間待機するのはバグである必要がありますか、それとも構成可能ですか?その非常に長い遅延を待つと、データは送信されましたが、表示されません。
Firebaseイベントはまとめてバッチ処理され、デバイスの過度のバッテリー消費を防ぐために1時間に1回アップロードされます。 iOSでは、1時間のアップロードターゲットの前にアプリをバックグラウンドにすると、この時点でバックグラウンドでイベントがディスパッチされます。
IOSのデバッグログを有効にすると( https://firebase.google.com/docs/analytics/ios/events#view_events_in_the_xcode_debug_console )、イベントがデバッグコンソールにいつアップロードされるかを確認できます。
イベントがアップロードされると、Firebase Analyticsダッシュボードにデータが表示されるまで約3時間遅れが生じます。また、デフォルトの日付範囲では「今日」が除外されているため、昨日のイベントのみが表示されます。最新のイベントを表示する場合は、日付ピッカーを切り替えてTodayを含めることができます。
データのアップロードを遅延/バッチ処理する主な理由は、バッテリーを節約するためです。ネットワークが使用されるたびに、デバイスのモバイルネットワークモデムは高電力モードになり、しばらくこのモードのままになります。ネットワークを定期的に使用すると、バッテリーの寿命に重大な影響を及ぼします。アップロードをまとめてアップロードし、アップロードを遅らせることにより、バッテリーへの影響が大幅に軽減されます。
Swiftのようになります:
FIRAnalytics.logEvent(withName: "SignUp", parameters: ["user_id": userid, "user_name": username])
Firebaseでこのイベントを表示するには:
Xcodeでこのイベントを表示するには:
-FIRAnalyticsDebugEnabled
を追加します-FIRAnalyticsDebugEnabledの前には[〜#〜] one [〜#〜]のみが付いていることに注意してください。
コンソールでイベントを受信していない場合は、次のようにイベント名にスペースが表示されないことがあるため、コンソールで命名規則に従っていない可能性があります。
mFirebaseAnalytics.logEvent("Add Camera", bundle);
ただし、次のようにスペースを削除すると:
mFirebaseAnalytics.logEvent("Add_Camera", bundle);
約3時間後に、コンソールにイベントが表示されます。アプリケーションは、次の場合にデータをコンソールにディスパッチします。
1- Data is more than an hours old
2- App goes into the background
詳細については、このチュートリアルをご覧ください: Getting Started with Firebase Analytics on iOS:Events-Firecasts
React-Nativeアプリ(IOS/Android)
同じ問題があり、debugViewが機能せず、streamViewのグリッチが数回ありました。私のイベントをテストするための最良の方法は、私のcreatePageEvent()
そして
重要なことは、イベントを記録した後、アプリをバックグラウンドに置くことです、それらはfirebaseイベントまたはstreamViewでほぼリアルタイムで表示されます(チェック- この記事 イベントがfirebaseに送信されるタイミングを確認します)
イベントはログに記録されてから1時間後に送信されるか、アプリをバックグラウンドに置いた場合にすぐに送信されます。
import firebase, { RNFirebase } from 'react-native-firebase';
export default class AnalyticsService {
static async initialize() {
firebase.analytics().setAnalyticsCollectionEnabled(true);
}
static async createPageEvent(screen: string) {
firebase.analytics().setCurrentScreen(screen)
firebase.analytics().logEvent(`open_${screen}`)
}
}
結果は、ほぼリアルタイムのstreamViewでこれです->
これで、目標到達プロセスなどの構築を開始できます
もう1つ確認することは、起動時に渡される引数のログエントリが正しいことを確認することです。彼らはダッシュで始まる必要があります
-FIRAnalyticsDebugEnabled
ではなく
FIRAnalyticsDebugEnabled
先日、何もログに記録されないのかと思って1時間無駄にしました。
first_open
、session_start
は、Firebaseによって 自動収集イベント としてリストされます。
カスタムイベントで発生する極端なアップロードタスクの遅延についてはサポートできません。しかし、Firebase Analyticsは1週間も経っていないため、単なるバグである可能性があります。
このStackOverflowの質問 を見つけましたが、これは同じデバッグ行に言及していますが、Google App Measurementまたは古いGoogle Mobile Analytics SDKに関連しています。
また、Firebase Consoleはリアルタイムでイベントを表示しないことに注意してください( source ):
Firebaseコンソールのダッシュボードで、イベントに関する集計された統計を表示できます。 これらのダッシュボードは、1日を通して定期的に更新されます。すぐにテストするには、前のセクションで説明したようにlogcat出力を使用します。
ここに簡単なメモ:この小さなビデオによると https://www.youtube.com/watch?v=5pYdTgSkW5E シミュレーターで遊んだ後Xcodeのホームボタンを押すと、データがサーバーに送信されません。
ほとんどの人が直面している最も一般的な問題は、すべてが完全に正常に機能しているにもかかわらず、Firebaseがイベントをログに記録していないことです。
アプリのバージョンでアナリティクスコレクションを完全に無効にする必要がある場合は、アプリのInfo.plistファイルでFIREBASE_ANALYTICS_COLLECTION_DEACTIVATED to YES
を設定します。 FIREBASE_ANALYTICS_COLLECTION_DEACTIVATED to YES
の設定は、アプリケーションのFIREBASE_ANALYTICS_COLLECTION_ENABLED
のInfo.plist
の値、およびsetAnalyticsCollectionEnabledで設定された値よりも優先されます。
コレクションを再度有効にするには、FIREBASE_ANALYTICS_COLLECTION_DEACTIVATED
からInfo.plist
を削除します。 FIREBASE_ANALYTICS_COLLECTION_DEACTIVATED
をNO
に設定しても効果はなく、FIREBASE_ANALYTICS_COLLECTION_DEACTIVATED
にInfo.plist file
が設定されていない場合と同じ動作になります。
そのため、分析を機能させるには、FIREBASE_ANALYTICS_COLLECTION_DEACTIVATED
ファイルからgoogle-servicesinfo.plist
を削除する必要があります