![](/img/trans.png)
[英]Android - Google tag Manager with Google Analytics and Firebase Analytics
[英]Google Tag Manager for Android NullPointerException
我正在嘗試通過Android的Google跟蹤代碼管理器設置通用分析代碼。 我有一個空白的活動(布局中沒有任何內容),如下所示:
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_verification);
// Start GTM code
try
{
TagManager tagManager = TagManager.getInstance(this);
tagManager.setVerboseLoggingEnabled(true);
PendingResult<ContainerHolder> pending = tagManager.loadContainerPreferNonDefault("GTM-XXXXXX", R.raw.default_gtm_container);
pending.setResultCallback(new ResultCallback<ContainerHolder>()
{
@Override
public void onResult(ContainerHolder containerHolder)
{
ContainerHolderSingleton.setContainerHolder(containerHolder);
if (!containerHolder.getStatus().isSuccess())
{
Log.e("GoogleTagManager", "failure loading container");
return;
}
ContainerHolderSingleton.setContainerHolder(containerHolder);
containerHolder.setContainerAvailableListener(new ContainerHolder.ContainerAvailableListener()
{
@Override
public void onContainerAvailable(ContainerHolder containerHolder, String containerVersion)
{
containerHolder.getContainer();
}
});
}
}, 2, TimeUnit.SECONDS);
} catch (Exception e)
{
e.printStackTrace();
}
// End GTM code
}
@Override
public void onStart()
{
super.onStart();
DataLayer dataLayer = TagManager.getInstance(this).getDataLayer();
dataLayer.pushEvent("openScreen", DataLayer.mapOf("screenName", "Verification"));
}
我要做的只是在此活動開始時啟動Universal Analytics代碼。 從日志輸出中可以看到:
04-23 06:49:56.745: D/dalvikvm(4334): Not late-enabling CheckJNI (already on)
04-23 06:49:56.855: V/GoogleTagManager(4334): Atttempting to load container from resource ID 2131034112
04-23 06:49:56.855: W/GoogleTagManager(4334): Resource is a UTF-8 encoded string but doesn't contain a JSON container
04-23 06:49:56.865: V/GoogleTagManager(4334): Deleted 0 expired items
04-23 06:49:56.875: V/GoogleTagManager(4334): Start loading resource from disk ...
04-23 06:49:56.875: W/dalvikvm(4334): threadid=13: thread exiting with uncaught exception (group=0xb2d4fb20)
04-23 06:49:56.885: W/GoogleTagManager(4334): GooglePlayServicesNotAvailableException getting Advertising Id Info
04-23 06:49:56.885: E/AndroidRuntime(4334): FATAL EXCEPTION: pool-2-thread-1
04-23 06:49:56.885: E/AndroidRuntime(4334): Process: com.outing.planner, PID: 4334
04-23 06:49:56.885: E/AndroidRuntime(4334): java.lang.NullPointerException
04-23 06:49:56.885: E/AndroidRuntime(4334): at com.google.android.gms.tagmanager.o$b.a(Unknown Source)
04-23 06:49:56.885: E/AndroidRuntime(4334): at com.google.android.gms.tagmanager.o$b.i(Unknown Source)
04-23 06:49:56.885: E/AndroidRuntime(4334): at com.google.android.gms.tagmanager.cq.jC(Unknown Source)
04-23 06:49:56.885: E/AndroidRuntime(4334): at com.google.android.gms.tagmanager.cq$1.run(Unknown Source)
04-23 06:49:56.885: E/AndroidRuntime(4334): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
04-23 06:49:56.885: E/AndroidRuntime(4334): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
04-23 06:49:56.885: E/AndroidRuntime(4334): at java.lang.Thread.run(Thread.java:841)
04-23 06:49:56.915: D/dalvikvm(4334): GC_FOR_ALLOC freed 239K, 9% free 2999K/3292K, paused 17ms, total 17ms
04-23 06:49:57.225: D/(4334): HostConnection::get() New Host Connection established 0xb8c8e590, tid 4334
04-23 06:49:57.245: W/EGL_emulation(4334): eglSurfaceAttrib not implemented
04-23 06:49:57.245: D/OpenGLRenderer(4334): Enabling debug mode 0
04-23 06:50:01.945: V/GoogleTagManager(4334): connecting to Analytics service
04-23 06:50:01.945: V/GoogleTagManager(4334): connect: bindService returned false for Intent { act=com.google.android.gms.analytics.service.START cmp=com.google.android.gms/.analytics.service.AnalyticsService (has extras) }
04-23 06:50:01.945: W/GoogleTagManager(4334): Service unavailable (code=1), will retry.
04-23 06:50:01.945: V/GoogleTagManager(4334): Loaded clientId
04-23 06:50:01.945: I/GoogleTagManager(4334): No campaign data found.
04-23 06:50:01.945: V/GoogleTagManager(4334): Initialized GA Thread
04-23 06:50:01.945: W/GoogleTagManager(4334): GooglePlayServicesNotAvailableException getting Ad Id Info
04-23 06:50:01.945: V/GoogleTagManager(4334): putHit called
04-23 06:50:06.965: V/GoogleTagManager(4334): connecting to Analytics service
04-23 06:50:06.965: V/GoogleTagManager(4334): connect: bindService returned false for Intent { act=com.google.android.gms.analytics.service.START cmp=com.google.android.gms/.analytics.service.AnalyticsService (has extras) }
04-23 06:50:06.965: W/GoogleTagManager(4334): Service unavailable (code=1), using local store.
04-23 06:50:06.965: V/GoogleTagManager(4334): falling back to local store
04-23 06:50:06.965: V/GoogleTagManager(4334): Sending hit to store PATH: https: PARAMS: v=1, ul=en-us, t=appview, ht=1398250196938, sr=480x800, an=OutingPlannerAndroid, tid=UA-XXXXXXXX-Y, aid=com.outing.planner, cid=c5f3e490-a578-49d6-b0e7-eaf3bce8dfe6, av=1.0, _u=.4nL, cd=Verification,
04-23 06:50:06.965: V/GoogleTagManager(4334): PowerSaveMode initiated.
04-23 06:50:06.975: V/GoogleTagManager(4334): PowerSaveMode terminated.
04-23 06:50:06.975: V/GoogleTagManager(4334): Dispatch running...
04-23 06:50:07.405: D/dalvikvm(4334): GC_FOR_ALLOC freed 336K, 11% free 3177K/3568K, paused 6ms, total 6ms
04-23 06:50:08.215: V/GoogleTagManager(4334): sent 1 of 1 hits
04-23 06:50:08.225: V/GoogleTagManager(4334): PowerSaveMode initiated.
盡管會引發NullPointerException
,但實際上是發送了Google Analytics(分析)匹配,我在實時報告中看到了匹配。 NullPointerException
導致我的應用程序崩潰,甚至在應用程序崩潰后也發送了Google Analytics(分析)匹配。
為什么會引發NullPointerException
? 它似乎是由Google跟蹤代碼管理器類拋出的,但是我不知道自己在做什么錯。 我遵循CuteAnimalV4示例項目,直到最后一個字母。
請注意,我已經隱藏了Google跟蹤代碼管理器容器ID和Google Analytics(分析)帳戶ID。 這些是現實生活中的有效值。
根據此主題https://productforums.google.com/forum/#!topic/tag-manager/87Kb_TZv79w
它將在下一個Google Play服務版本中修復。 現在,您可以添加未捕獲的異常處理程序作為解決方法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.