پروژه نمونه پیادهسازی متریکس در flutter را میتوانید در اینجا ملاحظه نمایید.
اضافهکردن کتابخانه متریکس به پروژه
وابستگی پلاگین متریکس را به فایل pubspec.yaml
پروژه خود اضافه و سپس دستور flutter pub get
را اجرا کنید.
dependencies:
metrix_analytics: ^2.2.9
راهاندازی کتابخانه در اپلیکیشن
بسته به پلتفرم هدف برنامه خود مراحل زیر را جهت فعالسازی انجام دهید:
راهاندازی برای اپلیکیشن Android
۱. شناسه اپلیکیشن (
app id
) متریکس را در فایل AndroidManifest.xml
اپلیکیشن خود قرار دهید:
<manifest>
...
<application>
...
<!-- خطوط زیر را اضافه کنید و YOUR_APP_ID را جایگزین نمایید -->
<meta-data
android:name="ir.metrix.APPLICATION_ID"
android:value="YOUR_APP_ID" />
</application>
</manifest>
YOUR_APP_ID
: شناسه اپلیکیشن شما که از پنل متریکس دریافت میکنید.
Note: فایل AndroidManifest.xml
در مسیر android -> app -> src -> main
قرار دارد.
۲. کلید ایپیآی (
api key
) متریکس را در فایل AndroidManifest.xml
اپلیکیشن خود قرار دهید:
<manifest>
...
<application>
...
<!-- خطوط زیر را اضافه کنید و YOUR_API_KEY را جایگزین نمایید -->
<meta-data
android:name="ir.metrix.API_KEY"
android:value="YOUR_API_KEY" />
</application>
</manifest>
YOUR_API_KEY
: کلید ایپیآی شما که از پنل متریکس دریافت میکنید.
۳. شما باید با فعالسازی قابلیت sdk signature در پنل خود و دریافت شناسه مخصوص خود، امنیت ارتباط و انتقال اطلاعات را افزایش داده و از سلامت آمار اپلیکیشن خود اطمینان بیشتری حاصل کنید.
پس از فعالسازی
sdk signature
در پنل خود، از ستون
Encoded
شناسه مربوط به
signature
را دریافت و به شکل زیر در فایل
AndroidManifest.xml
برنامه خود قرار دهید:
<manifest>
...
<application>
...
<!-- خطوط زیر را اضافه کنید و YOUR_SIGNATURE را جایگزین نمایید -->
<meta-data
android:name="ir.metrix.SIGNATURE"
android:value="YOUR_SIGNATURE" />
</application>
</manifest>
راهاندازی برای اپلیکیشن iOS
۱. جهت دریافت وابستگیهای متریکس به مسیر اپلیکیشن iOS در پروژه خود رفته و دستور نصب پاد را اجرا نمایید:
cd ios
pod install
۲. در ابتداییترین بخش اجرای اپلیکیشن خود با فراخوانی متد زیر، کتابخانه متریکس را فعالسازی کنید:
Metrix.initialize("APP_ID");
APP_ID
: کلید اپلیکیشن شما که از پنل متریکس دریافت میکنید.
امکانات و قابلیتها
نشست (session)
هر تعاملی که کاربر با یک اپلیکیشن دارد، در قالب یک نشست صورت میگیرد. کتابخانه متریکس اطلاعات مربوط به نشستهای مختلف کاربر در اپلیکیشن شما و بازه زمانی آنها را جمعآوری میکند و در اختیار شما میگذارد.
شناسه نشست
کتابخانه متریکس برای هر نشست یک شناسه منحصر به فرد تولید میکند که میتوانید این شناسه را دریافت نمایید. برای دریافت این شناسه متد زیر را فراخوانی کنید.
Metrix.setSessionIdListener().listen((id) => {
// TODO
});
شماره نشست جاری
با استفاده از متد زیر میتوانید از شماره نشست جاری کاربر در تمام مدت استفاده خود از اپلیکیشن شما اطلاع پیدا کنید:
Metrix.setSessionNumberListener().listen((sessionNum) => {
// TODO
});
رویداد (event)
هرگونه تعاملی که کاربر با اپلیکیشن شما دارد میتواند به عنوان یک رویداد در پنل و اپلیکیشن شما تعریف شود تا کتابخانه متریکس اطلاعات آماری مربوط به آن را در اختیار شما قرار دهد.
در کتابخانه متریکس دو نوع رویداد قابل تعریف است:
- سفارشی (custom): وابسته به منطق اپلیکیشن شما و تعاملی که کاربر با اپلیکیشن شما دارد میتوانید رویدادهای سفارشی خود را در قالبی که در ادامه شرح داده خواهد شد بسازید و ارسال کنید.
- درآمدی (revenue): نوع خاصی از رویدادهای سفارشی قابل تعریف است که مربوط به میزان درآمد کسب شده در اپلیکیشن شما میباشد و دارای یک مقدار قابل اندازهگیری از جنس درآمد مالی است.
ساختن یک رویداد سفارشی
برای ساخت یک رویداد سفارشی در ابتدا در پنل خود از قسمت مدیریت رویدادها، رویداد موردنظر خود را ثبت کنید و نامک (slug) آن را به عنوان نام رویداد در اپلیکیشن استفاده کنید.
وقوع رویداد به دو صورت میتواند ثبت شود:
۱. ثبت رویداد تنها با استفاده از نامک آن که در پنل معرفی شده است:
Metrix.newEvent("my_event_slug");
۲. ثبت رویداد به همراه تعداد دلخواه attribute مربوط به آن:
به عنوان مثال فرض کنید در یک برنامه خرید آنلاین میخواهید یک رویداد سفارشی بسازید:
Map<String, String> attributes = new Map();
attributes["first_name"] = "Ali";
attributes["last_name"] = "Bagheri";
attributes["manufacturer"] = "Nike";
attributes["product_name"] = "shirt";
attributes["type"] = "sport";
attributes["size"] = "large";
Metrix.newEvent("purchase_event_slug", attributes);
ورودیهای متد newEvent در این حالت، بدین شرح هستند:
- ورودی اول: نامک رویداد مورد نظر شما که در پنل متریکس معرفی شده است.
- ورودی دوم: یک
Map<String, String>
که ویژگیهای یک رویداد را مشخص میکند.
مشخص کردن Attributeهای پیشفرض همهی رویدادها
با استفاده از این تابع میتوانید به تعداد دلخواه Attribute
به همهی رویدادهای خود اضافه کنید:
Map<String, String> attributes = new Map();
attributes["manufacturer"] = "Nike";
Metrix.addUserAttributes(attributes);
با استفاده از توابع زیر میتوانید Attribute
های از پیش تعیین شده را به کاربر اختصاص دهید:
Metrix.setUserCustomId('userId'); // call when user tries to login in your system and set userId value that user already knows in your system
Metrix.deleteUserCustomId(); // call when your user goes to logout in your system
Metrix.setUserFirstName('userFirstName');
Metrix.setUserLastName('userLastName');
Metrix.setUserPhoneNumber('phoneNumber');
Metrix.setUserHashedPhoneNumber('hashedPhoneNumber');
Metrix.setUserEmail('email');
Metrix.setUserHashedEmail('hashedEmail');
Metrix.setUserCountry('country');
Metrix.setUserCity('city');
Metrix.setUserRegion('region');
Metrix.setUserLocality('locality');
Metrix.setUserGender(gender); // gender value could be "MALE" , "FEMALE" or "OTHER"
Metrix.setUserBirthday(birthday); // birthday value type should be 'Long' timestamp
Metrix.setUserFcmToken('fcmToken');
Metrix.userChannelEnabled(channel); // channel value could be "SMS", "PUSH" or "EMAIL"
Metrix.userChannelDisabled(channel); // channel value could be "SMS", "PUSH" or "EMAIL"
توجه: هر رویداد میتواند حداکثر ۵۰ attribute داشته باشد که طول key و value آن حداکثر ۵۱۲ بایت میباشد.
ساختن رویداد درآمدی
با استفاده از این تابع میتوانید یک رویداد درآمدی بسازید. برای این کار در ابتدا در پنل خود از قسمت مدیریت رویدادها، رویداد موردنظر خود را ثبت کنید و نامک (slug) آن را به عنوان نام رویداد در اپلیکیشن استفاده کنید.
Metrix.newRevenue("my_event_slug", 12000, currency: 0, orderId: "myOrderId");
ورودیهای متد newRevenue بدین شرح هستند:
- ورودی اول: نامک رویداد مورد نظر شما که در پنل متریکس معرفی شده است.
- ورودی دوم: یک مقدار عددی است که همان میزان درآمد است.
- ورودی سوم: واحد پول مورد استفاده را تعیین میکند و میتواند سه مقدار 0 (ریال) (پیشفرض) یا 1 (دلار) و یا 3 (یورو) را داشته باشد.
- ورودی چهارم: این ورودی دلخواه است و شناسه سفارش را تعیین میکند.
دریافت شناسه دستگاههای متریکس
برای هر دستگاهی که اپلیکیشن شما را نصب کند، متریکس یک شناسه منحصر به فرد تولید میکند که شما میتوانید این شناسه را به محض شناسایی دریافت نمایید. برای دسترسی به این شناسه از متد استفاده کنید:
Metrix.getUserId().listen((id) => {
// TODO
});
نکته: شناسه متریکس زمانی در اختیار شما قرار میگیرید که دستگاه توسط سرویس متریکس شناسایی شده باشد.
شمارش پاک کردن اپلیکیشن Android
متریکس برای شمارش پاک شدن اپلیکشن شما از ارسال silent push استفاده میکند.
شما باید برای استفاده از این ابزار از Firebase Cloud Messaging (FCM) استفاده نمایید.
مراحل زیر را دنبال نمایید:
- وارد کردن
server key
وsender id
پروژه فایربیس در پنل متریکس
در پنل متریکس به تنظیمات اپلیکیشن خود رفته و سربرگ Push Configuration را انتخاب کنید.
در این صفحه
server key
و
sender id
پروژه فایربیس خود را در فیلد های مربوطه وارد کنید و با کلیک بر روی دکمه
save
مقادیر را ذخیره کنید.
این مقادیر را میتوانید از کنسول فایربیس خود در بخش project settings در سربرگ Cload Messaging دریافت نمایید.
- فعالسازی شمارش حذف
پس از وارد کردن
server key
و
sender id
در پنل متریکس، با روشن کردن toggle مربوطه، شمارش حذف را فعال کنید.
- ارسال توکن پوش در اپلیکیشن
پس از پیادهسازی FCM در اپلیکیشن خود، به هنگام دریافت توکن پوشنوتیفیکیشن، با فراخوانی متد زیر، این توکن را برای متریکس ارسال نمایید:
Metrix.setPushToken(token);
دریافت اطلاعات کمپین
با استفاده از متد زیر، میتوانید اطلاعات کمپین تبلیغاتی که در ترکر خود در پنل قرار دادهاید را دریافت کنید.
Metrix.getAttributionData().listen((metrixAttribution) => {
// TODO
});
مدل metrixAttribution
اطلاعات زیر را در اختیار شما قرار می دهد.
metrixAttribution.acquisitionAd // نام تبلیغ
metrixAttribution.acquisitionAdSet // گروه تبلیغاتی
metrixAttribution.acquisitionCampaign // کمپین تبلیغاتی
metrixAttribution.acquisitionSource // شبکه تبلیغاتی
metrixAttribution.acquisitionSubId // زیرگروه تبلیغاتی
metrixAttribution.attributionStatus // وضعیت کاربر در کمپین را مشخص میکند
مقدار AttributionStatus
شامل یکی از موارد زیر است:
ATTRIBUTED
اتربیوت شدهNOT_ATTRIBUTED_YET
هنوز اتربیوت نشدهATTRIBUTION_NOT_NEEDED
نیاز به اتربیوت نداردUNKNOWN
حالت ناشناخته
Deep Linking در اپلیکیشن Android
اگر شما از ترکر هایی که دیپلینک در آنها فعال است استفاده کنید، میتوانید اطلاعات url دیپلینک و محتوای آن را دریافت کنید. دستگاه بر اساس نصب بودن اپلیکیشن (سناریو استاندارد) یا نصب نبودن اپلیکیشن (سناریو deferred) واکنش نشان میدهد. در صورت نصب بودن اپلیکیشن شما اطلاعات دیپلینک به اپلیکیشن شما ارسال میشود.
پلتفرم اندروید به صورت اتوماتیک سناریو deferred را پشتیبانی نمیکند. در این صورت متریکس سناریو مخصوص به خود را دارد تا بتواند اطلاعات دیپلینک را به اپلیکیشن ارسال کند.
سناریو استاندارد
برای پیاده سازی سناریو استاندارد میتوانید از این پکیج استفاده کنید،
سناریو deferred
این سناریو زمانی رخ میدهد که کاربر روی دیپلینک کلیک میکند ولی اپلیکیشن شما را در زمان کلیک بر روی دستگاه خود نصب ندارد. در این حالت کاربر پس از کلیک، به Google Play هدایت میشود تا اپلیکیشن شما را نصب کند. با نصب اپلیکیشن، در اولین اجرا، اطلاعات دیپلینک به اپلیکیشن داده میشود.
اگر شما قصد دارید که سناریو deferred را کنترل کنید میتوانید از کالبک زیر استفاده نمایید:
Metrix.shouldLaunchDeeplink = true;
Metrix.getDeeplinkResponse().then((deeplink) => {
// TODO
});
بعد از این که متریکس اطلاعات دیپلینک را از سرور خود دریافت کرد محتوای آن را به کالبک بالا پاس میدهد. اگر مقدار shouldLaunchDeeplink
برابر true
باشد متریکس به صورت اتوماتیک سناریو استاندارد را اجرا میکند و در غیر این صورت، متریکس فقط اطلاعات را در این کالبک قرار میدهد تا شما بر اساس آن اکشن مورد نظر خود را انجام دهید.
توجه: سناریو deffered تنها در صورت نصب اپلیکیشن از طریق Google Play Store قابل اجرا میباشد.
مشخص کردن tracker پیشفرض
شما میتوانید برای کاربرانی که نصب آنها از یک کلیک ناشی نمیشود ترکر داشته باشید، به این منظور باید شناسه مربوط به ترکر خود را که در پنل تعریف کردهاید در اپلیکیشن قرار دهید.
کاربرد این قابلیت برای زمانی است که قصد انتشار مستقیم فایل APK برنامه خود را دارید و میخواهید آمار نصبهای برنامه از طریق این انتشار را در متریکس به تفکیک داشته باشید.
توجه: تحت هیچ شرایطی اپلیکیشن خود را با ترکر پیشفرض روی استور منتشر نکنید. در این صورت همه نصبهای ارگانیک شما نیز در متریکس روی ترکر مذکور شمرده میشود.
فعالسازی برای اپلیکیشن Android
شناسه ترکر را به شکل زیر در فایل
AndroidManifest.xml
برنامه خود قرار دهید:
<manifest>
...
<application>
...
<!-- خطوط زیر را اضافه کنید و شناسه را جایگزین نمایید -->
<meta-data
android:name="metrix_trackerToken"
android:value="TOKEN" />
</application>
</manifest>
فعالسازی برای اپلیکیشن iOS
متد زیر را فراخوانی کنید:
Metrix.setDefaultTracker("trackerToken");
تفکیک نصبهای organic براساس استورهای مختلف
اگر شما میخواهید اپلیکیشن خود را در استور های مختلف مانند کافه بازار، گوگل پلی و … منتشر کنید، میتوانید مشاهده کنید که کاربر از کدام استور ( مثلا کافه بازار، گوگل پلی، مایکت، اول مارکت و وبسایت … ) اپلیکیشن را نصب کرده و منبع نصبهای ارگانیک خود را شناسایی کنید.
برای این منظور، نیاز است که برای اپلیکیشن خود جهت انتشار در استورهای مختلف، بیلدهای جداگانه بسازید و در هر بیلد نام استور مربوط را تنظیم نمایید.
فعالسازی برای اپلیکیشن Android
نام استور را به شکل زیر در فایل
AndroidManifest.xml
برنامه خود قرار دهید:
<manifest>
...
<application>
...
<!-- خطوط زیر را اضافه کنید و نام استور را جایگزین نمایید -->
<meta-data
android:name="metrix_storeName"
android:value="STORE_NAME" />
</application>
</manifest>
فعالسازی برای اپلیکیشن iOS
متد زیر را فراخوانی کنید:
Metrix.setStore("store name");
پیادهسازی سرویس پوش نوتیفیکیشن
-
برای شروع فایل
google-services.json
را از کنسول فایربیس دانلود کرده و در پروژه قرار دهید -
همچنین نیاز به وارد کردن Push Credentials پروژه فایربیس در پنل متریکس میباشد
در پنل متریکس به تنظیمات اپلیکیشن خود رفته و سربرگ Push Configuration را انتخاب کنید. در این صفحه Push Configuration به دوبخش تقسیم شده، مدل جدید و قدیمی(legacy) که با توجه به پایان api قدیمی فایربیس اکیدا توصیه می شود از هر دو کانفیگ جدید و قدیمی استفاده کنید. تنظیمات پروژه فایربیس خود را در فیلد های مربوطه وارد کنید و با کلیک بر روی دکمه save مقادیر را ذخیره کنید.
تنظیمات جدید
برای دریافت فایل Service account Data میتوانید از کنسول فایربیس خود در بخش project settings در سربرگ Service Accounts دکمه generate new private key را بزنید.
تنظیمات قدیمی(legacy)
مقادیر server key
و sender id
را میتوانید از کنسول فایربیس خود در بخش project settings در سربرگ Cloud Messaging دریافت نمایید.
سپس:
۱.کد زیر را در فایل gradle.properties
اپلیکیشن اندروید خود اضافه کنید:
metrix.notitifcation.enable=true
۲. کلاس زیر را به اپلیکیشن اندروید خود اضافه کنید (به تغییرات مانیفست را هم اعمال کنید)
class CustomFirebaseMessagingService: FirebaseMessagingService() {
override fun onMessageReceived(message: RemoteMessage) {
if (MetrixNotification.onMessageReceived(message)) return
// here you can process your own fcm messages
}
}
Note: در حال حاضر امکان دریافت نوتیفیکیشن صرفا برای کاربران شناخته شده در متریکس وجود دارد, برای این کار باید کاربر مورد نظر خصیصه customUserId
را داشته باشد
۳. هنگام لاگین کاربر customUserId
را مقدار دهی کرده و هنگام لاگاوت آن را حذف کنید :
Metrix.setUserCustomId('yourCustomUserId');
Metrix.deleteUserCustomId();