شروع به کار
میتوانید نمونه پروژه پیادهسازی متریکس را اینجا مشاهده کنید.
نصب و راهاندازی
با دنبال کردن مراحل زیر، کتابخانه متریکس در اپلیکیشن شما فعال و آماده استفاده خواهد شد:
1. بررسی نسخههای Android SDK و Compile
اطمینان حاصل کنید که فایل build.gradle اپلیکیشن شما نسخههای مناسب Android SDK را پیکربندی کرده است:
android {
compileSdkVersion 34 // Required: >= 31 (actual build uses 34)
targetSdkVersion 34 // Recommended
defaultConfig {
minSdkVersion 21 // Minimum supported API level
// ...
}
}2. پیکربندی مخزن Maven
مخزن mavenCentral را به فایل build.gradle پروژه خود در بخش allprojects اضافه کنید:
allprojects {
repositories {
// ...
mavenCentral()
}
}3. اضافه کردن وابستگیهای کتابخانه Metrix
وابستگی مربوط به کتابخانه متریکس را در قسمت dependencies فایل build.gradle اپلیکیشن خود اضافه کنید:(با توجه به استفاده هرکدام از کتابخانههای آنالیتیکس یا اتریبیوشن آنها را اضافه کنید)
// For analytics and marketing automation
implementation 'ir.metrix.analytics:metrix:2.8.2'
// For attribution tracking
implementation 'ir.metrix.attribution:metrix:2.8.2'
// For push notifications (optional)
implementation 'ir.metrix.notification:metrix:2.8.2'4. پیکربندی App ID و API Key در AndroidManifest.xml
شناسه اپلیکیشن Metrix (app id) و کلید API (api key) را در فایل AndroidManifest.xml اپلیکیشن خود قرار دهید:
<manifest>
<application>
...
<!-- خطوط زیر را اضافه کنید و YOUR_APP_ID را جایگزین نمایید -->
<meta-data
android:name="ir.metrix.APPLICATION_ID"
android:value="YOUR_APP_ID" />
<!-- خطوط زیر را اضافه کنید و YOUR_API_KEY را جایگزین نمایید -->
<meta-data
android:name="ir.metrix.API_KEY"
android:value="YOUR_API_KEY" />
</application>
</manifest>این مقادیر را کجا پیدا کنید:
YOUR_APP_ID: شناسه اپلیکیشن شما که از پنل Metrix دریافت کردهاید.YOUR_API_KEY: کلید API شما که از پنل Metrix دریافت کردهاید.
5. بررسی مجوزهای لازم
اطمینان حاصل کنید که مجوزهای زیر در مانیفست اپلیکیشن شما گنجانده شدهاند. ماژول اصلی این مجوزها را بهطور خودکار شامل میشود، اما در مانیفست نهایی ادغام شده (merged manifest) آنها را بررسی کنید:
<manifest>
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="com.google.android.gms.permission.AD_ID" />
</manifest>مجوزهای اضافی برای ماژولهای خاص:
در صورت استفاده از ماژول Notification:
<uses-permission android:name="android.permission.POST_NOTIFICATIONS" />
<uses-permission
android:name="android.permission.BROADCAST_CLOSE_SYSTEM_DIALOGS"
tools:ignore="ProtectedPermissions" />6. پیکربندی ProGuard/R8 (برای Gradle 8 به بالا)
اگر از Gradle نسخه 8 یا بالاتر استفاده میکنید، موارد زیر را به فایل پیکربندی ProGuard (proguard-rules.pro) خود اضافه کنید:
-keep class ir.metrix.** { *; }
-dontwarn retrofit2.**
-keep class retrofit2.** { *; }ماژول اصلی قبلاً از طریق proguard-consumer-common.pro شامل قوانین ProGuard مصرفکننده است، بنابراین اینها اغلب بهطور خودکار در بیلد شما ادغام میشوند.
پیکربندی اختیاری
فعال کردن تایید امضای SDK
برای افزایش امنیت کتابخانه، تایید امضای SDK را فعال کنید:
- SDK Signature را در پنل Metrix خود فعال کنید.
- شناسه امضا را از ستون Encoded در پنل خود بازیابی کنید.
- امضا را به مانیفست اپلیکیشن خود اضافه کنید:
Metrix.setSignature("YOUR_SIGNATURE");کاهش حجم کتابخانه
برای کاهش حجم APK با حذف کتابخانههای بومی (native libraries)، موارد زیر را به فایل build.gradle اپلیکیشن خود اضافه کنید:
android {
packaging {
jniLibs {
excludes += "/lib/**/libconscrypt_jni.so"
}
}
}فعال کردن حالت توسعهدهنده (Developer Mode)
میتوانید کتابخانه Metrix را در طول توسعه و تست غیرفعال کنید تا آمار و ایونت ها ثبت نشوند.
متادیتای زیر را به فایل AndroidManifest.xml اپلیکیشن خود اضافه کنید:
<manifest>
<application>
...
<!-- خطوط زیر را اضافه کنید -->
<meta-data
android:name="metrix_developer_mode"
android:value="true" />
</application>
</manifest>استفاده از Build Variants: علاوه بر این، با استفاده از manifestPlaceholders در اندروید، میتوانید این مقدار را در فایل gradle اپلیکیشن خود برای انواع بیلد (build variants) مختلف مدیریت کنید. در مثال زیر، کتابخانه Metrix در واریانت “develop” غیرفعال و در واریانت “release” فعال خواهد شد:
<!-- AndroidManifest.xml -->
<manifest>
<application>
<meta-data
android:name="metrix_developer_mode"
android:value="${metrixDeveloperMode}" />
</application>
</manifest>// build.gradle
android {
buildTypes {
debug {
manifestPlaceholders = [metrixDeveloperMode: "true"]
}
release {
manifestPlaceholders = [metrixDeveloperMode: "false"]
}
}
}استفاده از Core API
پس از مقداردهی اولیه، میتوانید از APIهای عمومی زیر از کلاس Metrix استفاده کنید:
// تنظیم امضای SDK برای احراز هویت
Metrix.setSignature(String signature);
// تنظیم یک listener برای اطلاع از تغییرات user ID
Metrix.setUserIdListener(UserIdListener listener);
// تنظیم یک user ID سفارشی برای کاربر شما
Metrix.setUserCustomId(String id);
// حذف user ID سفارشی
Metrix.deleteUserCustomId();یکپارچهسازی WebView
SDK متریکس از یکپارچهسازی جاوااسکریپت در محیطهای WebView پشتیبانی میکند. تمام فعالیتهای متریکس در سطح native انجام میشوند و محتوای وب از طریق یک bridge با آن ارتباط برقرار میکند.
مراحل راهاندازی
- جاوااسکریپت را در WebView خود فعال کنید:
webView.getSettings().setJavaScriptEnabled(true);- bridge متریکس را برای ماژولهایی که استفاده میکنید ثبت کنید:
MetrixAnalyticsBridge.registerAndGetInstance(webView);
MetrixAttributionBridge.registerAndGetInstance(webView);- اگر نیاز به تغییر WebView دارید، bridge را بهروزرسانی کنید:
MetrixBridge.setWebView(newWebView);- هنگام از بین بردن WebView یا activity، ثبت (unregister) را انجام دهید:
@Override
protected void onDestroy() {
MetrixAnalyticsBridge.unregister();
MetrixAttributionBridge.unregister();
super.onDestroy();
}مثال کامل WebView
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
WebView webView = findViewById(R.id.webView);
webView.getSettings().setJavaScriptEnabled(true);
webView.setWebChromeClient(new WebChromeClient());
webView.setWebViewClient(new WebViewClient());
// ثبت bridgeهای Metrix
MetrixAnalyticsBridge.registerAndGetInstance(webView);
MetrixAttributionBridge.registerAndGetInstance(webView);
try {
webView.loadUrl("file:///android_asset/your_page.html");
} catch (Exception e) {
e.printStackTrace();
}
}
@Override
protected void onDestroy() {
MetrixAnalyticsBridge.unregister();
MetrixAttributionBridge.unregister();
super.onDestroy();
}
}یکپارچهسازی جاوااسکریپت
به این ترتیب، کتابخانه Metrix با موفقیت در اپلیکیشن شما فعال شده است و رابط جاوااسکریپت Metrix به عنوان پل ارتباطی بین کتابخانه Metrix و صفحات بارگذاری شده شما در webview عمل خواهد کرد.
برای تعامل با کتابخانه Metrix و استفاده از ویژگیهای آن، مانند ارسال ایونت ها، فایل جاوااسکریپت Metrix را در فایل HTML خود وارد کنید. این فایل در پوشه assets قرار دارد و میتوانید آن را در نمونه پیادهسازی مشاهده کنید . آن را به صورت زیر وارد کنید:
<script type="text/javascript" src="metrix_analytics.js"></script>
<script type="text/javascript" src="metrix_attribution.js"></script>برای فایلهای جاوااسکریپت و مثالهای استفاده، به نمونه پیادهسازی مراجعه کنید.
پس از وارد کردن، میتوانید متدهای MetrixAnalytics و MetrixAttribution را مستقیماً از کد جاوااسکریپت خود فراخوانی کنید.
عیبیابی
مقداردهی اولیه SDK با شکست مواجه میشود
علائم: اپلیکیشن هنگام راهاندازی کرش میکند یا قابلیتهای Metrix در دسترس نیستند.
دلایل:
ir.metrix.APPLICATION_IDدر مانیفست وجود ندارد یا نامعتبر است.ir.metrix.API_KEYدر مانیفست وجود ندارد یا نامعتبر است.- مشکلات پیکربندی ProGuard (کلاسها مبهم شدهاند/حذف شدهاند).
metrix_developer_modeفعال است.
راهحلها:
- بررسی کنید که
APPLICATION_IDوAPI_KEYبه درستی در AndroidManifest.xml تنظیم شده باشند. - بررسی کنید که قوانین ProGuard شما شامل:
-keep class ir.metrix.** { *; }باشد. - لاگکت (logcat) را برای پیامهای خطای خاص از تگ
MetrixیاMetrixInitبررسی کنید. - اگر میخواهید SDK کار کند، حالت توسعهدهنده را غیرفعال کنید.
مجوز AD_ID گم شده است
علائم: هشدار بیلد یا زمان اجرا (runtime warnings) درباره مجوز AD_ID.
راهحل: اطمینان حاصل کنید که مانیفست شما شامل موارد زیر است:
<uses-permission android:name="com.google.android.gms.permission.AD_ID" />برای مثالهای کامل و کاربردی، به نمونه پیادهسازی مراجعه کنید.