我正在尝试使用“广告系列归因”在我的 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/