Skip to Content
مستندات متریکس همواره در حال بهبود است! 🚀 آخرین به‌روزرسانی‌ها را از اینجا دنبال کنید.

ردیابی ایونت ها

SDK متریکس به شما امکان می‌دهد تعاملات کاربران را به عنوان **ایونت ** در اپلیکیشن خود ردیابی کنید. ایونت ها داده‌های آماری درباره رفتار کاربر، تعامل و درآمد ارائه می‌دهند.

انواع ایونت ها

SDK متریکس از دو نوع ایونت پشتیبانی می‌کند:

  1. ایونت های سفارشی (Custom Events) — ردیابی هرگونه تعامل کاربر که توسط منطق اپلیکیشن شما تعریف شده است.
  2. ایونت های درآمدی (Revenue Events) — ردیابی تراکنش‌های مالی با مقادیر درآمدی قابل اندازه‌گیری.

ایجاد ایونت های سفارشی

ثبت ایونت

ایونت های سفارشی ابتدا باید در پنل Metrix شما تحت عنوان Event Management ثبت شوند. از slug (شناسه) ایونت در کد اپلیکیشن خود استفاده کنید.

ثبت ایونت های سفارشی با Slug

برای ثبت یک ایونت سفارشی با استفاده از slug آن که در پنل Metrix تعریف شده است:

Native & Webview
MetrixAnalytics.newEvent("my_event_slug");

ثبت ایونت های سفارشی با نام دلخواه

برای ثبت یک ایونت سفارشی با استفاده از یک نام دلخواه (یک ایونت با slug منحصربه‌فرد به‌طور خودکار در پنل ایجاد می‌شود):

Native & Webview
MetrixAnalytics.newEventByName("my_event_name");

ثبت ایونت ها همراه با ویژگی‌ها (Attributes)

ایونت ها می‌توانند شامل ویژگی‌های مرتبط برای ارائه محتوای اضافی باشند:

Map<String, Object> attributes = new HashMap<>(); attributes.put("product_name", "shirt"); attributes.put("purchase_date", "2024-11-20T11:24:03.000Z"); // use ISO 8601 to consider this attribute as s a date
Native
MetrixAnalytics.newEvent("purchase_event_slug", attributes); // OR MetrixAnalytics.newEventByName("purchase_event_name", attributes);
Webview
// استفاده از slug MetrixAnalytics.newEvent('purchase_event_slug', JSON.stringify(attributes)); // استفاده از نام سفارشی MetrixAnalytics.newEventByName('purchase_event_name', JSON.stringify(attributes));

دستورالعمل‌های ویژگی‌های ایونت

  • حداکثر ویژگی در هر ایونت : 50
  • حداکثر طول کلید: 512 بایت
  • حداکثر طول مقدار: 512 بایت
  • انواع پشتیبانی شده: String, Number, Boolean, Date (فرمت ISO 8601)

نکته: برای ویژگی‌های تاریخ از فرمت ISO 8601 (مانند 2024-11-20T11:24:03.000Z) استفاده کنید تا Metrix آنها را به درستی به عنوان تاریخ در پلتفرم شناسایی کند.

مثال‌های ایونت های متداول

ایونت خرید در فروشگاه الکترونیکی

Map<String, Object> attributes = new HashMap<>(); attributes.put("order_id", "ORD-12345"); attributes.put("product_ids", "PROD-001,PROD-002"); attributes.put("quantity", 2); attributes.put("subtotal", 1500.00); attributes.put("tax", 150.00); attributes.put("total", 1650.00); attributes.put("coupon_applied", true); attributes.put("coupon_code", "SAVE10"); MetrixAnalytics.newEvent("checkout_complete", attributes);

ایونت ثبت نام کاربر

Map<String, Object> attributes = new HashMap<>(); attributes.put("registration_method", "email"); attributes.put("signup_date", "2024-11-20T11:24:03.000Z"); attributes.put("referral_source", "app_store"); MetrixAnalytics.newEventByName("user_signup", attributes);

ایونت مصرف محتوا

Map<String, Object> attributes = new HashMap<>(); attributes.put("content_id", "ARTICLE-001"); attributes.put("content_title", "Getting Started with Analytics"); attributes.put("content_category", "tutorial"); attributes.put("reading_time_seconds", 180); attributes.put("scroll_depth", 85); MetrixAnalytics.newEvent("content_viewed", attributes);

ایونت عملیات درون برنامه‌ای

Map<String, Object> attributes = new HashMap<>(); attributes.put("button_name", "Share Button"); attributes.put("share_destination", "facebook"); attributes.put("content_id", "POST-001"); MetrixAnalytics.newEventByName("content_shared", attributes);

ایجاد ایونت های درآمدی

