android - 如何使用自定义广告系列归因(不是网址)设置谷歌分析

标签 android google-analytics nfc

我正在尝试使用“广告系列归因”在我的 android 应用上设置我的谷歌分析。基本上,我有各种启动我的应用程序的 nfc 标签,每个标签上都有一个带有“Activity ID”的额外 NDEF 消息。我希望每个标签都归因于我的分析帐户中的一个单独的 Activity 。但是,字符串已经从标签中正确传递,并且这部分正在工作。现在我需要将它们作为跟踪器的一部分发送。

我有一个单独的 MyApplication.java (直接从谷歌的开发站点复制)文件:

public class MyApplication extends Application {
    private static final String PROPERTY_ID = "UA-XXXXXXX-X";
    public enum TrackerName {
        APP_TRACKER,
        GLOBAL_TRACKER,
        ECOMMERCE_TRACKER,      //I don't really need this

    }
    HashMap<TrackerName, Tracker> mTrackers = new HashMap<TrackerName, Tracker>();
    synchronized Tracker getTracker(TrackerName trackerId) {
        if (!mTrackers.containsKey(trackerId)) {

            GoogleAnalytics analytics = GoogleAnalytics.getInstance(this);
            Tracker t = (trackerId == TrackerName.APP_TRACKER) ? analytics.newTracker(PROPERTY_ID)
                    : (trackerId == TrackerName.GLOBAL_TRACKER) ? analytics.newTracker(R.xml.global_tracker)
                    : analytics.newTracker(R.xml.global_tracker);
            mTrackers.put(trackerId, t);

        }
        return mTrackers.get(trackerId);
    }

}
这几乎直接来自分析 sdk4 上的谷歌开发者网站

然后在我想要跟踪自定义 Activity 参数的 cameraActivity 中,我有
public class CameraActivity extends Activity implements PictureCallback {

    String campaignID = "Tag_1";    //in reality this is passed in from the tag. but i hard-coded it here for simplicity
    protected void onCreate(Bundle savedInstanceState) {
        Tracker t = ((com.snappiesticker.app) getActivity().getApplication()).getTracker(TrackerName.APP_TRACKER);
        t.send(new HitBuilders.ScreenViewBuilder().set("tag",campaignID).build());
    }
}

现在它的应用程序名称存在问题:com.snappiesticker.app 以及 getActivty()。该名称是我的应用程序的包名称。应该是别的吗?它也找不到定义 getActivity() 的位置。然而,这基本上是直接从谷歌开发网站复制而来的。

如何正确发送此跟踪器?

最佳答案

我假设你已经在你的应用 list 中设置了你的应用程序类( MyApplication ),如下所示:

<application android:name=".MyApplication" ...>

此外,我假设 MyApplication类和 CameraActivity类,驻留在同一个包中(您的应用程序包 com.snappiesticker.app)。否则包级可见性方法getTracker() .如果不是这种情况,您需要将可见性更改为公开:
public synchronized Tracker getTracker(TrackerName trackerId) {

为了从应用程序中的 Activity 中获取应用程序类的实例,您可以调用 getApplication()该 Activity 的方法。然后将 Application 对象转换为 MyApplication 的实例。类(class)。然后您将能够访问getTracker()方法。
public class CameraActivity extends Activity implements PictureCallback {
    protected void onCreate(Bundle savedInstanceState) {
        Tracker t = ((MyApplication)getApplication()).getTracker(TrackerName.APP_TRACKER);
        t.send(new HitBuilders.ScreenViewBuilder().set("tag",campaignID).build());
    }
}

请注意,如果您想使用 XML 文件实例化跟踪器,则只需要一个跟踪器 XML 文件(例如 global_tracker.xml)
Tracker t = analytics.newTracker(R.xml.global_tracker);

如果您仅从 PROPERTY_ID 字符串值实例化跟踪器,则不需要这样的 XML 文件。

关于android - 如何使用自定义广告系列归因(不是网址)设置谷歌分析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26595236/

相关文章:

java - 在 Android 中显示图像网格,网格布局中心为空?

javascript - 如果我的浏览器中禁用了 cookie,Google Analytics 会跟踪流量吗?

search - 谷歌分析如何计算 "average time spent"之类的指标?

nfc - 在linux下对ACR122T-E2进行编程

android - 处理 EditText 中可绘制对象的点击事件

java - 在我的应用程序中,null 无法转换为非 null 类型 java.util.HashMap

android - NFC PN544 NDEF 读取命令流程

android - ISO15693/Tag-it HF-I 收发失败

android - 完成旧 Activity 并开始新 Activity ,反之亦然

google-analytics - 了解Google Analytics(分析)中的网站速度页面计时