Android SDK 가이드
이 가이드는 소스링크 Android SDK를 활용해 Android App 내에서 발생하는 마케팅 성과를 트래킹 하는 방법을 안내합니다.
실제 고객사에서 사용하는 방식과 함께 주요 설정 방법 및 예시 코드를 제공합니다.
시스템 요구 사항은 Android SDK 버전 21 이상입니다.
Android SDK 설치하기
- Project Root 폴더의 'setting.gradle' 파일에 Sauce S3 저장소 추가
dependencyResolutionManagement {
repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
repositories {
google()
mavenCentral()
// Saucelink SDK Maven Repository
maven {
url = uri("https://sdk.saucelink.im/Android/")
}
}
}- 'build.gradle' 파일에 종속성 추가 [SDK 버전 정보]
dependencies {
implementation("com.saucelink.tracking:saucelink-tracking-sdk:$SDK Version")
}
SDK 초기화하기
사용 전 가장 먼저 추가 되어야 하는 코드 입니다.Application 클래스가 없을 경우 생성하고, AndroidManifest.xml 에도 추가 하여야 합니다.
SauceLinkTracking.init
| Parameter | Required | Type | Description |
|---|---|---|---|
| context | True | Context | API Host 설정 및 Koin model 초기화에 사용 |
| partnerUniqueId | True | String | Sauce 로부터 발급받은 파트너 고유 ID입니다 |
| sdkToken | True | String | Sauce 로부터 발급받은 파트너 SDK 토큰입니다 |
| isStage | False | boolean | 스테이지 환경 설정값입니다 |
| callback | False | Result<Unit> -> Unit | 트래킹 API 성공 여부 체크를 위한 Callback |
Application Class 에서 초기화 함수 호출
class Application: Application(){
override fun onCreate() {
super.onCreate()
//Callback 미사용 예시
SauceLinkTracking.init(context = this, partnerId = "발급받은 파트너ID", sdkToken = "발급받은 SDK토큰",isStage = "스테이지 여부")
//Callback 사용 예시
SauceLinkTracking.init(context = this, partnerId = "발급받은 파트너ID", sdkToken = "발급받은 SDK토큰",isStage = "스테이지 여부") { result ->
result.fold(
onSuccess = {
Log.d("SampleApp", "SDK 초기화 성공")
},
onFailure = { error ->
Log.e("SampleApp", "SDK 초기화 실패: ${error.message}")
}
)
}
}
}소스링크 앱스킴 진입 후 트래킹 링크 업데이트
소스링크의 트래킹을 위하여 제휴 상품의 앱스킴으로 앱 진입시 트래킹 링크값을 SDK에 업데이트를 해야합니다.
해당하는 slink, slinkT 값은 소스링크의 ShortUrl에서 앱스킴 호출 시 같이 전달 됩니다.
SauceLinkTracking.updateSlink
| Parameter | Required | Type | Description |
|---|---|---|---|
| slink | True | String | 앱스킴을 통해 전달된 slink 값 |
| slinkT | True | String | 앱스킴을 통해 전달된 slink의 타임스탬프 값 |
앱스킴을 수신하는 Activity내에서 호출
class MainActivity: ComponentActivity() {
private val sauceClipPlayerClient = SauceClipPlayerClient.getInstance()
. . .
override fun onCreate(savedInstanceState: Bundle?) {
val data = intent?.data
data?.let {
val sLink = it.getQueryParameter("sLink")
val sLinkT = data.getQueryParameter("sLinkT")
SauceLinkTracking.updateSlink(sLink, sLinkT)
}
}
}이벤트 트래킹
상품 상세 페이지 조회
SauceLinkTracking.trackProductDetail
사용자가 상품 상세 페이지에 진입했을 때 호출하는 이벤트
| Parameter | Required | Type | Description |
|---|---|---|---|
| product | True | Product | 상품 정보 |
| callback | False | Result<Unit> -> Unit | 트래킹 API 성공 여부 체크를 위한 Callback |
Product
| Parameter | Required | Type | Description |
|---|---|---|---|
| productId | True | String | 상품코드 |
| productName | True | String | 상품 |
| price | True | Int | 상품 가격 |
| discountPrice | False | Int | 상품 할인 가격 |
상품 상세 페이지에서 호출
class MainActivity: ComponentActivity() {
private val sauceClipPlayerClient = SauceClipPlayerClient.getInstance()
. . .
override fun onCreate(savedInstanceState: Bundle?) {
SauceLinkTracking.trackProductDetail(상품정보)
}
}주문 완료
SauceLinkTracking.trackOrderComplete
결제가 성공적으로 완료되어 주문이 완료 됐을 때 호출하는 이벤트
| Parameter | Required | Type | Description |
|---|---|---|---|
| orderId | True | String | 주문번호 |
| products | True | List<OrderProduct> | 상품 정보 리스트 |
| callback | False | Result<Unit> -> Unit | 트래킹 API 성공 여부 체크를 위한 Callback |
OrderProduct
| Parameter | Required | Type | Description |
|---|---|---|---|
| productId | True | String | 상품코드 |
| productName | True | String | 상품 |
| price | True | Int | 상품 가격 |
| discountPrice | False | Int | 상품 할인 가격 |
| quantity | True | Int | 상품 수량 |
class MainActivity: ComponentActivity() {
private val sauceClipPlayerClient = SauceClipPlayerClient.getInstance()
. . .
override fun onCreate(savedInstanceState: Bundle?) {
SauceLinkTracking.trackOrderComplete(주문번호,상품리스트)
}
}주문 취소
SauceLinkTracking.trackOrderCancel
주문 취소가 된 경우 호출하는 이벤트
| Parameter | Required | Type | Description |
|---|---|---|---|
| orderId | True | String | 주문번호 |
| products | True | List<OrderProduct> | 상품 정보 리스트 |
| callback | False | Result<Unit> -> Unit | 트래킹 API 성공 여부 체크를 위한 Callback |
OrderProduct는 주문 완료와 동일
class MainActivity: ComponentActivity() {
private val sauceClipPlayerClient = SauceClipPlayerClient.getInstance()
. . .
override fun onCreate(savedInstanceState: Bundle?) {
SauceLinkTracking.trackOrderCancel(주문번호,상품리스트)
}
}Updated 7 days ago