FireBase,Google Analytics,谷歌分析

4,018 阅读6分钟

Google Analytics

前言(Google Analytics停用原因,可跳过)

  • 逐步停用

我们于 2019 年 10 月起逐步停用基于 Google Analytics(分析)服务 SDK(适用于 Android 和 iOS 设备)的 Google Analytics(分析)移动应用报告功能。
Google Analytics(分析)服务 SDK 将停用,详情点击链接

  • 搜索结果过时

有时候搜索出来的资料用法会莫名其妙,是因为资料比较早,属于早期sdk里面的用法
Android v4旧版 (参考链接)          Android v3旧版 (参考链接)

  • Google Analytics for Firebase

要查看应用报告(无论是在 Google Analytics(分析)中还是在 Firebase 控制台中),您需要在应用中使用 Firebase SDK。Firebase SDK 会自动为您收集基本的应用使用情况数据,无需您编写任何其他代码
Google Analytics for Firebase 是什么

FireBase集成

要在 Google Analytics(分析)中使用最新一代的应用报告,您需要安装 Firebase SDK。如果您没有 Firebase 项目,请访问 firebase.google.com 开始创建 Firebase 项目

所以接下来就是FireBase的集成步骤

官方集成详解

1.创建项目

2.注册应用

如要集成 Firebase 动态链接、Firebase 邀请以及 Firebase 身份验证中的 Google 登录服务或电话号码支持功能,则必须输入此密钥。请在“设置”中修改 SHA-1

keytool -exportcert -list -v \
-alias <your-key-name> -keystore <path-to-production-keystore>

3.下载配置文件


如果后期功能有增删,需要重新配置json文件的,可以重新下载json文件

4.添加Firebase SDK

项目级 build.gradle

buildscript {
  repositories {
    // Check that you have the following line (if not, add it):
    google()  // Google's Maven repository
  }
  dependencies {
    ...
    // Add this line
    classpath 'com.google.gms:google-services:4.3.3'
  }
}

allprojects {
  ...
  repositories {
    // Check that you have the following line (if not, add it):
    google()  // Google's Maven repository
    ...
  }
}

应用级 build.gradle

apply plugin: 'com.android.application'
// Add this line
apply plugin: 'com.google.gms.google-services'

dependencies {
  // add the Firebase SDK for Google Analytics
  implementation 'com.google.firebase:firebase-analytics:17.2.2'
  // add SDKs for any other desired Firebase products
  // https://firebase.google.com/docs/android/setup#available-libraries
}

5.运行您的应用以验证安装

json配置文件,及sdk运行成功之后,这里会检查成功

FireBase Analytics使用

我们项目中并没有使用

implementation 'com.google.firebase:firebase-analytics:17.2.2'

而是直接使用

implementation 'com.google.firebase:firebase-core:16.0.1'
implementation 'com.google.firebase:firebase-auth:16.0.1'
implementation 'com.google.firebase:firebase-messaging:17.3.0'
  • 下面是firebase提供的各种库,只截图部分,仅供参考

Android 版 Google Analytics(分析)使用入门

1. 将 Android 版 Google Analytics(分析)库的依赖项添加到您的模块(应用级)Gradle 文件(通常为 app/build.gradle)

implementation 'com.google.firebase:firebase-analytics:17.2.0'

2. 在活动顶端声明 com.google.firebase.analytics.FirebaseAnalytics 对象:

private FirebaseAnalytics mFirebaseAnalytics;

3. 在 onCreate() 方法中对它进行初始化:

// Obtain the FirebaseAnalytics instance.
mFirebaseAnalytics = FirebaseAnalytics.getInstance(this);

4. 记录事件

Bundle bundle = new Bundle();
bundle.putString(FirebaseAnalytics.Param.ITEM_ID, id);
bundle.putString(FirebaseAnalytics.Param.ITEM_NAME, name);
bundle.putString(FirebaseAnalytics.Param.CONTENT_TYPE, "image");
mFirebaseAnalytics.logEvent(FirebaseAnalytics.Event.SELECT_CONTENT, bundle);

5. 确认事件 (在IDE控制台实时查看添加的统计事件)

