Google 当 运行 应用第一次没有可用网络时,跟踪代码管理器无法从默认容器文件中获取所有值
Google Tag Manager not able to fetch all the values from default container file when running app for first time with no network available
我在我的应用程序中集成了 Google 标签管理器并下载了最新版本的二进制文件并存储在 res->raw 文件夹中。我的 GTM 容器包含近 150 个键值对。问题是,当我 运行 第一次在没有可用网络的情况下使用该应用程序时,应用程序无法从默认容器中获取所有值 file.I 当我 运行 时看到许多缺失值或空白值] app.However 如果我连接到互联网,然后加载容器,然后在没有可用网络的情况下重新打开应用程序,那么它能够从默认容器文件中获取所有值。为什么会发生这种情况,我该如何解决?
TagManager tagManager = TagManager.getInstance(this);
PendingResult<ContainerHolder> pending =
tagManager.loadContainerPreferNonDefault(CONTAINER_ID,
R.raw.gtmxyz);
pending.setResultCallback(new ResultCallback<ContainerHolder>() {
@Override
public void onResult(@NonNull ContainerHolder containerHolder) {
ContainerHolderSingleton.setContainerHolder(containerHolder);
ContainerHolderSingleton.getContainerHolder().refresh();
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
startActivity(new Intent(SplashActivity.this,XYZ.class));
finish();
}
}, AppConstant.SPLASH_TIME_OUT);
}
});
您可以做一些事情来确保它有效:
确保默认容器(R.raw.gtmxyz 中的容器)是最新版本的容器。您可以从跟踪代码管理器的版本选项卡下载最新版本:
在您的 onResult 回调中,您应该在容器持有者上调用 getContainer。这使新加载的容器成为当前容器。
新加载的容器不需要调用刷新
确保在容器加载之前不会调用使用容器值的代码或 UI 元素。
我在我的应用程序中集成了 Google 标签管理器并下载了最新版本的二进制文件并存储在 res->raw 文件夹中。我的 GTM 容器包含近 150 个键值对。问题是,当我 运行 第一次在没有可用网络的情况下使用该应用程序时,应用程序无法从默认容器中获取所有值 file.I 当我 运行 时看到许多缺失值或空白值] app.However 如果我连接到互联网,然后加载容器,然后在没有可用网络的情况下重新打开应用程序,那么它能够从默认容器文件中获取所有值。为什么会发生这种情况,我该如何解决?
TagManager tagManager = TagManager.getInstance(this);
PendingResult<ContainerHolder> pending =
tagManager.loadContainerPreferNonDefault(CONTAINER_ID,
R.raw.gtmxyz);
pending.setResultCallback(new ResultCallback<ContainerHolder>() {
@Override
public void onResult(@NonNull ContainerHolder containerHolder) {
ContainerHolderSingleton.setContainerHolder(containerHolder);
ContainerHolderSingleton.getContainerHolder().refresh();
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
startActivity(new Intent(SplashActivity.this,XYZ.class));
finish();
}
}, AppConstant.SPLASH_TIME_OUT);
}
});
您可以做一些事情来确保它有效:
确保默认容器(R.raw.gtmxyz 中的容器)是最新版本的容器。您可以从跟踪代码管理器的版本选项卡下载最新版本:
在您的 onResult 回调中,您应该在容器持有者上调用 getContainer。这使新加载的容器成为当前容器。
新加载的容器不需要调用刷新
确保在容器加载之前不会调用使用容器值的代码或 UI 元素。