소개
Google 태그 관리자를 사용하면 개발자가 모바일 애플리케이션에서 구성 값을 변경할 수 있습니다. 애플리케이션 바이너리를 다시 작성하여 다시 제출하지 않고 Google 태그 관리자 인터페이스 사용 앱 마켓플레이스에 도입했습니다.
이는 애플리케이션에서 필요한 구성 값이나 플래그를 관리하는 데 유용합니다. 변경할 수 있습니다.
- 다양한 UI 설정 및 표시 문자열
- 애플리케이션에 게재되는 광고의 크기, 위치 또는 유형
- 다양한 게임 설정
구성 값은 규칙을 사용하여 런타임에 평가할 수도 있으므로 동적 구성:
- 화면 크기를 사용하여 광고 배너 크기 결정하기
- 언어 및 위치를 사용하여 UI 요소 구성
또한 Google 태그 관리자를 사용하면 애플리케이션을 실행할 수 있습니다 개발자는 중요한 이벤트를 데이터 영역으로 푸시하고 나중에 어떤 이벤트를 실행할지 결정할 수 있습니다. 추적 태그 또는 픽셀이 실행되어야 합니다.
시작하기 전에
이 시작 가이드를 시작하기 전에 다음 단계를 완료하세요.
- Android SDK를 설치합니다.
- Google Play 서비스 SDK 다운로드
- Google 태그 관리자 계정 만들기
- Google 태그 관리자 컨테이너 구성하기
이 단계를 완료한 후 이 가이드의 나머지 부분에서는 Android 애플리케이션에서 Google 태그 관리자를 구성하고 사용하는 방법을 알아보겠습니다.
시작하기
이 시작 가이드를 수행하면 다음 작업을 수행하는 방법을 이해할 수 있습니다.
- 프로젝트에 Google 태그 관리자 추가
- 애플리케이션에서 태그 관리자 초기화하기
- 태그 관리자 컨테이너에서 구성 값 가져오기
- 값 및 이벤트를
dataLayer
로 푸시 - 컨테이너 미리보기, 디버그, 게시
이 가이드에서는 Cute Animals
의 코드 스니펫을 사용합니다.
포함된 샘플 애플리케이션을
Google Play 서비스 SDK.
이 프로젝트의 전체 소스는 <android-sdk-directory>/extras/google/google_play_services/tagmanager/cuteanimals
에서 확인할 수 있습니다.
1. 프로젝트에 Google 태그 관리자 추가
프로젝트에 Google 태그 관리자를 추가하는 방법은 다음과 같습니다.
- <ph type="x-smartling-placeholder"></ph> Google Play 서비스 SDK 설정
- 이외의 IDE를 사용하는 경우
Android 스튜디오에서 앱에 다음 권한을
AndroidManifest.xml
파일:<!-- For TagManager SDK --> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
- 사용 설정
InstallReferrerReceiver
: Google 애널리틱스 수신자를 호출합니다. 캠페인 데이터를 설정하려면 다음을 추가합니다.AndroidManifest.xml
파일:<!-- Used for install referrer tracking--> <service android:name="com.google.android.gms.tagmanager.InstallReferrerService" /> <receiver android:name="com.google.android.gms.tagmanager.InstallReferrerReceiver" android:exported="true"> <intent-filter> <action android:name="com.android.vending.INSTALL_REFERRER" /> </intent-filter> </receiver>
2. 프로젝트에 기본 컨테이너 파일 추가
Google 태그 관리자는 애플리케이션을 처음 실행할 때 기본 컨테이너를 사용합니다. 기본값 새 컨테이너를 회수할 수 있게 되면 컨테이너는 네트워크에 속합니다.
기본 컨테이너 바이너리를 다운로드하고 애플리케이션에 추가하는 방법은 다음과 같습니다.
- Google 태그 관리자 웹 인터페이스에 로그인합니다.
- 다운로드할 컨테이너의 버전을 선택합니다.
- 다운로드 버튼을 클릭하여 컨테이너 바이너리를 검색합니다.
- 다운로드한 컨테이너 바이너리 파일을 프로젝트에 원시 리소스로 추가합니다.
- 아래에 있는
raw
하위 폴더가<project-root>/res/
이(가) 존재하지 않습니다. 새로 만드세요. - 필요한 경우 컨테이너 바이너리 파일의 이름을 바꿉니다. 구성 파일만 소문자, 숫자, 밑줄
- 컨테이너 바이너리 파일을 폴더에 복사합니다.
<project-root>/res/raw
- 아래에 있는
바이너리 파일을 사용하는 것이 좋지만 컨테이너에 규칙이나 태그가 포함되어 있지 않다면 간단한 JSON 파일을 대신 사용할 수도 있습니다.
3. Google 태그 관리자 초기화하기
애플리케이션에서 Google 태그 관리자를 초기화하는 방법은 다음과 같습니다.
TagManager
싱글톤을 가져옵니다.TagManager tagManager = TagManager.getInstance(this);
TagManager
싱글톤을 사용하여 컨테이너 로드를 요청하고 Google 태그 관리자 컨테이너 ID 및 기본 컨테이너 파일에서 참조됩니다. 컨테이너 ID는 대문자여야 하며 Google 태그의 컨테이너 ID와 정확하게 일치해야 합니다. 관리자 웹 인터페이스loadContainerPreferNonDefault()
호출이 차단되지 않음 를 사용하고 <ph type="x-smartling-placeholder"></ph>PendingResult
:PendingResult<ContainerHolder> pending = tagManager.loadContainerPreferNonDefault(CONTAINER_ID, R.raw.defaultcontainer_binary);
- 사용
ResultCallback
:ContainerHolder
로드가 완료되거나 타임아웃되었을 때: 드림// The onResult method will be called as soon as one of the following happens: // 1. a saved container is loaded // 2. if there is no saved container, a network container is loaded // 3. the 2-second timeout occurs pending.setResultCallback(new ResultCallback<ContainerHolder>() { @Override public void onResult(ContainerHolder containerHolder) { ContainerHolderSingleton.setContainerHolder(containerHolder); Container container = containerHolder.getContainer(); if (!containerHolder.getStatus().isSuccess()) { Log.e("CuteAnimals", "failure loading container"); displayErrorToUser(R.string.load_error); return; } ContainerLoadedCallback.registerCallbacksForContainer(container); containerHolder.setContainerAvailableListener(new ContainerLoadedCallback()); startMainActivity(); } }, TIMEOUT_FOR_CONTAINER_OPEN_MILLISECONDS, TimeUnit.MILLISECONDS);
ContainerHolder 싱글톤 만들기
실행당
ContainerHolder
인스턴스를 하나만 유지해야 합니다. 애플리케이션입니다. 따라서 위 예에서는ContainerHolderSingleton
유틸리티 클래스를 사용합니다.ContainerHolder
인스턴스에 대한 액세스 관리 그 내용은 다음과 같습니다ContainerHolderSingleton
클래스는 다음과 같습니다.package com.google.android.tagmanager.examples.cuteanimals; import com.google.android.gms.tagmanager.ContainerHolder; /** * Singleton to hold the GTM Container (since it should be only created once * per run of the app). */ public class ContainerHolderSingleton { private static ContainerHolder containerHolder; /** * Utility class; don't instantiate. */ private ContainerHolderSingleton() { } public static ContainerHolder getContainerHolder() { return containerHolder; } public static void setContainerHolder(ContainerHolder c) { containerHolder = c; } }
4. 컨테이너에서 구성 값 가져오기
컨테이너가 로드되면
Container.get<type>()
메서드를 사용하여 지도 가장자리에
패딩을 추가할 수 있습니다. 구성 값은
Google 태그 관리자의 값 컬렉션 변수입니다. 예를 들어 다음 메서드는
은 UI 요소에 사용하기로 결정한 최신 색상을 가져와서
정수:
/** * Returns an integer representing a color. */ private int getColor(String key) { return colorFromColorName(containerHolder.getContainer().getString(key)); }
이 코드는 컨테이너에서 색상 이름을 가져오기 위해 두 가지 작업을 실행합니다.
- 다음을 사용하여
ContainerHolder
에서Container
를 가져옵니다. <ph type="x-smartling-placeholder"></ph>ContainerHolder.getContainer()
). - 다음을 사용하여 색상 값을 가져옵니다.
<ph type="x-smartling-placeholder"></ph>
Container.getString(key)
, 현재 Google 태그 관리자 웹 인터페이스에서 키와 값을 정의했습니다.
5. dataLayer에 이벤트 및 값 푸시하기
또한 Google 태그 관리자에서는 dataLayer
를 제공하여 이 위치로 정보를 푸시할 수 있습니다.
애플리케이션의 다른 부분에서 읽거나 태그를 실행하는 데 사용할 수 있는 애플리케이션 정보
Google 태그 관리자 웹 인터페이스에서 구성한 경우
dataLayer에 값 푸시하기
dataLayer
는 사용할 수 있는 지속성 레이어를 제공합니다.
애플리케이션의 다른 부분에서 사용할 키-값 쌍을 저장할 수 있습니다.
Google 태그 관리자 태그에 입력으로 사용할 수 있습니다.
값을 dataLayer
로 푸시하려면 다음 패턴을 따르세요.
- 가져오기
DataLayer
싱글톤:DataLayer dataLayer = TagManager.getInstance(context).getDataLayer();
- 를 사용하여 이벤트를 푸시합니다.
DataLayer.push()
:// Put the image_name into the data layer for future use. TagManager.getInstance(this).getDataLayer().push(IMAGE_NAME_KEY, imageName);
dataLayer
에서 값을 가져오려면 다음을 사용합니다.
<ph type="x-smartling-placeholder"></ph>
DataLayer.get(key)
dataLayer에 이벤트 푸시
이벤트를 dataLayer
로 푸시하면 애플리케이션 코드를
이러한 이벤트에 대한 응답으로 실행하려는
태그를 지정해 두는 것이 좋습니다
예를 들어 Google 애널리틱스 화면 조회 추적 호출을 애플리케이션에 하드 코딩하는 대신
화면 이벤트를 dataLayer
로 푸시하고
Google 태그 관리자 웹 인터페이스 이렇게 하면 해당 태그를 유연하게 수정하거나
추가 태그도 만들 수 있습니다.
이벤트를 dataLayer
에 푸시하려면 다음 패턴을 따르세요.
- 가져오기
DataLayer
싱글톤:DataLayer dataLayer = TagManager.getInstance(context).getDataLayer();
- 를 사용하여 이벤트를 푸시합니다.
DataLayer.pushEvent()
:dataLayer.pushEvent("openScreen", DataLayer.mapOf("screenName", screenName));
<ph type="x-smartling-placeholder"></ph>
DataLayer.mapOf()
는 맵을 쉽게 생성하는 데 사용할 수 있는 유틸리티 메서드입니다. 이벤트가 푸시되는 동시에dataLayer
를 업데이트할 키-값 쌍입니다.
6. 미리보기, 디버깅 및 게시
컨테이너의 버전을 게시하기 전에 미리보기를 통해 컨테이너가 작동하는지 확인하는 것이 좋습니다. 변경할 수 있습니다 Google 태그 관리자를 사용하면 컨테이너의 버전을 미리 볼 수 있습니다. 웹 인터페이스에서 링크와 QR 코드를 생성하고 이를 사용하여 애플리케이션을 열 수 있습니다. 상세 로깅 모드를 사용 설정하여 예상치 못한 동작을 디버깅할 수도 있습니다.
미리보기 중
컨테이너 버전을 미리 보려면 다음 단계를 따르세요.
- 이 미리보기
Activity
을AndroidManifest
파일에 추가:<!-- Add preview activity. --> <activity android:name="com.google.android.gms.tagmanager.PreviewActivity" android:label="@string/app_name" android:noHistory="true"> <!-- optional, removes the previewActivity from the activity stack. --> <intent-filter> <data android:scheme="tagmanager.c.com.google.android.tagmanager.examples.cuteanimals" /> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.BROWSABLE"/> </intent-filter> </activity>
애플리케이션의 패키지 이름을 포함하도록 이 줄을 수정해야 합니다.
<data android:scheme="tagmanager.c.com.google.android.tagmanager.examples.cuteanimals" />
- Google 태그 관리자 웹 인터페이스에서 미리보기 링크 생성
<ph type="x-smartling-placeholder">
- </ph>
- Google 태그 관리자에 로그인
- 미리 볼 컨테이너 버전을 선택합니다.
- 미리보기 버튼을 클릭합니다
- 애플리케이션의 패키지 이름을 입력하고 미리보기 시작 링크 생성을 클릭합니다.
- 생성된 링크 또는 QR 코드를 사용하여 애플리케이션을 실행합니다.
- 미리보기 종료하기 링크 생성에서 생성된 링크를 따라 미리보기 모드를 종료할 수 있습니다. 옵션을 설정할 수 있습니다.
디버깅
컨테이너 구현 문제를 해결해야 하는 경우 다음을 호출하여 상세 로깅을 사용 설정하세요.
<ph type="x-smartling-placeholder"></ph>
TagManager.setVerboseLoggingEnabled(true)
:
// Modify the log level of the logger to print out not only // warning and error messages, but also verbose, debug, info messages. tagManager.setVerboseLoggingEnabled(true);
게시 중
컨테이너를 미리 보고 의도한 대로 작동하는지 확인한 후에는 다음을 수행할 수 있습니다. 컨테이너 게시 내 사용자에게 다음 번에 컨테이너 구성 값, 태그 및 이벤트가 컨테이너는 새로고침됩니다 컨테이너 새로고침에 대해 자세히 알아보기
고급 구성
다음 섹션에서는 환경을 추가로 맞춤설정하는 데 사용할 고급 구성 옵션에 대해 설명합니다. Google 태그 관리자 구현
컨테이너 새로고침
기본적으로 컨테이너는 12시간마다 새로고침될 수 있습니다. 수동으로 새로고침하는 방법
컨테이너에서는 를 사용합니다.
ContainerHolder.refresh()
:
ContainerHolderSingleton.getContainerHolder().refresh();
이 호출은 즉시 반환되지 않는 비동기 호출입니다. 네트워크 트래픽을 줄이기 위해 refresh()
에서
15분마다 한 번만 호출됩니다. 그렇지 않으면 작동하지 않습니다.