您可以启用详细日志记录功能以监控 SDK 的事件记录,从而帮助验证是否正确记录了事件,包括自动和手动记录的事件。

您可以通过一系列 adb 命令启用详细日志记录功能:

adb shell setprop log.tag.FA VERBOSE
adb shell setprop log.tag.FA-SVC VERBOSE
adb logcat -v time -s FA FA-SVC

此命令可在 Android Studio logcat 中显示您的事件,帮助您立即验证所发送的事件

类似这样

类似于这样

实时查看事件 (在google控制台实时查看件)

使用 DebugView 验证您的 Google Analytics(分析)配置

为了节省网络数据流量和延长移动设备的电池续航时间,Analytics(分析)部署会定期轮询使用情况数据(通常每小时一次)。不过在开发过程中,最好可以无需等待就能实时查看事件,以便根据需要进行调整。借助 DebugView,您就可以实时监控应用的事件。

1. 启用调试模式

adb shell setprop debug.firebase.analytics.app <软件包名称>

“调试”模式将保持启用状态,直至您通过执行以下这行命令明确停用“调试”模式:

adb shell setprop debug.firebase.analytics.app .none.

注意:在使用 DebugView 之前,应确保设备时间准确无误。设备时钟若有偏差,则会导致 Analytics(分析)报告中出现事件延迟或缺失。

2. 去DebugView查看

在开发设备上启用“调试”模式之后,转到 DebugView,然后开始使用应用,就可以看到应用的事件被记录到 DebugView 报告中。

跟踪屏幕浏览量

Analytics 会自动跟踪有关应用中的屏幕的一些信息,例如当前处于焦点位置的 UIViewController 或 Activity 的类名。当屏幕转换时,Analytics 会记录一个用于标识新屏幕的 screen_view 事件。

不过自动跟踪的屏幕名在Android端都是抓取Activity的类名,例如MainActivity,这对于运营或任何想要查看统计信息的人来说,都相当不友好,所以我们需要手动跟踪屏幕

手动跟踪屏幕

您可以手动设置屏幕名称,并选择在屏幕转换时覆盖类名。设置屏幕名称之后,在这些屏幕上发生的事件将额外使用参数 firebase_screen 进行标记。例如,您可以将一个屏幕命名为“主菜单”或“好友列表”。以下示例介绍如何手动设置屏幕名称。

mFirebaseAnalytics.setCurrentScreen(this, screenName, null /* class override */);

屏幕名称和屏幕类保持不变,直到 Activity 发生变化或您对 setCurrentScreen() 执行新的调用为止。

  • 以上是官方文档的建议,他们并没有提到需要Activity创建完毕才可以设置成功,所以我们将设置代码放到了onCreate()方法中,结果无论如何都没法在控制台看到我们自定义的屏幕名。
  • 后来搜索FirebaseAnalytics setCurrentScreen无效时,这篇文章提到一个错误,虽然跟我后来发现的错误不一样,但是通过过滤 setCurrentScreen 这个错误名,发现自己的代码爆出Warm级别错误
setCurrentScreen cannot be called while no activity active
  • 因此将手动跟踪代码放到Activity创建完成后,问题解决, 比如onWindowFocusChanged方法, 或者onResume, 或者做一下延时等

关于跟踪Fragment

参考链接

  • 自动跟踪屏幕不会统计Fragment,但是App中,很多都是一个主MainActivity,带几个Fragment切换,包括其他页面,也会有类似结构。
  • 如果需要统计Fragment的情况,则需要使用手动跟踪的方式,带入Fragment的屏幕名。
mFirebaseAnalytics.setCurrentScreen(this, fragment.getClass().getSimpleName(), fragment.getClass().getSimpleName());

调用方法后,LogCat中将显示以下消息

记录事件(FE):screen_view(_vs),捆绑包[{firebase_event_Origin(_o)= auto,firebase_previous_class(_pc)= HomeFragment,firebase_previous_id(_pi)= 4121566113087629222,firebase_previous_screen(_pn)= HomeFragment,firebase_screen_classs__sc (_si)= 4121566113087629223,firebase_screen(_sn)= StatisticsFragment}]

  • 不过该方法有待验证,预计下个版本将验证