我需要在我的应用程序中实现 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/