【问题标题】:Google Analytics Tracker file in Android library moduleAndroid 库模块中的 Google Analytics Tracker 文件
【发布时间】:2016-02-13 09:38:45
【问题描述】:

我正在尝试将我的 Google Analytics(分析)代码从我的主应用程序(com.xyz 包)拆分为一个单独的模块(com.abc 包)。我正面临这些问题:

  1. 我应该为应用模块或库模块生成跟踪器吗?
  2. 我应该把这个跟踪器 - 应用程序或库模块放在哪里?
  3. 我的目标是通过一些接口在库模块中拥有所有 Analytics 创建和处理逻辑。我也想将这个库用于我的其他项目;所以我不想将跟踪文件放在库模块本身中。有没有办法可以在库模块中初始化跟踪器,但将 XML 文件保留在 app 模块中?

我尝试过(但失败了):

  1. 我已经为 com.abc 和 com.xyz 生成了跟踪文件
  2. 我已经尝试了两个模块中两个文件的所有排列;但库模块无法解析 R.xml.global_tracker。作为 Google Analytics 的新手,我不知道是否必须复制/粘贴任何跟踪器文件。在我做库模块之前,R.xml.global_tracker是在主模块中自动解析的。

【问题讨论】:

  • 我也对这个问题的答案非常感兴趣。你有没有想出任何解决方案?
  • 也对有多个目标的 iOS 应用程序的类似设置感兴趣 - 每个目标使用不同的捆绑 ID(因此需要不同的 google-services plist...?)
  • 您不再需要制作 R.xml.global_tracker。这非常容易将 GA 安装到您的项目中。 developers.google.com/analytics/devguides/collection/android/v4/… 跟着这个就行了。

标签: android google-analytics


【解决方案1】:

不要使用 R.xml.global_tracker。您可以在 Application 类中使用此代码。

/**
 * @return tracker
 */
synchronized public Tracker getDefaultTracker() {
    if (mTracker == null) {
        GoogleAnalytics analytics = GoogleAnalytics.getInstance(this);

      // To enable debug logging use: adb shell setprop log.tag.GAv4 DEBUG
        analytics.setLocalDispatchPeriod(1800);
        mTracker = analytics.newTracker("Tracker code");
        analytics.setLocalDispatchPeriod(1);
        mTracker.enableExceptionReporting(true);
        mTracker.enableAdvertisingIdCollection(true);
        mTracker.enableAutoActivityTracking(false);
    }
    return mTracker;
}

并像这样在活动/片段中使用它:

    MyApplication application = (MyApplication ) context.getApplication();
    Tracker mTracker = application.getDefaultTracker();
    mTracker.setScreenName(name);
    mTracker.send(new HitBuilders.ScreenViewBuilder().build());

这可能会解决您的问题,但尚未针对您的情况进行测试。

【讨论】:

    【解决方案2】:

    在使用 2 个模块(主应用程序模块和库模块)对项目实施 Google Analytics 时,我遇到了类似的问题。有一个通过 Java Reflection 的解决方案如何在库模块中获取 GA 跟踪器。

    1. 为您的主应用模块生成跟踪器。
    2. Google GA Guide 之后将跟踪器添加到您的主应用程序中。
    3. 将 Google Play 服务的依赖项添加到您的库项目中:compile 'com.google.android.gms:play-services-analytics:9.0.0' 这是在库模块中使用分析类所必需的。

    最后,您将在主应用模块中进行 GA 配置。您可以按照指南中的说明使用它:

    // Obtain the shared Tracker instance in main module
    AnalyticsApplication application = (AnalyticsApplication) getApplication();
    mTracker = application.getDefaultTracker();
    

    对于从自定义应用程序类获取跟踪器的库模块,您可以使用反射:

    public Tracker getGATracker(Application application) {
        Tracker tracker = null;
        try {
            Method m = application.getClass().getMethod("getDefaultTracker", (Class<?>[]) null);
            Object result = null;
            if (m != null) {
                result = m.invoke(application, (Object[]) null);
                if (result != null) {
                    tracker = (Tracker) result;
                }
            }
        } catch (Exception e) {
            Log.w(TAG, "Can't get GA tracker: ", e);
        }
    
        return tracker;
    }
    

    将上面的方法与这个 sn-p 一起使用:

    // Obtain the shared Tracker instance from main module
    Tracker tracker = getGATracker(getApplication());
    

    因此您可以在库模块中使用 GA 跟踪器并在主模块中进行配置。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多