禁用 Firebase Cloud Messaging 的分析服务

12

我们从GCM迁移到FCM时没有遇到任何问题。通知服务运行得很好。然而,由于法律原因,我们必须禁用Firebase Analytics服务的应用程序测量部分。

我们使用了这个指南来禁用分析部分https://firebase.google.com/support/guides/disable-analytics

因此,我们将此标志放入清单文件中:

<meta-data android:name="firebase_analytics_collection_enabled" android:value=false />

我们还通过编程方式禁用了收集功能:

FirebaseAnalytics.getInstance(this).setAnalyticsCollectionEnabled(false);

很不幸,数据仍在收集,我们可以在 Firebase Analytics 控制台中看到新的事件。有没有完全关闭分析服务的可能性?

感谢您的帮助。

编辑:我还在应用程序标记中拥有停用元数据:

<meta-data android:name="firebase_analytics_collection_deactivated" android:value=true />

1
你试过这个吗? <meta-data android:name="firebase_analytics_collection_deactivated" android:value=true /> - lal
1
你们只有 Android 应用吗?如果是这样,你们是否尝试了 @lal 提到的方法?如果你已经尝试了文档中提到的所有方法,我建议你直接联系 Firebase 支持团队。他们在为开发者提供支持方面非常出色。 - AL.
是的 - 抱歉,我忘了提到 - 我在应用程序标签<meta-data android:name="firebase_analytics_collection_deactivated" android:value="true"/>中有这个。 - goon
我写了Firebase支持团队。感谢@AL.提供的建议。 - goon
2
没关系。如果他们给你提供了一个解决方案,而且这不是那么敏感的信息,请在这里发布你的答案并接受它。这可能会帮助某个随机用户的。 :) - AL.
5个回答

9
截至2017年10月,停用的值必须为“true”。 “false”将不再起作用。
<meta-data
        android:name="firebase_analytics_collection_deactivated"
        android:value="true" />

日志正确显示它正在工作。
10-11 16:29:32.755 27857-27857/? I/FA: Collection disabled with firebase_analytics_collection_deactivated=1

问题在于这并没有完全关闭应用程序测量。日志可能会显示“由于禁用了应用程序测量而未发送事件”,但是根据我的软件防火墙,AppMeasurementService仍在运行并连接到app-measurement.com。如果添加覆盖以完全从清单中删除AppMeasurementService,则日志将显示此错误“E / FA:无法使用远程或本地测量实现。请在应用程序清单中注册AppMeasurementService”。 - jk7
只有那些没有安装 Google Play 服务(Google APIs)的设备才会连接到 app-measurement.com。 - jk7

6
这可能是Firebase的一个bug,或者是在禁用分析收集的文档中存在错误。要永久禁用收集,请将firebase_analytics_collection_deactivated设置为false(而不是true):
    <meta-data
        android:name="firebase_analytics_collection_deactivated"
        android:value="false" />

如果开启分析日志,您可以确认收集已被禁用:

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

并观察输出,例如这样:

I/FA: Collection disabled with firebase_analytics_collection_deactivated=1
D/FA: Event not sent since app measurement is disabled

没错。请查看 Firebase 团队的答案。 - goon

4
为了彻底禁用Firebase Messaging的分析功能,您需要在gradle中排除分析软件包:
implementation('com.google.firebase:firebase-messaging:18.0.0') {
    exclude group: 'com.google.firebase', module: 'firebase-core'
    exclude group: 'com.google.firebase', module: 'firebase-analytics'
    exclude group: 'com.google.firebase', module: 'firebase-measurement-connector'
}

同时,在 AndroidManifest 文件中停用跟踪:
<meta-data android:name="firebase_analytics_collection_deactivated" android:value="true" />
    <meta-data android:name="google_analytics_adid_collection_enabled" android:value="false" />
    <meta-data android:name="firebase_messaging_auto_init_enabled" android:value="false" />

如果您正在使用proguard,则还需要将此行添加到配置文件中。
-dontwarn com.google.firebase.analytics.connector.AnalyticsConnector

我希望这能帮助那些不想在应用程序中包含任何形式跟踪但仍想使用Firebase Cloud Messaging的人。


1
这看起来非常有趣,甚至可能用于 APK 大小节省。请问这个文档在哪里记录?文档只提到了元数据标志。 - CaptainCrunch
这段代码来自私人信使应用程序Signal: https://github.com/signalapp/Signal-Android/blob/master/app/build.gradle https://github.com/signalapp/Signal-Android/blob/master/app/src/main/AndroidManifest.xml https://github.com/signalapp/Signal-Android/blob/master/app/proguard/proguard-firebase-messaging.pro - XMB5

2

刚刚收到Firebase支持团队的反馈。

如果您在android:value属性中没有添加双引号,那么清单文件的代码将无法编译。如果您已经添加了双引号,则做得很好。

暂时禁用分析收集应该可以解决问题,请尝试启用详细调试选项并检查日志。

另一方面,我们知道关闭分析收集永久存在问题,我们的工程师已经为此提交了错误报告,并进行了适当的优先排序。请随时关注我们的发布说明,以获取有关此问题的进一步通知。

对于可能给您带来的任何不便,我们深表歉意,并感谢您的理解,同时我们会继续努力改进我们的服务。


2

我尝试将该行代码放入我的清单文件中,应用程序标签下方的第一行

 <application
    android:icon="@mipmap/ic_launcher"
    android:name="your.package.name">
    <meta-data android:name="firebase_analytics_collection_enabled" android:value="false" />

在这样做时,在初始化期间,Firebase会在日志中显示:

I/FA: 使用firebase_analytics_collection_enabled = 0禁用了集合

之后似乎没有向Firebase报告任何内容。


是的,我尝试过这个了,忘了提到 - 我将其放在应用程序标签中,但值在括号中:android:value="true" - goon
我有一个没有引号的true,这可能是区别所在。一个可能是字符串,而另一个则被解析为布尔值。 - Sistr
听起来很有前途 - 不幸的是,我无法编译,因为缺少引号:"期望属性值"。 - goon
好的,其实我有引用,但是当我复制粘贴时它们会不知道什么原因消失了,我的错。 在找到解决方案之前,我花了30分钟进行尝试和错误,让我更新答案。 - Sistr
如果有帮助,请告诉我 (^_^) - Sistr
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接