Android SDK 가이드

이 가이드는 소스링크 Android SDK를 활용해 Android App 내에서 발생하는 마케팅 성과를 트래킹 하는 방법을 안내합니다.

실제 고객사에서 사용하는 방식과 함께 주요 설정 방법 및 예시 코드를 제공합니다.

📘

시스템 요구 사항은 Android SDK 버전 21 이상입니다.


Android SDK 설치하기

  1. 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/")
        }
    }
}
  1. 'build.gradle' 파일에 종속성 추가 [SDK 버전 정보]
dependencies {
 		 implementation("com.saucelink.tracking:saucelink-tracking-sdk:$SDK Version")
}

SDK 초기화하기


❗️

사용 전 가장 먼저 추가 되어야 하는 코드 입니다.

Application 클래스가 없을 경우 생성하고, AndroidManifest.xml 에도 추가 하여야 합니다.

SauceLinkTracking.init


ParameterRequiredTypeDescription
contextTrueContextAPI Host 설정 및 Koin model 초기화에 사용
partnerUniqueIdTrueStringSauce 로부터 발급받은 파트너 고유 ID입니다
sdkTokenTrueStringSauce 로부터 발급받은 파트너 SDK 토큰입니다
isStageFalseboolean스테이지 환경 설정값입니다
callbackFalseResult<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

ParameterRequiredTypeDescription
slinkTrueString앱스킴을 통해 전달된 slink 값
slinkTTrueString앱스킴을 통해 전달된 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

사용자가 상품 상세 페이지에 진입했을 때 호출하는 이벤트

ParameterRequiredTypeDescription
productTrueProduct상품 정보
callbackFalseResult<Unit> -> Unit트래킹 API 성공 여부 체크를 위한 Callback

Product

ParameterRequiredTypeDescription
productIdTrueString상품코드
productNameTrueString상품
priceTrueInt상품 가격
discountPriceFalseInt상품 할인 가격

상품 상세 페이지에서 호출

class MainActivity: ComponentActivity() {
	private val sauceClipPlayerClient = SauceClipPlayerClient.getInstance()
  . . .
  override fun onCreate(savedInstanceState: Bundle?) {
  	SauceLinkTracking.trackProductDetail(상품정보)
  }
}


주문 완료

SauceLinkTracking.trackOrderComplete

결제가 성공적으로 완료되어 주문이 완료 됐을 때 호출하는 이벤트

ParameterRequiredTypeDescription
orderIdTrueString주문번호
productsTrueList<OrderProduct>상품 정보 리스트
callbackFalseResult<Unit> -> Unit트래킹 API 성공 여부 체크를 위한 Callback

OrderProduct

ParameterRequiredTypeDescription
productIdTrueString상품코드
productNameTrueString상품
priceTrueInt상품 가격
discountPriceFalseInt상품 할인 가격
quantityTrueInt상품 수량

class MainActivity: ComponentActivity() {
	private val sauceClipPlayerClient = SauceClipPlayerClient.getInstance()
  . . .
  override fun onCreate(savedInstanceState: Bundle?) {
  	SauceLinkTracking.trackOrderComplete(주문번호,상품리스트)
  }
}

주문 취소

SauceLinkTracking.trackOrderCancel

주문 취소가 된 경우 호출하는 이벤트

ParameterRequiredTypeDescription
orderIdTrueString주문번호
productsTrueList<OrderProduct>상품 정보 리스트
callbackFalseResult<Unit> -> Unit트래킹 API 성공 여부 체크를 위한 Callback

OrderProduct는 주문 완료와 동일


class MainActivity: ComponentActivity() {
	private val sauceClipPlayerClient = SauceClipPlayerClient.getInstance()
  . . .
  override fun onCreate(savedInstanceState: Bundle?) {
  	SauceLinkTracking.trackOrderCancel(주문번호,상품리스트)
  }
}