Android용 Google 애널리틱스 SDK: v3로 이전

이 가이드에서는 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으로의 업그레이드를 완료하려면 다음 단계를 따라야 합니다.

  1. Context: 호출을 제공하도록 EasyTracker.getInstance() 호출을 업데이트합니다.
    // v2 (Old)
    // EasyTracker.getInstance().activityStart(this);
    
    // v3:
    EasyTracker.getInstance(this).activityStart(this);
    
  2. 이제 EasyTrackerTracker의 서브클래스를 서브클래스로 만듭니다. EasyTracker.getTracker()의 호출을 삭제합니다.
    // v2 (Old)
    Tracker v2Tracker = EasyTracker.getInstance().getTracker();
    
    // v3
    Tracker v3Tracker = EasyTracker.getInstance(this);
    
  3. 모든 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에서 데이터를 전송하는 방법 자세히 알아보기


  4. 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 매개변수 참조를 참조하세요.


  5. 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();
    
  6. (선택사항) 구현 테스트 시 프로덕션 보고서에 테스트 데이터가 표시되지 않도록 다음과 같이 ga_dryRun EasyTracker 매개변수를 추가하고 true로 설정합니다.
  7. <!-- 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으로의 업그레이드를 완료해야 합니다.

  1. 모든 '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()
    );
    
  2. 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 자세히 알아보기

  3. v3 SDK는 앱이 열릴 때 더 이상 자동으로 새 세션을 시작하지 않습니다(EasyTracker를 사용하는 경우 제외). v2 맞춤 구현에서 이 동작을 유지하려면 사용자가 앱을 시작할 때 자체 세션 제어 로직을 구현해야 합니다.
  4. 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()
        );
      }
    }
    
    
  5. (선택사항) 테스트 중에 프로덕션 보고서에서 테스트 데이터가 처리되지 않도록 dryRun 플래그를 설정합니다.
  6. // 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에서 데이터 전송 자세히 알아보기

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()
);

v3의 데이터 설정 자세히 알아보기