【问题标题】:Google analytics sending wrong session control parameters谷歌分析发送错误的会话控制参数
【发布时间】:2017-01-29 19:29:04
【问题描述】:

我已在我的 Android 应用程序中集成了 Google Analytics。我们面临一个问题,Google Analytics 会在第二次点击中自动添加“sc=start”。这会在 Google Analytics 中产生 2 个会话,而用户只执行了一个会话。

我尝试更改分析代码,并尝试打开不同的屏幕。

这是我用来将 ScreenView 发送到 GA 的代码:

 public static void sendAnalyticsScreenView(String screenName) {
    Tracker tracker = ErosApplication.getInstance().getTracker();
    if (tracker != null) {
        tracker.setScreenName(screenName);
        Map<String, String> build = new HitBuilders.ScreenViewBuilder().build();
        tracker.send(build);
    }
}

getTracker 方法在 Application 类中定义:

public synchronized Tracker getTracker() {
    if (mTracker == null) {
        GoogleAnalytics analytics = GoogleAnalytics.getInstance(ErosApplication.getInstance());
        mTracker = analytics.newTracker(R.xml.app_tracker);
        mTracker.enableAdvertisingIdCollection(true);
    }
    return mTracker;

}

我还尝试在应用程序的 onCreate 中初始化 Google Analytics 和 Tracker:

 @Override
public void onCreate() {
    ActivityLifecycleCallback.register(this);
    super.onCreate();

    sInstance = this;

    GoogleAnalytics.getInstance(this).initialize();
    getTracker();
}

这是来自 GA 终端的记录数据:

12-07 11:37:02.861 D/GAv4    (18509): Hit delivery requested: ht=1481090822674, _s=0, _v=ma10.0.84, a=353190215, adid=5b2dae2c-79bd-4412-9c8b-bda72e961564, aid=com.tf.eros.faythTv, an=House of God, ate=1, av=1.4.2, cd=splash_screen, cid=2c02b7ba-9cac-4a10-b360-604a9390c2c1, sf=100.0, sr=1080x1920, t=screenview, tid=UA-80650025-7, ul=en-in, v=1
12-07 11:37:02.921 D/GAv4    (18509): Hit sent to the device AnalyticsService for delivery
12-07 11:37:04.601 D/GAv4    (18509): Hit delivery requested: ht=1481090824407, _s=1, _v=ma10.0.84, a=353190216, adid=5b2dae2c-79bd-4412-9c8b-bda72e961564, aid=com.tf.eros.faythTv, an=House of God, ate=1, av=1.4.2, cd=new_intro, cid=2c02b7ba-9cac-4a10-b360-604a9390c2c1, sc=start, sf=100.0, sr=1080x1920, t=screenview, tid=UA-80650025-7, ul=en-in, v=1

我还尝试在启动画面中在同一个地方调用 logScreenView 方法 4 次,如下所示:

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_splash);
    AnalyticsHelper.logScreenView(getResources().getString(R.string.screen_splash));
    AnalyticsHelper.logScreenView(getResources().getString(R.string.screen_splash));
    AnalyticsHelper.logScreenView(getResources().getString(R.string.screen_splash));
    AnalyticsHelper.logScreenView(getResources().getString(R.string.screen_splash));
} 

终端日志:

12-07 11:42:26.635 D/GAv4    (24760): Hit delivery requested: ht=1481091146460, _s=0, _v=ma10.0.84, a=639766606, adid=5b2dae2c-79bd-4412-9c8b-bda72e961564, aid=com.tf.eros.faythTv, an=House of God, ate=1, av=1.4.2, cd=splash_screen, cid=6e9f3ca7-a87a-47bd-a80d-1619e6d9ac64, sf=100.0, sr=1080x1920, t=screenview, tid=UA-80650025-7, ul=en-in, v=1
12-07 11:42:26.645 D/GAv4    (24760): Hit delivery requested: ht=1481091146461, _s=1, _v=ma10.0.84, a=639766607, adid=5b2dae2c-79bd-4412-9c8b-bda72e961564, aid=com.tf.eros.faythTv, an=House of God, ate=1, av=1.4.2, cd=splash_screen, cid=6e9f3ca7-a87a-47bd-a80d-1619e6d9ac64, sc=start, sf=100.0, sr=1080x1920, t=screenview, tid=UA-80650025-7, ul=en-in, v=1
12-07 11:42:26.665 D/GAv4    (24760): Hit delivery requested: ht=1481091146461, _s=2, _v=ma10.0.84, a=639766608, adid=5b2dae2c-79bd-4412-9c8b-bda72e961564, aid=com.tf.eros.faythTv, an=House of God, ate=1, av=1.4.2, cd=splash_screen, cid=6e9f3ca7-a87a-47bd-a80d-1619e6d9ac64, sf=100.0, sr=1080x1920, t=screenview, tid=UA-80650025-7, ul=en-in, v=1
12-07 11:42:26.665 D/GAv4    (24760): Hit delivery requested: ht=1481091146461, _s=3, _v=ma10.0.84, a=639766609, adid=5b2dae2c-79bd-4412-9c8b-bda72e961564, aid=com.tf.eros.faythTv, an=House of God, ate=1, av=1.4.2, cd=splash_screen, cid=6e9f3ca7-a87a-47bd-a80d-1619e6d9ac64, sf=100.0, sr=1080x1920, t=screenview, tid=UA-80650025-7, ul=en-in, v=1 

GA 在第二次调用中添加了“sc=start”参数,导致会话编号不正确。请提出解决方案。

【问题讨论】:

    标签: android session google-analytics


    【解决方案1】:

    问题是我在活动的 onCreate 方法中发送 screenView 命中,但它应该从 onResume 方法发送。将屏幕视图的分析代码从 onCreate 移动到 onResume 解决了这个问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-05-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多