ثبت ایونت های درآمدی با Slug

برای ثبت یک ایونت درآمدی با استفاده از slug آن و واحد پول پیش‌فرض (IRR):

MetrixAnalytics.newRevenue("my_event_slug", 12000, RevenueCurrency.IRR);

ثبت ایونت های درآمدی همراه با واحد پول

برای ثبت یک ایونت درآمدی با واحد پول خاص:

// واحدهای پول پشتیبانی شده: IRR, USD, EUR MetrixAnalytics.newRevenue("purchase_slug", 50000.0, RevenueCurrency.IRR); MetrixAnalytics.newRevenue("purchase_slug", 100.0, RevenueCurrency.USD); MetrixAnalytics.newRevenue("purchase_slug", 85.0, RevenueCurrency.EUR);

ثبت ایونت های درآمدی با نام دلخواه

برای ثبت یک ایونت درآمدی با استفاده از یک نام دلخواه:

// با واحد پول پیش‌فرض (IRR) MetrixAnalytics.newRevenueByName("in_app_purchase", 50000.0); // با واحد پول خاص MetrixAnalytics.newRevenueByName("in_app_purchase", 100.0, RevenueCurrency.USD);

پارامترهای ایونت درآمدی

پارامترنوعتوضیحات
slug/nameStringشناسه ایونت (slug) یا نام سفارشی ایونت
revenueDoubleمقدار عددی که نشان‌دهنده میزان درآمد است
currencyRevenueCurrency / Stringکد واحد پول: IRR (پیش‌فرض), USD, یا EUR

مثال‌های ایونت درآمدی

خرید درون برنامه‌ای

// کاربر یک اشتراک را خریداری می‌کند double subscriptionPrice = 99.99; MetrixAnalytics.newRevenue("subscription_purchase", subscriptionPrice, RevenueCurrency.USD);

خرید آیتم درون برنامه‌ای

// کاربر ارز مجازی خریداری می‌کند Map<String, Object> attributes = new HashMap<>(); attributes.put("item_type", "virtual_currency"); attributes.put("item_name", "Gold Coins"); attributes.put("quantity", 1000); attributes.put("unit_price", 9.99); MetrixAnalytics.newRevenue("virtual_item_purchase", 9.99, RevenueCurrency.USD);

مثال چند واحد پولی

// مدیریت واحدهای پولی مختلف کاربر String userCurrency = getUserCurrency(); // "USD", "EUR", "IRR" double amount = getConvertedAmount(userCurrency); MetrixAnalytics.newRevenue("purchase", amount, RevenueCurrency.valueOf(userCurrency));

تمدید اشتراک

// ردیابی درآمد تکراری double renewalAmount = 199.99; MetrixAnalytics.newRevenueByName("subscription_renewal", renewalAmount, RevenueCurrency.USD);

بهترین شیوه‌ها برای ردیابی ایونت ها

1. استفاده از نام‌های ثابت برای ایونت ها

برای اطمینان از پیوستگی در تحلیل‌ها، نام‌گذاری ایونت ها را در تمامی نسخه‌های اپلیکیشن ثابت نگه دارید:

// خوب: نام‌گذاری ثابت MetrixAnalytics.newEvent("checkout_complete"); MetrixAnalytics.newEvent("checkout_complete", attributes); // بد: تغییر نام ایونت ها MetrixAnalytics.newEvent("checkout_complete"); // نسخه 1 MetrixAnalytics.newEvent("purchase_complete"); // نسخه 2 - ردیابی متفاوت

2. زمان‌بندی ایونت

ایونت ها را بلافاصله پس از وقوع تعامل کاربر ثبت کنید:

// خوب: ایونت پس از عملیات موفقیت‌آمیز ثبت می‌شود if (submitForm()) { MetrixAnalytics.newEvent("form_submitted"); } // بد: ایونت قبل از اعتبارسنجی ثبت می‌شود MetrixAnalytics.newEvent("form_submitted"); submitForm(); // ممکن است با شکست مواجه شود

3. مدیریت محترمانه شکست‌ها

همیشه قبل از ثبت ایونت ها، تکمیل موفقیت‌آمیز را بررسی کنید:

// خوب: فقط در صورت موفقیت ثبت می‌شود ApiResponse response = makeApiCall(); if (response.isSuccessful()) { MetrixAnalytics.newEvent("api_call_successful"); } else { MetrixAnalytics.newEvent("api_call_failed"); }

4. به‌روزرسانی‌های دسته‌ای ویژگی‌ها

ویژگی‌های مرتبط را در یک ایونت واحد گروه بندی کنید، نه در چندین ایونت جداگانه:

