Firebase平台埋点接入

一、Firebase埋点统计平台能力介绍

Google Analytics(分析)for Firebase俗称GA是一款免费的应用效果衡量解决方案,可提供关于应用的使用情况和用户互动度的数据分析。SDK 会自动收集大量事件和用户属性,您也可以定义自定义事件,以便衡量对您的业务有特殊影响的因素。收集到数据后,可通过 Firebase 控制台到信息中心中查看。

Firebase Analytics官方链接

二、Firebase Analytics 四要素

使用 Firebase Analytics 时的四个要素分别是 Event 事件、Conversion 转化、User Property 用户属性、Audience 受众群体。

2.1 Event 事件

用户在应用中进行的点击、浏览等操作即为「事件」,这是最基本、最重要的要素。

2.2 Conversion 转化

如果某个事件对你的业务来说十分重要,例如用户注册、付费等关键业绩指标(KPI),你可以将这个事件标记为「转化」。当事件被标记为转化后,系统即开始收集与该事件相关的用户行为及相关数据。

2.3 User Property 用户属性

即用户的身份特征或所使用设备的特征,如年龄、兴趣爱好、所在地区、语言、操作系统版本等。用户属性也是比较基础的数据,在后期进行数据分析或者查找问题的过程中,用户属性可以作为筛选条件帮助你分析用户。

2.4 Audience 受众

此要素无需单独添加代码获取,而是在控制台中通过「Event 事件」与「User Property 用户属性」组合后筛选出的细分用户群体。例如可以条件筛选获得几个对照组,在这几个对照组中分析数据得出结论。

二、Firebase埋点SDK接入

2.1 在Firebase平台创建项目

2.2 下载google-services.json文件到项目App目录下

2.3 通过Firebase Android BoM方式添加Analytics引用

implementation(platform("com.google.firebase:firebase-bom:33.1.1"))

// When using the BoM, you don't specify versions in Firebase library dependencies
implementation("com.google.firebase:firebase-analytics-ktx")

2.4 Android 获取firebaseInstanceId 值

需要将这个值传递给后端(后端埋点需要这个值)

firebaseAnalytics.appInstanceId.addOnCompleteListener {
    var instanceId: String = it.result.toString()
}

2.5 Android 客户端埋点上报

fun Context?.firebaseTrack(event: String?, params: Map<String?, Any?>? = null) {
    this ?: return
    if (event.isNullOrEmpty()) {
        return
    }
    FirebaseAnalytics.getInstance(this).logEvent(event, Bundle().apply {
        //putString("参数名","参数值")
        params?.forEach {
            if (it.key.orEmpty().isNotEmpty()) {
                putString(it.key.orEmpty(), it.value.toString().orEmpty())
            }
        }
    })
}

2.6 确定Firebase Analytics集成成功

我们可以看项目的google_app_id是否正确生成了。


2.7 查看实时上报数据

这样就埋点成功了,打点不是实时的,意味着你点击了按钮不能马上在Firebase控制台看到数据。而是在后24小时左右才能看到数据。

  1. 控制台日志

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

adb shell setprop log.tag.FA VERBOSE
adb shell setprop log.tag.FA-SVC VERBOSE
adb logcat -v time -s FA FA-SVC
  1. debugView看日志

如果在开发时想要看到实时的打点数据,可以使用DebugView,在Firebase控制台的这个位置:


使用DebugView需要在设备上启动调试模式

要在手机上启用 Analytics(分析)“调试”模式,请执行以下命令行:<package_name>填入app的包名。点击对应的事件可以看到参数列表。

adb shell setprop debug.firebase.analytics.app <package_name>

停用调试模式: (如果debugView模式进不去,可以尝试关闭再打开)

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

打开一个新设备DebugView模式的较稳定方法:

  1. 设备连上电脑
  2. adb命令开启应用,关闭应用,再开启应用
  3. 进入应用
  4. 刷新平台网页
  5. 等待响应识别到设备,等待点位上报

2.8 打印屏幕属性

Screen_view 屏幕浏览

如果你需要追踪用户在应用内的行为流、用户在不同界面的停留时长、事件数量等等,你可以根据需求对 screen_class 重新命名,然后在控制台中按照 screen_name 方式查看即可。

这样就将屏幕上报设置成功了,屏幕上报也不是实时的,24小时之内可以看到打点结果。一般的做法是将埋点打在当前页面的onResume(可见)中。

