AnalyticsTracker是一種實用程序,旨在使從ASP.NET應用程序和Google Analytics和Google Tag Manager跟踪數據變得更加容易
安裝AnalyticsTracker很簡單。將其從Nuget安裝到您的項目中。
在模板中,添加以下<body>以後呈現跟踪腳本
@using Vertica.AnalyticsTracker
...
<body>
@AnalyticsTracker.Render("UA-xxxxxx-1")
...
</body>
<%@ Import Namespace="Vertica.AnalyticsTracker" %>
...
<body>
<%= AnalyticsTracker.Render("UA-xxxxxx-1") %>
...
</body>
您可以使用Render()方法的過載來調整跟踪器的設置。
@AnalyticsTracker.Render(
account: "UA-xxxxxx-1",
trackDefaultPageview: true,
displayFeatures: false,
trackerConfiguration: new Dictionary<string, object>
{
{"cookieDomain", "foo.example.com"},
{"cookieName", "myNewName"},
{"cookieExpires", 20000}
});
AnalyticsTracker還可以從AJAX請求跟踪數據。為了激活此功能,將Vertica.AnalyticsTracker.Modules.AnalyticsHttpModule添加到您的應用程序中。然後,對於您要跟踪的請求, AnalyticsTracker-Enabled HTTP請求標頭設置為true 。
然後,響應將包括跟踪JS代碼作為基本64編碼標頭。
我們在文件 /scripts /Scripts/analyticstracker.adapters.js中包括了jQuery和angular的Ajax攔截器,您可以將其包含在您的網站中。確保在框架之後包含它。
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
<script src="//ajax.googleapis.com/ajax/libs/angularjs/1.3.12/angular.min.js"></script>
<script src="/Scripts/analyticstracker.adapters.js"></script>
AnalyticsTracker旨在提供SOM明智的默認值,並讓您在需要的情況下覆蓋一些高級設置。
如果要跟踪與瀏覽器中的瀏覽量的網址不同的網址,則可以通過設置當前跟踪器的頁面來覆蓋它
AnalyticsTracker.Current.SetPage("/my/custom/url");
默認情況下,AnalyticsTracker將輸出基本的跟踪代碼,並跟踪標準頁面瀏覽量。當您想跟踪其他數據時,您將commands添加到當前跟踪器。
在這裡,我們正在跟踪控制器的活動
public ActionResult About()
{
AnalyticsTracker.Current.Track(new EventCommand("category", "action", "label"));
ViewBag.Message = "Your application description page.";
return View();
}
跟踪電子商務交易的命令可以像這樣使用:
var transaction = new TransactionInfo(
id: "order1001",
affiliation: string.Empty,
revenue: 100,
shipping: 10,
tax: 5,
currency: AnalyticsCurrency.USD);
transaction.AddItem(
name: "Black shirt",
sku: "sh001",
category: "Shirts",
price: 50,
quantity: 2);
AnalyticsTracker.Current.Track(new TransactionCommand(transaction));
如果您在帳戶中啟用了增強的電子商務跟踪,則應使用這些命令來跟踪您的交易:
var purchaseAction = new PurchaseActionFieldObject(
id: "order1001",
affiliation: string.Empty,
revenue: 100,
shipping: 10,
tax: 5,
coupon: null);
var lineItems = new []
{
new ProductFieldObject(
id: "sh001",
name: "Black shirt",
brand: "Northwind",
category: "Shirts",
variant: null,
price: 50,
quantity: 2,
coupon: null,
position: 1)
};
AnalyticsTracker.Current.Track(new PurchaseCommand(purchaseAction, lineItems));
跟踪電子商務時,您可能還想在跟踪器上設置貨幣
增強的電子商務還可以讓您跟踪許多其他內容。這些命令位於Vertica.AnalyticsTracker.Commands.EnhancedEcommerce名稱空間:
AddToBasketCommand(...)
RemoveFromBasketCommand(...)
CheckoutCommand(...)
CheckoutOptionCommand(...)
ProductClickCommand(...)
ProductDetailCommand(...)
ProductListCommand(...)
您要做的一個典型的事情是確保例如,即使用戶重新加載頁面,交易也只能跟踪一次。您應該從服務器中跟踪這一點,但是通常還會出現用戶使用返回按鈕的問題,或者瀏覽沒有實際服務器交互的頁面等。
輸入CookieGuardedCommand :
AnalyticsTracker.Current.Track(new CookieGuardedCommand(innerCommand, "order12345"));
將您的命令包裹在CookieGuardedCommand中會在這樣的if中呈現內部命令:
if (document.cookie.search(/AnalyticsTrackerGuardorder12345=true/) === -1) {
ga('send', {'hitType': 'event','eventCategory': 'cat','eventAction': 'act','eventLabel': ''});
document.cookie = 'AnalyticsTrackerGuardorder12345=true; Expires=' + new Date(2016, 05, 02).toUTCString();
}
如果同一JavaScript執行兩次,這將確保命令不會再次執行。例如,用戶將訂單ID作為命令ID,以確保Cookie僅針對該特定順序設置。
有時,您沒有任何服務器交互的事件。例如,單擊圖像將其縮小。在這種情況下,您可以使用AnalityCstracker生成所需的腳本:
<a href="#" onmousedown="@AnalyticsTracker.ClientCommand(new EventCommand("category", "action", "label"))">
<img src="..."/>
</a>
在模板中,添加以下<body>以後呈現跟踪腳本
@using Vertica.AnalyticsTracker
...
<body>
@TagManager.Render("GTM-XXYYY")
...
</body>
<%@ Import Namespace="Vertica.AnalyticsTracker" %>
...
<body>
<%= TagManager.Render("GTM-XXYYY") %>
...
</body>
如果需要,您可以使用以下方式渲染Google標籤管理器(腳本,NoScript和Datalayer)的各個部分:
TagManager.RenderScript()TagManager.RenderNoScript()TagManager.RenderDataLayer()您可以使用Render()方法的過載來調整標籤的設置。
@TagManager.Render(account:"GTM-XXYYY", dataLayerName: "myLayer");
使用TagManager可讓您輕鬆地向dataLayer變量進行信息。
TagManager.Current.AddMessage(new Variable("myVariable", "myValue"));
這將生成以下datalayer
<script>
var dataLayer = dataLayer || [];
dataLayer.push({'myVariable': 'myValue'});
</script>
有時您可能需要在數據層中添加更多複雜的對象,並且使用字典來支持
var dict = new Dictionary<string, object>
{
{"myProp", "myValue"},
{"yourProp", 12345}
};
TagManager.Current.AddMessage(new Variable("myVariable", dict));
然後,詞典將被渲染為一個深對象
<script>
var dataLayer = dataLayer || [];
dataLayer.push({'myVariable': {'myProp': 'myValue','yourProp': 12345}});
</script>
使用TransactionMessage,可以通過Datalayer發送訂單信息:
var items = new[]
{
new TransactionItemInfo(
name: "Black shirt",
sku: "sh001",
category: "Shirts",
price: 50,
quantity: 2)
};
var message = new TransactionMessage(
transactionId: "order1001",
affiliation: string.Empty,
total: 100,
tax: 5,
shipping: 10,
items: items);
TagManager.Current.AddMessage(message);
該訂單將根據GTM規格渲染:
<script>
var dataLayer = dataLayer || [];
dataLayer.push(
{
'transactionId': 'order1001',
'transactionAffiliation': '',
'transactionTotal': 100,
'transactionTax': 5,
'transactionShipping': 10,
'transactionProducts': [
{
'name': 'Black shirt',
'sku': 'sh001',
'category': 'Shirts',
'price': 50,
'quantity': 2
}
]
});
</script>