تمام فعالیت های متریکس در سطح native صورت میگیرد و محتوای وب از طریق پل(Bridge) با SDK اندروید در ارتباط است. به همین دلیل توصیه می شود قبل از پیادهسازی سایر بخش های مستندات مربوط به اندروید مطالعه شود.
پروژه نمونه پیادهسازی webview متریکس را میتوانید در اینجا ملاحظه نمایید.
نصب و راهاندازی
مستندات نصب و راهاندازی اولیه در بخش Getting Started آمده است.
اتصال bridge متریکس به webview
پس از انجام مراحل اولیه:
- متد
webView.getSettings().setJavaScriptEnabled(true)
را جهت فعالسازیjavascript
درwebview
فراخوانی کنید. - متد
MetrixBridge.registerAndGetInstance(webview)
را جهت فعالسازی واسط متریکس میان کتابخانه وwebview
فراخوانی کنید. - در صورت نیاز به تغییر
webview
میتوانید متدMetrixBridge.setWebView(newWebview)
را فراخوانی کنید. - جهت غیرفعال کردن واسط، متد
MetrixBridge.unregister()
را فراخوانی کنید.
با انجام این مراحل، کلاس Activity
شما مشابه قطعه کد زیر خواهد بود:
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
WebView webView = (WebView) findViewById(R.id.webView);
webView.getSettings().setJavaScriptEnabled(true);
webView.setWebChromeClient(new WebChromeClient());
webView.setWebViewClient(new WebViewClient());
MetrixAnalyticsBridge.registerAndGetInstance(webview);
MetrixAttributionBridge.registerAndGetInstance(webview);
try {
webView.loadUrl("your webview content");
} catch (Exception e) {
e.printStackTrace();
}
}
@Override
protected void onDestroy() {
MetrixAnalyticsBridge.unregister();
MetrixAttributionBridge.unregister();
super.onDestroy();
}
}
به این ترتیب کتابخانه متریکس با موفقیت در اپلیکیشن شما فعال شده است و واسط Javascript
متریکس به عنوان راه ارتباطی میان کتابخانه متریکس و صفحات بارگذاری شده شما در webview
عمل خواهد کرد.
جهت ارتباط با کتابخانه متریکس و استفاده از امکانات آن مانند ارسال رویداد، در فایل HTML
خود، فایل Javascript
متریکس را که در پوشه assets
نمونه پیادهسازی شده
قرار دارد به صورت زیر import کنید:
<script type="text/javascript" src="metrix_analytics.js"></script>
<script type="text/javascript" src="metrix_attribution.js"></script>
به این ترتیب میتوانید در فایل HTML
خود متدهای MetrixAnalytics
یا MetrixAttribution
را فراخوانی کنید.
کاربر (user)
شناساندن کاربر به متریکس و ساخت User
برای شناساندن کاربری که در حال استفاده از وبسایت شماست به سرورهای متریکس با هدف اینکه متریکس تشخیص دهد کدام کاربری که در حال استفاده از وبسایت شماست اکشنهای دریافتی را انجام میدهد باید متد زیر را قبل فراخوانی سایر متدها صدا بزنید. این متد یک User
سمت سرورهای متریکس ساخته که از طریق پنل کاربری متریکس در قسمت User Lookup
قابل دسترس است.
MetrixAnalytics.setUserCustomId('userId'); // call when user tries to login in your system and set userId value that user already knows in your system
MetrixAnalytics.deleteUserCustomId(); // call when your user goes to logout in your system
بهروزرسانی اطلاعات User
با استفاده از متدهای زیر میتوانید اطلاعات
User
های موجود در
User Lookup
را بهروزرسانی کنید.
var attributes = {};
attributes['type'] = 'Loyal';
attributes['signup_date'] = '2024-11-20T11:24:03.000Z'; // use ISO 8601 to consider this attribute as a date
MetrixAnalytics.setUserAttributes(attributes);
با استفاده از توابع زیر میتوانید Attribute
های از پیش تعیین شده را به کاربر اختصاص دهید:
MetrixAnalytics.setFirstName('userFirstName');
MetrixAnalytics.setLastName('userLastName');
MetrixAnalytics.setPhoneNumber('phoneNumber');
MetrixAnalytics.setHashedPhoneNumber('hashedPhoneNumber');
MetrixAnalytics.setEmail('email');
MetrixAnalytics.setHashedEmail('hashedEmail');
MetrixAnalytics.setCountry('country');
MetrixAnalytics.setCity('city');
MetrixAnalytics.setRegion('region');
MetrixAnalytics.setLocality('locality');
MetrixAnalytics.setGender(gender); // gender value could be "MALE" , "FEMALE" or "OTHER"
MetrixAnalytics.setBirthday(birthday); // birthday value type should be 'Long' timestamp
توجه: هر رویداد میتواند حداکثر ۵۰ attribute داشته باشد که طول key و value آن حداکثر ۵۱۲ بایت میباشد.
رویداد (event)
هرگونه تعاملی که کاربر با اپلیکیشن شما دارد میتواند به عنوان یک رویداد در پنل و اپلیکیشن شما تعریف شود تا کتابخانه متریکس اطلاعات آماری مربوط به آن را در اختیار شما قرار دهد.
در کتابخانه متریکس دو نوع رویداد قابل تعریف است:
- سفارشی (custom): وابسته به منطق اپلیکیشن شما و تعاملی که کاربر با اپلیکیشن شما دارد میتوانید رویدادهای سفارشی خود را در قالبی که در ادامه شرح داده خواهد شد بسازید و ارسال کنید.
- درآمدی (revenue): نوع خاصی از رویدادهای سفارشی قابل تعریف است که مربوط به میزان درآمد کسب شده در اپلیکیشن شما میباشد و دارای یک مقدار قابل اندازهگیری از جنس درآمد مالی است.
ساختن یک رویداد سفارشی
برای ساخت یک رویداد سفارشی در ابتدا در پنل خود از قسمت مدیریت رویدادها، رویداد موردنظر خود را ثبت کنید و نامک (slug) آن را به عنوان نام رویداد در اپلیکیشن استفاده کنید.
وقوع رویداد به دو صورت میتواند ثبت شود:
۱. ثبت رویداد تنها با استفاده از نامک آن که در پنل معرفی شده است:
MetrixAnalytics.newEvent('my_event_slug');
۲. ثبت رویداد به همراه تعداد دلخواه attribute مربوط به آن:
به عنوان مثال فرض کنید در یک برنامه خرید آنلاین میخواهید یک رویداد سفارشی بسازید:
var attributes = {};
attributes['first_name'] = 'Ali';
attributes['last_name'] = 'Bagheri';
attributes['manufacturer'] = 'Nike';
attributes['product_name'] = 'shirt';
attributes['type'] = 'sport';
attributes['size'] = 'large';
attributes['purchase_date'] = '2024-11-20T11:24:03.000Z'; // use ISO 8601 to consider this attribute as a date
MetrixAnalytics.newEvent('purchase_event_slug', attributes);
ورودیهای متد newEvent در این حالت، بدین شرح هستند:
- ورودی اول: نامک رویداد مورد نظر شما که در پنل متریکس معرفی شده است.
- ورودی دوم: یک
Map<String, Object>
که ویژگیهای یک رویداد را مشخص میکند.
ساختن رویداد درآمدی
با استفاده از این تابع میتوانید یک رویداد درآمدی بسازید. برای این کار در ابتدا در پنل خود از قسمت مدیریت رویدادها، رویداد موردنظر خود را ثبت کنید و نامک (slug) آن را به عنوان نام رویداد در اپلیکیشن استفاده کنید.
MetrixAnalytics.newRevenue('my_event_slug', 12000, 'IRR');
ورودیهای متد newRevenue بدین شرح هستند:
- ورودی اول: نامک رویداد مورد نظر شما که در پنل متریکس معرفی شده است.
- ورودی دوم: یک مقدار عددی است که همان میزان درآمد است.
- ورودی سوم: واحد پول مورد استفاده را تعیین میکند و میتواند سه مقدار IRR (پیشفرض) یا USD و یا EUR را داشته باشد.
- ورودی چهارم: این ورودی دلخواه است و شناسه سفارش را تعیین میکند.
سایر امکانات و قابلیتها
نشست (session)
هر تعاملی که کاربر با یک اپلیکیشن دارد، در قالب یک نشست صورت میگیرد. کتابخانه متریکس اطلاعات مربوط به نشستهای مختلف کاربر در اپلیکیشن شما و بازه زمانی آنها را جمعآوری میکند و در اختیار شما میگذارد.
شناسه نشست
کتابخانه متریکس برای هر نشست یک شناسه منحصر به فرد تولید میکند که میتوانید این شناسه را دریافت نمایید. برای دریافت این شناسه متد زیر را فراخوانی کنید.
MetrixAnalytics.setSessionIdListener(sessionId => {
//TODO
});
شماره نشست جاری
با استفاده از متد زیر میتوانید از شماره نشست جاری کاربر در تمام مدت استفاده خود از اپلیکیشن شما اطلاع پیدا کنید:
MetrixAnalytics.setSessionNumberListener(sessionNumber => {
//TODO
});
دریافت شناسه دستگاههای متریکس
برای هر دستگاهی که اپلیکیشن شما را نصب کند، متریکس یک شناسه منحصر به فرد تولید میکند که شما میتوانید این شناسه را به محض شناسایی دریافت نمایید. برای دسترسی به این شناسه از متد استفاده کنید:
MetrixAttribution.setUserIdListener(userId => {
//TODO
});
نکته: شناسه متریکس زمانی در اختیار شما قرار میگیرید که دستگاه توسط سرویس متریکس شناسایی شده باشد.
دریافت اطلاعات کمپین
با استفاده از متد زیر، میتوانید اطلاعات کمپین تبلیغاتی که در ترکر خود در پنل قرار دادهاید را دریافت کنید.
MetrixAttribution.setOnAttributionChangedListener(attributionData => {
//TODO
});
مدل attributionData
اطلاعات زیر را در اختیار شما قرار می دهد.
attributionData.acquisitionAd; // نام تبلیغ
attributionData.acquisitionAdSet; // گروه تبلیغاتی
attributionData.acquisitionCampaign; // کمپین تبلیغاتی
attributionData.acquisitionSource; // شبکه تبلیغاتی
attributionData.acquisitionSubId; // زیرگروه تبلیغاتی
attributionData.attributionStatus; // وضعیت کاربر در کمپین را مشخص میکند
مقدار AttributionStatus
شامل یکی از موارد زیر است:
ATTRIBUTED
اتربیوت شدهNOT_ATTRIBUTED_YET
هنوز اتربیوت نشدهATTRIBUTION_NOT_NEEDED
نیاز به اتربیوت نداردUNKNOWN
حالت ناشناخته
Deep Linking
اگر شما از ترکر هایی که دیپلینک در آنها فعال است استفاده کنید، میتوانید اطلاعات url دیپلینک و محتوای آن را دریافت کنید. دستگاه بر اساس نصب بودن اپلیکیشن (سناریو استاندارد) یا نصب نبودن اپلیکیشن (سناریو deferred) واکنش نشان میدهد. در صورت نصب بودن اپلیکیشن شما اطلاعات دیپلینک به اپلیکیشن شما ارسال میشود.
پلتفرم اندروید به صورت اتوماتیک سناریو deferred را پشتیبانی نمیکند. در این صورت متریکس سناریو مخصوص به خود را دارد تا بتواند اطلاعات دیپلینک را به اپلیکیشن ارسال کند.
سناریو deferred
این سناریو زمانی رخ میدهد که کاربر روی دیپلینک کلیک میکند ولی اپلیکیشن شما را در زمان کلیک بر روی دستگاه خود نصب ندارد. در این حالت کاربر پس از کلیک، به Google Play هدایت میشود تا اپلیکیشن شما را نصب کند. با نصب اپلیکیشن، در اولین اجرا، اطلاعات دیپلینک به اپلیکیشن داده میشود.
اگر شما قصد دارید که سناریو deferred را کنترل کنید میتوانید از کالبک زیر استفاده نمایید:
MetrixAttribution.setOnDeeplinkResponseListener(deeplink => {
//TODO
});
بعد از این که متریکس اطلاعات دیپلینک را از سرور خود دریافت کرد محتوای آن را به کالبک بالا پاس میدهد. اگر مقدار shouldLaunchDeeplink
برابر true
باشد متریکس به صورت اتوماتیک سناریو استاندارد را اجرا میکند و در غیر این صورت، متریکس فقط اطلاعات را در این کالبک قرار میدهد تا شما بر اساس آن اکشن مورد نظر خود را انجام دهید.
توجه: سناریو deffered تنها در صورت نصب اپلیکیشن از طریق Google Play Store و کافه بازار قابل اجرا میباشد.