// خوب: تمام داده‌ها در یک ایونت Map<String, Object> attributes = new HashMap<>(); attributes.put("category", "electronics"); attributes.put("brand", "Samsung"); attributes.put("price", 999.99); MetrixAnalytics.newEvent("product_viewed", attributes); // بد: چندین ایونت برای داده‌های مرتبط MetrixAnalytics.newEvent("product_category_viewed"); MetrixAnalytics.newEvent("product_brand_viewed"); MetrixAnalytics.newEvent("product_price_viewed");

5. اجتناب از اطلاعات قابل شناسایی شخصی (PII)

PII را در ویژگی‌های ایونت قرار ندهید:

// بد: شامل PII است Map<String, Object> attributes = new HashMap<>(); attributes.put("user_name", "John Doe"); // ✗ PII attributes.put("email", "john@example.com"); // ✗ PII attributes.put("phone", "989123456789"); // ✗ PII // خوب: به جای آن از متدهای ردیابی کاربر استفاده کنید MetrixAnalytics.User.setFirstName("John"); MetrixAnalytics.User.setEmail("john@example.com"); // ویژگی‌های ایونت با داده‌های غیر-PII Map<String, Object> attributes = new HashMap<>(); attributes.put("user_type", "premium"); // ✓ غیر-PII attributes.put("registration_age_days", 365); // ✓ غیر-PII

6. محدود کردن ایونت های با فرکانس بالا

از ردیابی ایونت هایی با فرکانس بسیار بالا (مثلاً هر حرکت پیکسل اسکرول) خودداری کنید:

// بد: بسیار پرفرکانس onScroll(() -> MetrixAnalytics.newEvent("scroll")); // خوب: ردیابی نقاط عطف معنی‌دار if (scrollPercentage == 25) { MetrixAnalytics.newEvent("scroll_25_percent"); } if (scrollPercentage == 50) { MetrixAnalytics.newEvent("scroll_50_percent"); }

7. استفاده از واحد پول صحیح برای درآمد

همیشه واحد پول صحیح را مشخص کنید تا گزارش‌دهی دقیق درآمد تضمین شود:

// دریافت واحد پول ترجیحی کاربر یا تنظیمات اپلیکیشن String userCurrency = preferenceManager.getCurrency(); // ثبت با واحد پول صحیح MetrixAnalytics.newRevenue("purchase", amount, RevenueCurrency.valueOf(userCurrency));

یکپارچه‌سازی WebView

SDK متریکس هنگام استفاده از WebView bridge، ردیابی ایونت ها را به طور خودکار بین کد native و JavaScript همگام‌سازی می‌کند.

راه‌اندازی

public class WebViewActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); WebView webView = findViewById(R.id.webView); webView.getSettings().setJavaScriptEnabled(true); // ثبت analytics bridge MetrixAnalyticsBridge.registerAndGetInstance(webView); webView.loadUrl("file:///android_asset/page.html"); } }

مثال جاوااسکریپت

<!DOCTYPE html> <html> <head> <script type="text/javascript" src="metrix_analytics.js"></script> </head> <body> <script> // ایونت ساده document.getElementById('buyBtn').onclick = function() { MetrixAnalytics.newEvent('purchase_clicked'); }; // ایونت همراه با ویژگی‌ها document.getElementById('shareBtn').onclick = function() { var attrs = { 'platform': 'facebook', 'content_id': 'POST-001' }; MetrixAnalytics.newEvent('content_shared', JSON.stringify(attrs)); }; // ایونت درآمدی document.getElementById('subscribeBtn').onclick = function() { MetrixAnalytics.newRevenue('subscription_purchase', 99.99, 'USD'); }; </script> </body> </html>

تضمین‌های ارسال ایونت

  • ایونت های سفارشی: با اولویت WHENEVER ارسال می‌شوند - در حالت آفلاین صف‌بندی شده، در حالت آنلاین ارسال می‌شوند.
  • ایونت های درآمدی: با اولویت WHENEVER ارسال می‌شوند - تضمین می‌کند هیچ داده درآمدی از دست نرود.
  • ایونت های سیستمی: با اولویت IMMEDIATE ارسال می‌شوند - قبل از دسته‌بندی با سایر ایونت ها ارسال می‌شوند.

محدودیت‌ها و کنترل فرکانس ایونت

  • حداکثر ویژگی در هر ایونت : 50
  • حداکثر طول کلید ویژگی: 512 بایت
  • حداکثر طول مقدار ویژگی: 512 بایت
  • محدودیت نرخ ارسال برای هر ایونت وجود ندارد - ایونت ها را در صورت نیاز ارسال کنید، اما از ایونت های با فرکانس بالا خودداری کنید (به بخش بهترین شیوه‌ها مراجعه کنید).