我一直在使用Google Analytics(分析)为我的网络应用程序进行基本分析 - 只需使用以下javascript调用跟踪网页展示次数:
ga('create', 'UA-XXXXXXXXX-1', 'mydomain.com');ga('send', 'pageview')
Run Code Online (Sandbox Code Playgroud)
这种方法总是让我感到沮丧,因为我无法可靠地捕获一些服务器端事件.我刚刚发现我可以使用Measurement Protocol来记录服务器端的事件.除了关于cid(clientid)参数之外,在我的服务器上记录事件看起来很容易.
我所理解的是,在浏览器上,使用javascript我当前已经随机创建了cid,然后将其存储在_ga cookie中.我也明白,我应该在同一客户端的客户端("页面视图")和服务器(其他事件)调用之间共享clientid/cid值,以便它们相互关联.
这个StackOverflow链接对我来说是一个有用的参考.
问题是:我应该
对于(1),我认为我能做的是:
使用jsp在页面上创建ga对象时使用相同的UUID:
ga('create', 'UA-XXXXXXXXX-1', 'mydomain.com',
{'clientId': '<%=[value from the session]%>'});
Run Code Online (Sandbox Code Playgroud)令我担心这种方法的是,ID只会在服务器上的会话中持续存在.我认为clientId(cid)的意图是它会在很长一段时间内持续存在...所以我想我会忘记谁是新用户还是回头客?
对于(2),坦率地说我不知道如何做到这一点......我从上面的StackOverflow链接知道我可以从ga对象中的clientId参数中获取cid.我不知道如何将它发送回我的服务器(这可能是一个简单的JavaScript问题).
肯定会欣赏有关使用哪种方法的建议....谢谢!
我正在尝试使用 Google App Engine (Java) 网络应用程序中的测量协议将事件发布到 google 分析。
我已经通过直接提交 URL 测试了 URL,它会立即(实时)显示在 Google Analytics 中。但是当我尝试在应用程序中发布它时,什么也没有显示。
所以我假设从我的 Java 代码开始有缺陷(也许是),所以我用谷歌的示例代码替换了我的代码,以便从谷歌应用引擎集成到谷歌分析这里。我改变了一点,但这里是关键位......
private static final URL GA_URL_ENDPOINT = getGoogleAnalyticsEndpoint();
private static URL getGoogleAnalyticsEndpoint() {
try {
return new URL("http", "www.google-analytics.com", "/collect");
} catch (MalformedURLException e) {
throw new RuntimeException(e);
}
}
public boolean trackEvent(
String category, String action, String label, String value) {
try {
Map<String, String> map = new LinkedHashMap<>();
map.put("v", "1"); // Version.
map.put("tid", gaTrackingId);
map.put("cid", "555");
map.put("t", "event"); // …
Run Code Online (Sandbox Code Playgroud) 我是iOS/Swift开发的新手,并且在为UITableView进行DataSource的动态交换时遇到问题 - 请注意,我没有交换Delegate,只是数据源.
我已经在Stack Overflow上阅读了其他类似的问题/回复,但没有找到与我的情况相关的问题.通常他们是关于在"viewDidLoad"上设置DataSource(例如这一个,这个),而我的情况是关于当用户按下按钮时交换DataSource.我的代码中不存在引用问题中的问题.
这是我的代码大纲.我将buttonPress方法连接到storyboard中的TouchUpInside事件:
class ViewController: UIViewController, UITableViewDelegate {
@IBOutlet weak var tableView: UITableView!
...
@IBAction func buttonPress(sender: UIButton) {
...
self.tableView.dataSource = DummyDataSource()
self.tableView.delegate = self
self.tableView.reloadData()
}
...
}
Run Code Online (Sandbox Code Playgroud)
......这是我的数据源类:
import UIKit
class DummyDataSource: NSObject, UITableViewDataSource {
let names = ["A", "B", "C"]
func tableView(tableView: UITableView,
numberOfRowsInSection section: Int) -> Int {
return names.count
}
func tableView(tableView: UITableView,
cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
var cell = tableView.dequeueReusableCellWithIdentifier(simpleTableIdentifier) as UITableViewCell?
if ( …
Run Code Online (Sandbox Code Playgroud)