在Android应用中添加Firebase Analytics和Google Analytics

9
我已经实现了Firebase Analytics,它正常工作。我希望还能使用Google Analytics。根据这里的讨论,我在google-services.json中添加了以下对象。
"analytics_service": {
      "status": 2,
      "analytics_property": {
        "tracking_id": "<your tracking id>"
      }
    },

对于Google Analytics,我有Tracker类。

public class PuzzleGamesTracker extends Application {

// The following line should be changed to include the correct property id.
private static final String PROPERTY_ID = "<your tracking id>";

private Tracker mTracker;


@Override
protected void attachBaseContext(Context base) {
    super.attachBaseContext(base);
    MultiDex.install(this);
}

/**
 * Gets the default {@link Tracker} for this {@link 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
        mTracker = analytics.newTracker(R.xml.global_tracker);
    }
    return mTracker;
}

使用方法

public void sendToGoogleAnalytics(String arg) {
    // TODO Auto-generated method stub
    sendToFireBase();
    PuzzleGamesTracker application = (PuzzleGamesTracker) getApplication();
    Tracker mTracker = application.getDefaultTracker();

    mTracker.setScreenName(arg);
    mTracker.send(new HitBuilders.AppViewBuilder().build());

}

public void sendToFireBase( ) {
    Bundle bundle = new Bundle();
    bundle.putString(FirebaseAnalytics.Param.ITEM_ID, "Test_Item 1A");
    bundle.putString(FirebaseAnalytics.Param.ITEM_NAME, "Test_Name 1A");
    bundle.putString(FirebaseAnalytics.Param.CONTENT_TYPE, "Test_Image 1");
    mFirebaseAnalytics.logEvent(FirebaseAnalytics.Event.SELECT_CONTENT, bundle);

    bundle.putString(FirebaseAnalytics.Param.ITEM_ID, "Test_Item B");
    bundle.putString(FirebaseAnalytics.Param.ITEM_NAME, "Test_Name B");
    bundle.putString(FirebaseAnalytics.Param.CONTENT_TYPE, "Test_Image 1");
    mFirebaseAnalytics.logEvent(FirebaseAnalytics.Event.SELECT_CONTENT, bundle);

    bundle.putString(FirebaseAnalytics.Param.ITEM_ID, "Test_Item 2A");
    bundle.putString(FirebaseAnalytics.Param.ITEM_NAME, "Test_Name 2A");
    bundle.putString(FirebaseAnalytics.Param.CONTENT_TYPE, "Test_Image 2");
    mFirebaseAnalytics.logEvent(FirebaseAnalytics.Event.SELECT_CONTENT, bundle);

}

错误场景

如果我在google-services.json文件中没有包含以下Google Analytics对象,则Firebase将正常工作。

"analytics_service": {
  "status": 2,
  "analytics_property": {
    "tracking_id": "<your tracking id>"
  }
},

当我在google-services.json中包含谷歌分析对象时,我会收到以下错误:
Error:Execution failed for task ':android:mergeReleaseResources'.
> [xml/global_tracker] C:\Users\android\build\generated\res\google-   services\release\xml\global_tracker.xml   [xml/global_tracker] C:\Users\android\res\xml\global_tracker.xml: Error: Duplicate resources

问题 1. 我需要删除 ecommerce_tracker.xml 和 global_tracker.xml 吗?已经有 PuzzleGamesTracker 类在使用它了。如何解决? 2. 请指导我如何同时成功实现 FA 和 GA 的实现。


1
为什么你要实现两个相同的东西? - johnrao07
它们并不是同一件事。我不是楼主,但我有同样的问题。我的一个客户要求我在应用中添加 Firebase 分析,而他们已经使用了 Google Analytics。他们有自己的业务原因,这两个产品应该能够并存,毕竟它们都是谷歌的产品。 - breakline
2个回答

8

最终,我找到了同时添加GA和FA的答案

步骤1. 移除xml文件R.xml.global_tracker

步骤2. 用 mTracker = analytics.newTracker(PROPERTY_ID) 替换 mTracker = analytics.newTracker(R.xml.global_tracker);

步骤3. 在json文件中添加以下内容 "analytics_service": { "status": 2, "analytics_property": { "tracking_id": "" } },


谷歌服务的json文件中的应用ID怎么样?我可以问一下你是如何创建Firebase项目的吗?我在其他SO问题的答案中读到了关于这个的解答。https://dev59.com/uVoU5IYBdhLWcg3wg3Oo#39323887 这需要您导入GA APP而不是创建新应用程序。这是您的情况吗? - chubao
您需要一个Google Analytics ID,这是与Firebase项目ID不同的ID。在Analytics网站上创建一个新项目以获取“UA-XXXXXXXX-XX” ID。 - Pelanes

0

看起来很酷,但是关于应用程序ID呢?我们不需要在Google和Firebase Analytics上跟踪事件的应用程序ID吗?


这应该是一个答案还是一个评论? - hering
这应该是一条注释,但我还没有权限在别人的帖子上写注释! - uday kiran

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