android - 谷歌标签管理器,安卓。事件仅在应用程序启动时发送

标签 android google-tag-manager

我需要在我的应用程序中实现 GTM。我是这样做的doc和分析工作,但并不像我预期的那样。当我启动应用程序时,我之前推送到数据层的所有事件都会发送到分析,但并非每次我将一些数据推送到数据层时。看起来我正在启动应用程序,它向分析发送了一个事件,然后除了在数据层中收集数据之外什么也没有发生。当我再次启动应用程序时,每个收集到的数据都会发送到分析,然后再次将数据收集到数据层中。

在我的应用程序类中,我正在打开容器

mTagManager.openContainer(mContainerId, new Callback() {

@Override
public void containerRefreshSuccess(Container container, RefreshType refreshType) {

}

@Override
public void containerRefreshFailure(
        Container container,
        RefreshType refreshType,
        RefreshFailure refreshFailure) {
}

@Override
public void containerRefreshBegin(Container container, RefreshType refreshType) {

}
});

在我的 Activity 中,我将数据推送到数据层

TagManagager.getInstance(context).getDataLayer().push(map);

如果查看 logcat,我会看到以下消息:
这是启动后的

02-27 18:35:55.468: V/TAG_MANAGER(14342): Sending hit to store  PATH: https:  PARAMS: ul=ru-ru,  cd3=,  cd4=,  cd1=,  ht=1393518945465,  sr=1920x1032,  cd2=,  aid=my.app,  cid=7087b6ed-b8e2-48b0-9979-c13399e119ff,  av=1,  v=1,  t=appview,  an=my.app,  tid=UA-203518-14,  _u=.4KnL,  cd=Main,  
02-27 18:35:55.515: V/TAG_MANAGER(14342): Dispatch running...
02-27 18:35:55.890: V/TAG_MANAGER(14342): sent 4 of 4 hits

这是将数据推送到数据层之后的

02-27 18:40:59.679: V/TAG_MANAGER(14342): putHit called
02-27 18:40:59.679: V/TAG_MANAGER(14342): Sending hit to store  PATH: https:  PARAMS: ul=ru-ru,  cd3=some text,  cd4=,  cd1=80025,  ht=1393519259690,  sr=1920x1032,  cd2=,  aid=my.app,  cid=7087b6ed-b8e2-48b0-9979-c13399e119ff,  av=1,  v=1,  t=appview,  an=my.app,  tid=UA-203518-14,  _u=.67rs3333KnL,  cd=Portal,  

我什至查看了 Google 的示例,但他们的应用程序 CuteAnimals 具有相同的行为。
我每次向dataLayer推送数据时如何发送数据?

最佳答案

点击的发送是由定时器完成的。默认情况下为 30 分钟。所以我从来没有等过这么长时间。

要更改时间,您可以调用

// Set the dispatch period in seconds.
GAServiceManager.getInstance().setLocalDispatchPeriod(15);

要在推送 dataLayer 后立即发送命中,您可以调用

GAServiceManager.getInstance().dispatchLocalHits();

这是我的实现:

public void pushDataLayer(Map<Object, Object> update) {
    mTagManager.getDataLayer().push(update);

    //in production we can use default logic with timer
    GAServiceManager.getInstance().dispatchLocalHits();

    // clear dataLayer
    Map<Object, Object> empty = new HashMap<Object, Object>();
    for (Map.Entry<Object, Object> values : update.entrySet()) {
        empty.put(values.getKey(), DataLayer.OBJECT_NOT_PRESENT);
    }
    mTagManager.getDataLayer().push(empty);
}

了解更多信息:
https://developers.google.com/analytics/devguides/collection/android/v3/dispatch

关于android - 谷歌标签管理器,安卓。事件仅在应用程序启动时发送,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22074947/

相关文章:

android - 如何实现google+ ListView 动画

android - startSupportActionMode() 抛出 NullPointerException

android - tablayout 中的选项卡不显示选项卡图标

javascript - 基于跟踪代码管理器事件的动态 Google Analytics 事件

reactjs - 如何跟踪 React 上的页面浏览量

android - 不支持 loadContainerPreferNonDefault JSONArray 的 Google 跟踪代码管理器错误

java - Eclipse 中的奇怪行为

android - 如何将YouTube播放列表粘贴到ListView-Android?

javascript - 当 Google Analytics 由 Google Tag Manager 管理时,如何跟踪自定义事件?

javascript - Google 跟踪代码管理器脚本会降低页面性能