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>
يمكنك تعديل إعدادات Tracker باستخدام الأحمال الزائدة لطريقة 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 إلى تطبيقك. ثم للحصول على الطلبات التي تريد تتبعها ، قم بتعيين رأس طلب HTTP AnalyticsTracker-Enabled إلى true .
ستتضمن الاستجابة بعد ذلك تتبع رمز JS كأفكار مشفرة BASE64.
لقد قمنا بتضمين أجهزة اعتراض Ajax لـ jQuery و angular في ملف /Scripts/analyticstracker.adapters.js ، والتي يمكنك تضمينها في موقعك. تأكد من تضمينه بعد الأطر.
<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 إلى توفير افتراضيات معقولة ، والسماح لك بتجاوز بعض الإعدادات المتقدمة إذا كنت بحاجة إلى ذلك.
إذا كنت ترغب في تتبع عنوان URL مختلفًا لمقابلة الصفحة عن تلك الموجودة في المتصفح ، فيمكنك تجاوزه عن طريق ضبط صفحة المتتبع الحالي
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 مرتين. المستخدم على سبيل المثال معرف الطلب باعتباره معرف الأمر للتأكد من تعيين ملف تعريف الارتباط فقط لهذا الترتيب المحدد.
في بعض الأحيان يكون لديك أحداث تحدث دون أي تفاعل خادم. على سبيل المثال النقر على صورة لتكبيرها. في هذه الحالة ، يمكنك استخدام AnalyCstracker لإنشاء البرنامج النصي المطلوب:
<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 Tag Manager (Script و 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>
في بعض الأحيان قد ترغب في إضافة كائنات أكثر تعقيدًا إلى Datalayer ، وهذا مدعوم باستخدام القاموس
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>