SDK 연동
몇 가지 단계를 거쳐 빠르게 SDK 연동을 시작해보세요.
- SDK 설치
- SDK 초기화
- 사용자 설정
- 이벤트 전송
- A/B 테스트
- 기능 플래그
1. SDK 설치
Unity Package Manager를 통해 SDK 설치가 필요합니다.
여기를 클릭하여, SDK를 다운로드 받습니다.
Unity에서 Assets > Import Package > Custom Package
를 클릭합니다.
다운받은 package를 선택하고, import 하면 설치가 완료됩니다.
Android ProGuard / R8
ProGuard, R8을 사용하는 경우, aar 아티팩트에 난독화 규칙이 자동으로 포함됩니다. 이 경우가 아니라면 아래 규칙을 포함시켜야 합니다.
-keep class io.hackle.android.** { *; }
-keep class io.hackle.sdk.** { *; }
SDK 설치 후 앱 재설치
Unity SDK는 Android, iOS SDK가 포함되어 있습니다.
기존에 테스트 중이던 앱을 새롭게 빌드해야 연동이 완료됩니다.
업데이트 시 유의사항
업데이트를 하시는 경우, 기존 import 된 라이브러리 중 위의 선택된 라이브러리 삭제 후 다시 import 작업을 진행해야합니다.
- hackle-android-sdk-x.x.x
- hackle-android-unity-wrapper-x.x.x
- hackle-sdk-common-x.x.x
- hackle-sdk-core-x.x.x
- ios-arm64_armv7
- ios-arm64_i386_x86_64-simulator
Android SDK 의존성 관리
Android에서는 아래와 같은 의존성 라이브러리를 가지고 있습니다.
Unity SDK가 Android 환경에서 동작을 하지 않는 경우 아래 라이브러리가 존재하는지 확인이 필요합니다.
- hackle-android-sdk-2.12.0
- hackle-android-unity-wrapper-1.5.0
- hackle-sdk-common-2.9.0
- hackle-sdk-core-2.9.0
- core-common
- gson
- kotlin-stdlib
- lifecycle-common
- lifecycle-extensions
- lifecycle-process
- lifecycle-runtime
- okhttp
- okio
2. SDK 초기화
SDK를 사용하기 위해서 반드시 Hackle
을 초기화 해야 합니다. Hackle
을 초기화 하기 위해 SDK 키가 필요합니다.
Hackle
은 SDK의 기능을 사용하기 위한 메소드들을 제공하는 클래스입니다.Initialize()
메소드에 SDK 키를 전달하여 초기화하고, 초기화 완료 시까지 기다리기 위해 await를 합니다.- SDK 키는 핵클 서비스의 대시보드 안에 위치한 SDK 연동 정보에서 확인하실 수 있습니다.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class HackleInit : MonoBehaviour
{
async void Awake () {
await Hackle.Initialize(YOUR_APP_SDK_KEY);
}
}
인스턴스 가져오기
초기화 이후 아래 코드를 통해 Hackle
인스턴스를 가져올 수 있습니다.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
Hackle hackle = Hackle.GetInstance();
초기화 설정정보
설정정보를 포함하여 SDK를 초기화 할 수 있습니다.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class HackleInit : MonoBehaviour
{
async void Awake () {
HackleConfig config = new HackleConfig.Builder()
.ExposureEventDedupIntervalMillis(1000)
.Build();
await Hackle.Initialize("YOUR_APP_SDK_KEY", config: config);
}
}
모든 설정 옵션
설정 | 기능 | 기본값 | 지원 버전 |
---|---|---|---|
ExposureEventDedupIntervalMillis | 동일한 사용자가 연속으로 발생시킨 동일한 A/B 테스트, 기능플래그 분배결과에 대한 노출 이벤트를 제거합니다. 최솟값: 1000 (1초) 최댓값: - ~1.8.0 : 3600000 (1시간) - 1.9.0~ : 8640000(24시간) | 60000 (1분) | 1.7.0+ (1.9.0 이후부터 앱 종료 후 재시작 시에도 지원합니다.) |
Debug | 모든 기능에 대한 로그를 콘솔에 출력하고, 이벤트를 즉시 전송합니다. | false | 1.7.0+ |
PollingIntervalMillis | 대시보드에서 설정한 정보를 주기적으로 업데이트 할 수 있습니다. 최솟값 : 60000 (60초) | -1 (주기적으로 업데이트하지 않음) | 1.7.0+ |
3. 사용자 설정
사용자 정보를 SDK에 설정 할 수 있습니다.
사용자 ID 설정
사용자가 로그인한 경우, SetUserId
를 호출해서 로그인한 사용자의 ID를 설정할 수 있습니다.
- 로그인 시 한번만 설정하면 됩니다.
- 이미 로그인이 되어있는 사용자의 경우에는 로그인한 정보를 확인하는 시점에 호출하면 됩니다.
string userId = ... // 로그인한 사용자의 ID (회원번호, 멤버 ID 등)
hackle.SetUserId(userId);
사용자 속성 설정
이메일주소, 위치, 나이, 회원등급과 같은 정보를 사용자 속성으로 사용할 수 있습니다.
PropertyOperations operations = new PropertyOperations.Builder()
.Set("age", 42)
.Set("grade", "GOLD")
.Build();
hackle.UpdateUserProperties(operations);
사용자 로그아웃 시 재설정
사용자가 로그아웃 한 경우 ResetUser
를 호출하여 기존에 설정한 사용자 정보를 리셋할 수 있습니다. 아래 정보가 리셋됩니다.
- 사용자 ID
- 사용자 속성
hackle.ResetUser();
4. 이벤트 전송
사용자가 수행하는 행동을 이벤트로 전송할 수 있습니다. 전송된 이벤트는 A/B 테스트 분석, 데이터 분석 등에 사용됩니다. 예를들어, 사용자가 구매라는 행동을 했다면 아래와 같이 이벤트를 전송할 수 있습니다.
// 이벤트 전송
hackle.Track("purchase")
// 이벤트를 속성과 함께 전송
Dictionary<string, object> properties = new Dictionary<string, object>();
properties["amount"] = 4200;
properties["pay_method"] = "CARD";
properties["is_discount"] = false;
properties["product_ids"] = [42, 43];
HackleEvent event = new HackleEvent(
eventKey: "purchase",
properties: properties
);
hackle.Track(event);
전송한 이벤트 확인하기
대시보드 이벤트관리 메뉴에서 전송한 이벤트를 확인할 수 있습니다. 이벤트 전송 후 대시보드에 표시되기까지 일반적으로 ~60초가 걸립니다.
5. A/B 테스트
사용자를 테스트 그룹으로 분배하고 분배된 결과에 해당하는 로직을 작성하여 A/B 테스트를 구현합니다. variation
에 실험키를 전달하여 호출하면 분배결과를 리턴받을 수 있습니다.
실험키: 각 A/B 테스트별로 갖게 되는 고유 번호입니다. A/B 테스트를 생성하면 자동으로 발급됩니다.
// 실험 키가 42인 A/B 테스트에서 사용자에게 노출할 테스트 그룹을 결정합니다.
string variation = hackle.Variation(42);
// 할당받은 그룹에 대한 로직
if (variation == "A") {
// 그룹 A 로직
} else if (variation == "B") {
// 그룹 B 로직
}
분배 결과 확인하기
대시보드 A/B 테스트의 상세페이지의 실시간 노출 현황 탭에서 분배된 결과를 확인할 수 있습니다. 분배 후 대시보드에 표시되기까지 일반적으로 ~60초가 걸립니다.
6. 기능 플래그
기능 플래그는 켜짐(on) 상태와 꺼짐(off) 상태가 있습니다. 상태에 따라 다른 로직을 작성하여 기능 플래그를 구현합니다. isFeatureOn
에 기능플래그키를 전달하여 호출하면 on/off 여부를 리턴받을 수 있습니다.
기능플래그키: 각 기능플래그별로 갖게 되는 고유 번호입니다. 기능플래그를 생성하면 자동으로 발급됩니다.
Unity Editor
Unity SDK는 Android, iOS SDK를 기반으로 동작합니다.
따라서, Unity Editor에서는 꺼짐(off)상태인 false를 리턴합니다.
// 기능 키가 42인 기능 플래그에서 사용자의 상태를 결정합니다.
// 결정하지 못하는 상황인 경우 false(꺼짐 상태)를 반환합니다.
bool isFeatureOn = hackle.IsFeatureOn(42);
if (isFeatureOn) {
// ON 기능
} else {
// OFF 기능
}
Updated 2 months ago