有没有办法在不使用Android中的xml配置的情况下以编程方式为Google Analytics(v4)启用reportUncaughtExceptions?
我在Android应用中使用Google Analytics v4,我需要一种方法来通过构建风格设置两个不同的跟踪ID.我使用的是一般的global_tracker.xml配置(见下文),但我需要一种基于风格"动态注入"跟踪ID的方法.
<resources xmlns:tools="http://schemas.android.com/tools"
tools:ignore="TypographyDashes">
<integer name="ga_sessionTimeout">300</integer>
<bool name="ga_autoActivityTracking">true</bool>
<bool name="ga_reportUncaughtExceptions">true</bool>
<!-- The following value should be replaced with correct property id. -->
<string name="ga_trackingId">UA-xxxxxx-xx</string>
</resources>
Run Code Online (Sandbox Code Playgroud)
为了避免在构建flavor源文件夹中有重复的xml配置,我使用trackingId直接初始化跟踪器并以编程方式设置属性.
mGATracker = analytics.newTracker(R.string.ga_code); // this is dynamic depending on flavor
mGATracker.setSessionTimeout(300);
mGATracker.enableAutoActivityTracking(true);
Run Code Online (Sandbox Code Playgroud)
有没有办法在不使用xml配置的情况下启用reportUncaughtExceptions?
我开始使用Google Analytics V4实施广告系列衡量,参考链接 https://developers.google.com/analytics/devguides/collection/android/v4/.遇到https://developers.google.com/analytics/solutions/testing-play-campaigns中提到的经过测试的Campign Measurement时遇到的问题.每次我的日志显示"未找到广告系列数据"
我将google Play服务(版本:18)导入我的工作区并在我的项目中引用它
在我的清单文件中添加了以下行
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission>
<meta-data android:name="com.google.android.gms.version"
android:value="@integer/google_play_services_version" />
<meta-data android:name="com.google.android.gms.analytics.globalConfigResource"
android:resource="@xml/global_tracker" />
Run Code Online (Sandbox Code Playgroud)
以及代码下面
<service android:name="com.google.android.gms.analytics.CampaignTrackingService"/>
<receiver android:name="com.google.android.gms.analytics.CampaignTrackingReceiver"
android:exported="true">
<intent-filter>
<action android:name="com.android.vending.INSTALL_REFERRER" />
</intent-filter>
</receiver>
Run Code Online (Sandbox Code Playgroud)
后来在res-> xml下创建了global_tracker.xml文件.下面是我的xml文件
<?xml version="1.0" encoding="utf-8" ?>
<resources xmlns:tools="http://schemas.android.com/tools"
tools:ignore="TypographyDashes"
>
<integer name="ga_sessionTimeout">300</integer>
<!-- Enable automatic Activity measurement -->
<bool name="ga_autoActivityTracking">true</bool>
<bool name="ga_debug">true</bool>
<string name="ga_logLevel">verbose</string>
<string name="ga_dryrun">true</string>
<!-- The screen names that will appear in reports -->
<!-- The following value should be replaced with correct …
Run Code Online (Sandbox Code Playgroud) android google-analytics android-intent android-service google-analytics-firebase
[适用于Android Google Analytics v4]
当ga_autoActivityTracking = true时,是否有办法不报告特定活动(发送命中服务)?
我想在onStart()上将ga_autoActivityTracking变为false,在特定活动中再次在onStop()上变为true.如果可能的话,某人会像提供示例代码一样善良.其他方法也是最受欢迎的.
谢谢.
我已根据本指南实施了Google Analytics Campaign Measurement.然后我想按照本指南测试一切是否正常.
我在AndroidManifest.xml上添加了这些:
<meta-data android:name="com.google.android.gms.version"
android:value="@integer/google_play_services_version" />
<meta-data android:name="com.google.android.gms.analytics.globalConfigResource"
android:resource="@xml/global_tracker" />
<!-- Used for Google Play Store Campaign Measurement-->;
<service android:name="com.google.android.gms.analytics.CampaignTrackingService" />
<receiver android:name="com.google.android.gms.analytics.CampaignTrackingReceiver"
android:exported="true">
<intent-filter>
<action android:name="com.android.vending.INSTALL_REFERRER" />
</intent-filter>
</receiver>
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
Run Code Online (Sandbox Code Playgroud)
并将这些放在MainActivity.java上:
public enum TrackerName {
APP_TRACKER, // Tracker used only in this app.
GLOBAL_TRACKER, // Tracker used by all the apps from a company. eg: roll-up tracking.
ECOMMERCE_TRACKER, // Tracker used …
Run Code Online (Sandbox Code Playgroud) android google-analytics android-intent android-service google-analytics-firebase
我按照本指南在我的Android应用中实施了Google Analytics.我无法理解该文件.
在文档中,它说创建一个XML文件,并将其作为内容:
<screenName name="com.mycompany.myapp.MainActivity">
SomeApp MainActivity
</screenName>
Run Code Online (Sandbox Code Playgroud)
要发送屏幕视图,我必须这样做:
Tracker t = ((AnalyticsSampleApp) getActivity().getApplication()).getTracker(TrackerName.APP_TRACKER);
t.setScreenName(screenName);
t.send(new HitBuilders.AppViewBuilder().build());
Run Code Online (Sandbox Code Playgroud)
但是,我不确定这screenName
应该是什么.是name
值(com.mycompany.myapp.MainActivity
)还是screenName
值(SomeApp MainActivity
)?
最近,我们根据此文档为Android应用程序整合了Google Analytics V4 SDK(以跟踪安装引荐):https://developers.google.com/analytics/devguides/collection/android/v4/campaigns#overview
遗憾的是,即使正确发送广播,数据在GA统计数据中也不可见.
我已完成以下步骤以确保收到广播:
在我的logcat几秒钟后出现以下信息:
03-31 19:52:41.695 24530-24551/pl.onet.zapytaj D/GAv4:收到安装活动:medium = display,name = promo_mzapytaj_wariantA,source = m.zapytaj.onet.pl 03-31 19:52:41.705 24530-24551/pl.onet.zapytaj D/GAv4:将安装活动发送至:UA-60392364-5,medium = display,name = promo_mzapytaj_wariantA,source = m.zapytaj.onet.pl
尽管我多次重复这一步骤,GA似乎并没有在任何地方显示它(Aquisitions).
有谁有这个问题?Google Play Developer控制台可以正确显示广告系列信息
我无处可报告,但此处,问题跟踪器是只读的:https: //code.google.com/p/analytics-issues/issues/list
在启用StrictMode的情况下运行时,我从Google Analytics SDK v10.2.0获得以下信息:
02-16 10:55:46.245 2633-2641/com.visiolink.reader.wrapper E/StrictMode: Finalizing a Cursor that has not been deactivated or closed. database = /data/user/0/com.visiolink.reader.wrapper/databases/google_app_measurement_local.db, table = null, query = select count(1) from messages
android.database.sqlite.DatabaseObjectNotClosedException: Application did not close the cursor or database object that was opened here
at android.database.sqlite.SQLiteCursor.<init>(SQLiteCursor.java:98)
at android.database.sqlite.SQLiteDirectCursorDriver.query(SQLiteDirectCursorDriver.java:50)
at android.database.sqlite.SQLiteDatabase.rawQueryWithFactory(SQLiteDatabase.java:1316)
at android.database.sqlite.SQLiteDatabase.rawQuery(SQLiteDatabase.java:1255)
at com.google.android.gms.internal.zzatv.zza(Unknown Source)
at com.google.android.gms.internal.zzatv.zza(Unknown Source)
at com.google.android.gms.internal.zzaul.zzc(Unknown Source)
at com.google.android.gms.internal.zzauj.zzb(Unknown Source)
at com.google.android.gms.internal.zzauj.zza(Unknown Source)
at com.google.android.gms.internal.zzauj$8.run(Unknown Source)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:423)
at java.util.concurrent.FutureTask.run(FutureTask.java:237)
at com.google.android.gms.internal.zzaud$zzd.run(Unknown …
Run Code Online (Sandbox Code Playgroud) 我遵循测量协议(Google Analytics 4) 中描述的指南从服务器发送购买事件。
我已验证此事件的记录在 GA4 上有效。我什至可以看到来自 Google Ads 购买转化的 Google 点击 ID (GCLID) 的来源值和中间值。
我已将此转化导入 Google Ads(等待了大约一周)。我有很多转化记录到 Google Analytics 4,但在 Google Ads 转化页面上,我得到了No recent conversions
。我还要补充一点,显示了来自客户端的其他转换,仅显示了来自服务器的转换。
如何才能使通过测量协议 (Google Analytics 4) API 发送的事件显示在 GA4 上,并显示来自 Google Ads 的来源/媒介/广告系列值,以在 Google Ads 上显示为转化?
也许我应该更改 Google Ads 上的归因模型?
google-analytics google-analytics-api google-analytics-firebase firebase-analytics google-analytics-4
关注此https://developers.google.com/analytics/solutions/testing-play-campaigns
logcat始终报告:未找到任何广告系列数据.
这是我的AndroidManifest.xml
<!-- Used for Google Play Store Campaign Measurement -->
<service android:name="com.google.android.gms.analytics.CampaignTrackingService" />
<receiver
android:name="com.google.android.gms.analytics.CampaignTrackingReceiver"
android:exported="true" >
<intent-filter>
<action android:name="com.android.vending.INSTALL_REFERRER" />
</intent-filter>
</receiver>
Run Code Online (Sandbox Code Playgroud) android google-analytics google-play-services google-analytics-firebase
我在Travis构建服务器上的Robolectric测试中获得了以下NPE,我很难找到原因.我无法在本地重现此问题.
有人知道是什么原因导致onServiceConnected被调用?这可能有助于我找出问题所在.据我所知,这是Google Play服务 - Google Analytics问题.
java.lang.NullPointerException
at com.google.android.gms.analytics.c$a.onServiceConnected(Unknown Source)
at com.google.android.gms.analytics.c$a.onServiceConnected(Unknown Source)
at org.robolectric.shadows.ShadowApplication$2.run(ShadowApplication.java:257)
at org.robolectric.util.Scheduler$PostedRunnable.run(Scheduler.java:162)
at org.robolectric.util.Scheduler.runOneTask(Scheduler.java:107)
at org.robolectric.util.Scheduler.advanceTo(Scheduler.java:92)
at org.robolectric.util.Scheduler.advanceToLastPostedRunnable(Scheduler.java:68)
at org.robolectric.util.Scheduler.unPause(Scheduler.java:25)
at org.robolectric.shadows.ShadowLooper.unPause(ShadowLooper.java:228)
at org.robolectric.shadows.ShadowLooper.runPaused(ShadowLooper.java:267)
at org.robolectric.util.ActivityController.create(ActivityController.java:144)
at org.robolectric.util.ActivityController.create(ActivityController.java:154)
at com.company.search.activities.loginjoin.LoginActivityTest.setup(LoginActivityTest.java:20)
at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:47)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:44)
at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:24)
at org.robolectric.RobolectricTestRunner$2.evaluate(RobolectricTestRunner.java:250)
at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:271)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:70)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:238)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:53)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229)
at org.robolectric.RobolectricTestRunner$1.evaluate(RobolectricTestRunner.java:177)
at org.junit.runners.ParentRunner.run(ParentRunner.java:309)
at org.gradle.api.internal.tasks.testing.junit.JUnitTestClassExecuter.runTestClass(JUnitTestClassExecuter.java:86)
at org.gradle.api.internal.tasks.testing.junit.JUnitTestClassExecuter.execute(JUnitTestClassExecuter.java:49)
at org.gradle.api.internal.tasks.testing.junit.JUnitTestClassProcessor.processTestClass(JUnitTestClassProcessor.java:69)
at org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.processTestClass(SuiteTestClassProcessor.java:50)
at org.gradle.messaging.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35)
at org.gradle.messaging.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
at org.gradle.messaging.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:32)
at …
Run Code Online (Sandbox Code Playgroud)