이 가이드에서는 Android용 Google 애널리틱스 SDK의 V3으로 업그레이드하는 방법을 설명합니다.
한눈에 보기: V3의 새로운 기능
V3의 API는 리팩터링 후 네이티브 플랫폼과 웹 플랫폼 전체에서 보다 일관되도록 리팩터링했습니다. 모든 V2 사용자는 다음과 같은 변경사항을 따라야 합니다.
- 이제 단일
send(Map<String, String> parameters)
메서드를 사용하여 조회가 전송됩니다. - 디버그 모드가
Logger
로 대체되었습니다. - 이제 EasyTracker가
Tracker
의 서브클래스를 생성하여 인터페이스가 일부 변경됩니다. - 신규: 전달된 데이터가 보고서에 표시되지 않도록
dryRun
플래그가 추가되었습니다.
전체 변경사항 목록은 Android 변경 로그를 참고하세요.
시작하기 전에
v3로 업그레이드를 시작하기 전에 다음 사항이 필요합니다.
경로 업그레이드
시작하려면 현재 구현에서 v3로 업그레이드 경로를 선택하세요.
EasyTracker: v1.x에서 v3로
EasyTracker v1.x 사용자는 v3 시작 가이드에 따라 EasyTracker에서 v3를 사용하는 것이 좋습니다.
EasyTracker: v2.x에서 v3로
v2.x EasyTracker 사용자는 v3으로의 업그레이드를 완료하려면 다음 단계를 따라야 합니다.
Context:
호출을 제공하도록EasyTracker.getInstance()
호출을 업데이트합니다.// 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() );
v3에서 데이터를 전송하는 방법 자세히 알아보기 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
EasyTracker
를 사용하지 않는 v1.x 사용자는 V3 시작 가이드를 따르고 필요에 따라 고급 구성 개발자 가이드를 참조해야 합니다.
맞춤 구현: v2.x~v3
EasyTracker
를 사용하지 않는 v2.x 사용자는 아래 단계를 따라 v3으로의 업그레이드를 완료해야 합니다.
- 모든 '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를 사용하여 데이터를 설정하고 전송하는 방법의 참조 예를 제공합니다.
v3에서 지도를 사용하여 데이터 전송
v3에서 Google 애널리틱스 필드 및 값의 Map
를 인수로 사용하는 단일 send()
메서드를 사용하여 데이터가 전송됩니다. 조회 빌드 프로세스를 단순화하기 위해 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() );
v3의 추적기에서 데이터 설정
set()
메서드를 사용하여 Tracker
에 직접 값을 설정할 수도 있습니다.
직접 설정된 값은 해당 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() );