این راهنما نحوه ارتقا به نسخه 3 Google Analytics SDK برای اندروید را شرح میدهد.
در یک نگاه: چه جدید در V3 است
APIها در V3 به گونهای اصلاح شدهاند که در پلتفرمهای بومی و وب سازگارتر باشند. همه کاربران V2 باید به این تغییرات توجه داشته باشند:
- بازدیدها اکنون با استفاده از یک روش
send(Map<String, String> parameters)
ارسال میشوند. - حالت اشکال زدایی با
Logger
جایگزین شده است - EasyTracker اکنون
Tracker
را زیر کلاس قرار می دهد که منجر به تغییراتی در رابط کاربری می شود. - جدید: یک پرچم
dryRun
برای جلوگیری از نمایش داده های ارسال شده در گزارش ها اضافه شده است.
برای فهرست کامل تغییرات، به Changelog Android مراجعه کنید.
قبل از اینکه شروع کنی
قبل از شروع بهروزرسانی به نسخه 3، به موارد زیر نیاز دارید:
مسیرها را ارتقا دهید
برای شروع، یک مسیر ارتقا به v3 را از پیاده سازی فعلی خود انتخاب کنید:
- EasyTracker: v1.x تا v3
- EasyTracker: v2.x تا v3
- پیاده سازی سفارشی: v1.x تا v3
- پیاده سازی سفارشی: v2.x تا v3
EasyTracker: v1.x تا v3
توصیه می شود که کاربران EasyTracker v1.x برای شروع استفاده از نسخه 3 با EasyTracker ، راهنمای شروع نسخه 3 را دنبال کنند.
EasyTracker: v2.x تا v3
کاربران EasyTracker v2.x باید این مراحل را برای تکمیل ارتقاء به v3 دنبال کنند:
- به روز رسانی تماس ها به
EasyTracker.getInstance()
برای ارائه یکContext:
// v2 (Old) // EasyTracker.getInstance().activityStart(this);
// v3: EasyTracker.getInstance(this).activityStart(this);
-
EasyTracker
اکنونTracker
را زیرکلاس میکند - تماسهایEasyTracker.getTracker()
را حذف کنید:// v2 (Old) Tracker v2Tracker = EasyTracker.getInstance().getTracker();
// v3 Tracker v3Tracker = EasyTracker.getInstance(this);
- همه روشهای راحتی
send<hit-type>
با روش جدیدsend(Map<String, String> parameters)
جایگزین کنید:// v2 (Old) Tracker v2EasyTracker = EasyTracker.getInstance().getTracker(this); v2EasyTracker.sendView("Home Screen");
// v3 Tracker v3EasyTracker = EasyTracker.getInstance(this); // Set the screen name on the tracker so that it is used in all hits sent from this screen. v3EasyTracker.set(Fields.SCREEN_NAME, "Home Screen"); // Send a screenview. v3EasyTracker.send(MapBuilder .createAppView() .build() );
درباره ارسال داده در نسخه 3 بیشتر بدانید . - پارامتر
ga_debug
EasyTracker را باga_logLevel
جایگزین کنید، و یکی از این مقادیر پرحرفی:verbose
,info
,warning
,error
:<!-- res/values/analytics.xml --> <?xml version="1.0" encoding="utf-8"?> <resources> <string name="ga_trackingId">UA-XXXX-Y</string> <!-- REMOVE: <bool name="ga_debug">true</bool> --> <string name="ga_logLevel">verbose</string> </resources>
برای جزئیات بیشتر به مرجع پارامتر EasyTracker مراجعه کنید. -
GoogleAnalytics.requestAppOptOut()
منسوخ شده است، به جای آن ازGoogleAnalytics.getAppOptOut()
استفاده کنید:// v2 (Old) GoogleAnalytics.getInstance(this).requestAppOptOut(new AppOptOutCallback() { @Override public void reportAppOptOut(boolean optOut) { if (optOut) { ... // Alert the user that they've opted out. } }); }
// v3 boolean optOutPreference = GoogleAnalytics.getInstance(this).getAppOptOut();
- (اختیاری) پارامتر
ga_dryRun
EasyTracker را اضافه کنید و هنگام آزمایش پیاده سازی خود رویtrue
تنظیم کنید تا از نمایش داده های تست در گزارش های تولید خود جلوگیری کنید:
<!-- res/values/analytics.xml --> <?xml version="1.0" encoding="utf-8"?> <resources> <string name="ga_trackingId">UA-XXXX-Y</string> <string name="ga_logLevel">verbose</string> <!-- Prevent data from appearing in reports. Useful for testing. --> <bool name="ga_dryRun">true</bool> </resources>
پیاده سازی سفارشی: v1.x تا v3
کاربران v1.x که از EasyTracker
استفاده نمیکنند، باید راهنمای شروع V3 را دنبال کنند و در صورت نیاز از راهنمای برنامهنویس تنظیمات پیشرفته استفاده کنند.
پیاده سازی سفارشی: v2.x تا v3
کاربران v2.x که از EasyTracker
استفاده نمی کنند باید مراحل زیر را برای تکمیل ارتقاء به نسخه 3 دنبال کنند:
- همه روشهای راحت «send<hit-type>» را با روش جدید
send(Map<String, String> parameters)
جایگزین کنید:// v2 (Old) Tracker v2Tracker = GoogleAnaytics.getInstance(this).getTracker("UA-XXXX-Y"); v2Tracker.sendView("Home Screen");
// v3 Tracker v3Tracker = GoogleAnaytics.getInstance(this).getTracker("UA-XXXX-Y"); // This screen name value will remain set on the tracker and sent with // hits until it is set to a new value or to null. v3Tracker.set(Fields.SCREEN_NAME, "Home Screen"); v3Tracker.send(MapBuilder .createAppView() .build() );
- تماسهای
GoogleAnalytics.setDebug()
را حذف کنید، باGoogleAnalytics.getLogger().setLogLevel()
جایگزین کنید:// V2 (Old) GoogleAnalytics.getInstance(this).setDebug(true);
// V3 GoogleAnalytics.getInstance(this) .getLogger() .setLogLevel(LogLevel.VERBOSE); // VERBOSE | INFO | DEBUG | WARNING
درباره Logger بیشتر بدانید - V3 SDK دیگر به طور خودکار جلسه جدیدی را با باز شدن برنامه شروع نمی کند (به جز زمانی که از EasyTracker استفاده می کنید). اگر میخواهید این رفتار را از اجرای سفارشی v2 حفظ کنید، باید منطق کنترل جلسه خود را زمانی که کاربر برنامه را راهاندازی میکند پیادهسازی کنید:
- (اختیاری) پرچم
dryRun
را هنگام آزمایش تنظیم کنید تا از پردازش داده های آزمایش با گزارش های تولید خود جلوگیری کنید:
package com.example.app; import com.google.analytics.tracking.android.GoogleAnalytics; import com.google.analytics.tracking.android.Tracker; import android.app.Application; public class MyApp extends Application { private static Tracker mTracker; private static final String GA_PROPERTY_ID = "UA-XXXX-Y"; @Override public void onCreate() { super.onCreate(); mTracker = GoogleAnalytics.getInstance(this).getTracker(GA_PROPERTY_ID); // CAUTION: Setting session control directly on the tracker persists the // value across all subsequent hits, until it is manually set to null. // This should never be done in normal operation. // // mTracker.set(Fields.SESSION_CONTROL, "start"); // Instead, send a single hit with session control to start the new session. mTracker.send(MapBuilder .createEvent("UX", "appstart", null, null) .set(Fields.SESSION_CONTROL, "start") .build() ); } }
// When true, dryRun flag prevents data from being processed with reports. GoogleAnalytics.getInstance(this).setDryRun(true);
ارجاع
بخشهای زیر نمونههای مرجعی درباره نحوه تنظیم و ارسال دادهها با استفاده از V3 SDK ارائه میدهند.
ارسال داده با استفاده از Maps در نسخه 3
در V3، داده ها با استفاده از یک متد send()
ارسال می شود که Map
فیلدها و مقادیر Google Analytics را به عنوان آرگومان می گیرد. یک کلاس کاربردی MapBuilder
برای ساده کردن فرآیند بازدید از ساختمان ارائه شده است:
// Sending a screenview in v3 using MapBuilder. Tracker tracker = GoogleAnalytics.getInstance(this).getTracker("UA-XXXX-Y"); tracker.set(Fields.SCREEN_NAME, "Home Screen"); tracker.send(MapBuilder .createAppView() // Creates a Map of hit type 'AppView' (screenview). .set(Fields.customDimension(1), "Premium") // Set any additional fields for this hit. .build() // Build and return the Map to the send method. );
کلاس MapBuilder
را می توان برای ساخت هر یک از انواع ضربه های پشتیبانی شده مانند رویدادها استفاده کرد:
// Sending an event in v3 using MapBuilder.createEvent() tracker.send(MapBuilder .createEvent("UX", "touch", "menuButton", null) .build() );
درباره ارسال داده در نسخه 3 بیشتر بیاموزید .
تنظیم داده ها در ردیاب در نسخه 3
مقادیر نیز ممکن است مستقیماً روی یک Tracker
با استفاده از متد set()
تنظیم شوند. مقادیر تنظیم شده مستقیماً برای همه بازدیدهای بعدی از آن Tracker
اعمال می شود:
// Values set directly on a tracker apply to all subsequent hits. tracker.set(Fields.SCREEN_NAME, "Home Screen"); // This screenview hit will include the screen name "Home Screen". tracker.send(MapBuilder.createAppView().build()); // And so will this event hit. tracker.send(MapBuilder .createEvent("UX", "touch", "menuButton", null) .build() );
برای پاک کردن مقداری که در Tracker
تنظیم شده است، ویژگی را null
کنید:
// Clear the previously-set screen name value. tracker.set(Fields.SCREEN_NAME, null); // Now this event hit will not include a screen name value. tracker.send(MapBuilder .createEvent("UX", "touch", "menuButton", null) .build() );