【问题标题】:Firebase Google Analytics with custom FirebaseOptions initilaize methodFirebase Google Analytics 与自定义 FirebaseOptions 初始化方法
【发布时间】:2020-01-02 08:33:12
【问题描述】:

我必须为我的 android 应用程序添加简单的 Firebase Google Analytics。

我需要在运行时选择我的应用的 Firebase 项目。

“这非常罕见,但有时应用必须能够在运行时选择其 Firebase 项目。这意味着您的应用无法使用合并到您的应用中的 FirebaseInitProvider 提供的自动初始化。在这种情况下,解决方案有两个任务。”

参考链接:https://firebase.googleblog.com/2017/03/take-control-of-your-firebase-init-on.html

所以,就我而言,我做了如下:

  1. 创建了一个应用程序类:

    public class MyApplicationClass extends Application {
        @Override
        public void onCreate() {
            super.onCreate();
            FirebaseOptions.Builder builder = new FirebaseOptions.Builder().setApplicationId("1:5478125639014:android:054aa87g102b94aa5").setApiKey("ABcdXyzpQrst_8tlItnC5rcbgxkK_PqrstGWsTKo");
            FirebaseApp.initializeApp(this, builder.build());
        }
    
  2. 添加了所需的清单 Internet 权限。

  3. 添加依赖:

    实施 'com.google.firebase:firebase-analytics:17.1.0'

问题是我在那里看不到任何分析数据,并且应用程序在 Google Analytic 的最后一步中没有连接。

那里可能有什么问题或有什么悬而未决的事情?

【问题讨论】:

  • 您是否将google-services.json 文件添加到您的项目中?如果是,请查看 Logcat。你会发现一些关于 firebase 问题的日志。
  • @Jaymin 对于手动操作,我们不需要添加 google-services.json 文件。我们可以使用 FirebaseOptions 手动完成,如下所述:firebase.googleblog.com/2017/03/… 请检查并尝试理解。注意:我可以使用 google-services.json 文件和插件以正常方式进行分析。
  • @JaiminModi 我正在使用多种口味,我可以为每种口味使用不同的 api 密钥吗?

标签: android firebase google-analytics firebase-analytics


【解决方案1】:

我知道这不是您所期望的答案,但可悲的现实是您无法动态初始化 Firebase Analytics

在官方 Firebase 存储库中,您可以看到问题 https://github.com/firebase/quickstart-android/issues/769,官方回答是“目前正在按预期工作,Analytics SDK 不允许在运行时配置 App ID”。我不相信它从那以后改变了。

我知道这些帖子在这种情况下可能听起来令人困惑: https://firebase.googleblog.com/2017/03/take-control-of-your-firebase-init-on.html https://firebase.google.com/docs/projects/multiprojects

但预期的用例是具有不同的FirebaseApp 配置(例如,针对不同的数据库)和不同的FirebaseAnalytics 配置。 Firebase Analytics 只是 Firebase 旗下众多产品之一。

因此您不需要使用 gradle 插件,但您仍然需要拥有名为 google_app_id 的字符串资源,其中包含您的 Firebase 应用 ID,并且仅用于配置 FirebaseAnalytics。

这并不意味着 FirebaseAnalytics 的动态初始化根本无法完成,但它需要逆向工程、hacky 解决方案并且会很脆弱 - 简而言之,这可能不是一个好主意。

我不确定您的用例是什么,但如果您只想延迟 Firebase Analytics 初始化,您可以考虑在开始时禁用它:https://firebase.google.com/docs/analytics/configure-data-collection?platform=android

【讨论】:

  • 但是,同样的事情在 IOS 中工作..!!!那么,为什么Android会有问题......!!!我的合作伙伴可以简单地在单个应用程序中初始化任意数量的 firebase 项目,并使用与我在上述问题中解释的相同方式。
  • 您好先生,您能解释一下您的观点吗:“您仍然需要包含您的 Firebase 应用程序 ID 的名为 google_app_id 的字符串资源”?感谢您的努力。
  • 如果你不想使用插件,那么你必须手动做一些事情,这通常是由插件完成的。其中之一是将google_app_id 添加为字符串资源。因此,您可以通过将google_app_id 添加到您的strings.xml 来手动执行此操作。 google_app_id 是您的 Firebase 应用 ID,例如“1:4578412596352:android:b47d85se5v2z1a2b”。我希望现在很清楚:)
【解决方案2】:

根据此处解释的要点:Unable to make Firebase work for a non Gradle build: Missing google_app_id. Firebase Analytics disabled(不同的问题)

Google Analytics for Firebase (GA4F) 不支持动态 初始化。我们的工程师正在检查可能的解决方案 支持这个。只是我们还没有找到一个确定的 关于何时(或是否)可用的时间表。

如果没有 google-services.json 文件(或您的 Gradle),GA4F 将无法工作。即使您可以初始化 FirebaseApp 动态通过代码,GA4F 将无法识别这一点,只会 导致您看到的错误消息。你所处的场景 获取仅特定于 Google Analytics for Firebase。然而, 您仍然可以使用其他产品,例如 Firestore、实时数据库、 即使您没有使用 Gradle 插件也可以存储。

最后,按以下方式完成:

我需要做什么:

  1. 来自一个 Google 帐户,通知应该可以工作。

  2. 必须使用 单独的(另一个) Google 帐户来进行 Google Analytics(分析)。 (阅读问题。你会得到想法。)

我做了什么:

  1. 使用 FirebaseOptions 的集成推送通知任务,将其视为辅助应用程序,如下所示:

FirebaseOptions options = new FirebaseOptions.Builder().setApplicationId("1:4578412596352:b47d85se5v2z1a2b").setApiKey("AI4f896IG11gFh5R452FdiYau27sdA7IQ85EdY1").setProjectId("mycuteapp-57490").setGcmSenderId(" ; FirebaseApp.initializeApp(getApplicationContext(), options,"pushNotifications");

  1. 对于 Google Analytics,以常用方式完成,即使用 google-services.json 文件。

简而言之,目前来自此官方链接的指导不适用于 Google Analyticshttps://firebase.googleblog.com/2017/03/take-control-of-your-firebase-init-on.html

【讨论】:

  • 避免在 stackoverflow 问题和答案中分享您的个人项目信息,例如 API 密钥。
  • @pRaNaY 谢谢先生,我已经通过用随机值更改它来发布。莫迪来了:)
  • 很高兴知道它是随机值。我不是先生。
猜你喜欢
  • 2018-01-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-19
相关资源
最近更新 更多