public static void logScreenView(Activity activity, Class cls) {
    sFbAnalytics.setCurrentScreen(activity, cls.getSimpleName(), "onClick");
}

2.9 服务端Firebase Analytics埋点

准备工作

1.在firebase后台获取Android应用ID
2.在firebase后台获取api_secret
3.Android需要把app_instance_id参数设置到请求的公共参数里, 后端可以在注册或者登录接口里进行保存或更新

后端需要以Firebase Api方式传递数据给Firebase,根据上述信息我们得到后端上报埋点的请求URL为:

https://www.google-analytics.com/mp/collect?firebase_app_id=android应用ID&api_secret=android api_secret

三、Firebase平台埋点统计维度

3.1 Firebase自动收集的事件

自动收集的事件会在用户与您的应用和/或网站进行基本互动时触发。数据看板的基础数据来源于自动触发的点位。

详情见:https://support.google.com/analytics/answer/9234069?hl=zh-Hans#

3.2 统计维度看板

图1: 前1天、7天、30天累计用户
图2:实时数据:过去每30分钟活跃用户,活跃用户所属国家
图3:各版本每天活跃用户

图1:应用最新发布版本及状态
图2:应用崩溃率数据
图3:所选时间段活跃用户平均互动时长

图1:第N日用户留存率
图2:第N周用户留存率


图1:埋点页面的浏览次数
图2:事件上报次数
图3:关键事件上报次数


图1:活跃用户所在地区排序
图2:活跃用户设备型号排序

3.3 实时数据(Realtime Analytics)看板

可统计到30分钟内实时数据,数据每分钟自动刷新,如下图:

3.4 对单个指标数据变化跟踪

四、Firebase埋点接入封装

4.1 analytics SDK封装

公共参数设置:

fun commonParams(): ReportParams {
    val params = ReportParams()

    val pkgInfo = packageManager.getPackageInfo(
        packageName,
        PackageManager.GET_ACTIVITIES
    )
    val versionCode = pkgInfo.versionCode.toString()
    params.add(COMMON_PACKAGE, pkgInfo.packageName) //包名
    params.add(COMMON_VERSION, versionCode) //应用版本
    params.add(COMMON_OS_VERSION, VERSION.RELEASE) //系统版本
    params.add(COMMON_REGION, "") //区域
    params.add(COMMON_TIMESTAMP, System.currentTimeMillis()) //时间戳
    return params
}

用户属性设置:

新建用户属性


添加用户属性值上报

public static void addOrUpdateUserProperty(Context context) {
    mFbAnalytics.setUserProperty("region", "");
    mFbAnalytics.setUserProperty("age", "");
    mFbAnalytics.setUserProperty("gender", "");
    mFbAnalytics.setUserProperty("user_type", ""); //用户类型维度:例如新用户/老用户 免费用户/付费用户
    mFbAnalytics.setUserProperty("source", ""); //来源:注册渠道
}

数据上报:

上报数据之前验证key/value的合法性,避免上报错误和上报无效数据。

private static void report(String eventName, Map<String, Object> params) {
    Bundle bundle = new Bundle();

    //去除event中的特殊字符
    try {
        Pattern p = Pattern.compile("\\s*|\t|\r|\n");
        Matcher m = p.matcher(eventName);
        eventName = m.replaceAll("").replaceAll("&", "_");

        if (params != null && !params.isEmpty()) {
            Iterator iterator = params.keySet().iterator();

            while (iterator.hasNext()) {
                String key = (String) iterator.next();
                if (!TextUtils.isEmpty(key)) {
                    Object value = params.get(key);
                    putValue2Bundle(bundle, key, value);
                }
            }
        }
        sFbAnalytics.logEvent(eventName, bundle);
        XPodLogger.d(FIREBASE, "logEvent by firebase: event[" + eventName + "] params[" + bundle + "]");
    } catch (Exception ignored) {

    }
}

5.1 创建自定义维度

数据维度名称、选择范围为事件,添加事件参数,以这一事件属性作为匹配维度。
或者选择范围为用户,添加用户参数,以这一用户属性作为匹配维度。


5.2 设置匹配过滤

在Analytics Dshboard中,添加比较对象,创建比较对象,选择上一步的自定义维度,完全匹配或者包含维度值,进行属性值过滤。若保存该维度,可长期作为数据过滤。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容