5

我设置了一个助手类,它Google Analytics通过 向 报告事件和屏幕,EasyTracker每次我重新启动应用程序时,由于未知原因,它以新用户的身份报告所有屏幕和事件。我检查了gaClientId存储唯一 ID 的文件.但是每次我重新启动应用程序时,存储在这个文件中的 ID 都会改变,与其他应用程序相比,它保持不变。

这是我在帮助程序类中使用的代码,请注意,我也尝试过使用 ApplicationContext 上下文。我尝试禁用即时调度(是的,我知道立即报告它不是一个好习惯)

private static String mLastView = "";

public static void sendView(String view,Context ctx) {

    // Don't report screen twice in a row
    if(view.equals(mLastView)) return;

    mLastView = view;

    EasyTracker.getInstance().setContext(ctx);
    EasyTracker.getTracker().sendView(view);
    EasyTracker.getInstance().dispatch();
}

public static void sendEvent(Context ctx,String category,String action,String label,long value){

    EasyTracker.getInstance().setContext(ctx);
    EasyTracker.getTracker().sendEvent(category, action, label, value);
    EasyTracker.getInstance().dispatch();
}

更新: 我尝试使用没有简易跟踪器的 GoogleAnalytics 类,但仍然无法正常工作。我猜可能存在某种读取权限问题(但可以写入吗?),文件位于data/data/com.my.app/files/gaClientId

更新: 我已经尝试过任何方法,我可以gaClientId手动读取文件,没有任何问题,无论有没有帮助类,报告都累了,每次启动应用程序时仍然会创建一个新的 ClientID。

4

2 回答 2

4

你猜怎么着?存储位于 的 ClientID 的文件data/data/com.my.app/files/gaClientId,以及该文件夹的应用程序下载文件。每次启动应用程序时,我都会运行该文件夹并删除其内容。因此,当分析启动时,它找不到gaClientId 文件,并创建了一个新用户

提示不要在根目录存储任何东西files

于 2013-04-18T19:36:29.877 回答
1

我正在使用简单的跟踪器,但我没有遇到这个问题。我是这样做的:在你的活动的 onCreate() 中输入:

gaInstance = GoogleAnalytics.getInstance(this);
    tracker = gaInstance.getDefaultTracker()

gaInstance 和 tracker 是全局字段。

然后在 onStart() 中,您只需将其称为:

tracker.sendView("/youractivity");

那是为了景色。该事件也只是一个:

            tracker.sendEvent("String",
                    "String",
                    "String",
                    "long");

最后要做的是在 analytics.xml 文件中更改会话超时的默认值。默认为 30 秒,在下面的示例中为 30 分钟

<integer name="ga_sessionTimeout">1800</integer>
于 2013-04-18T15:42:47.833 回答