ALC(Application License Checker) V2 적용

ALC 라이브러리 종속 항목 추가

프로젝트 최상위 build.gradle 파일에 원스토어 maven 주소를 등록합니다.

Android Studio (version: bumblebee) 에서는 settings.gradle에서 추가합니다.


...

buildscript {
    repositories {
        ...
        maven { url 'https://repo.onestore.co.kr/repository/onestore-sdk-public' }
    }
}  
...

다음 앱의 build.gradle 파일에 원스토어 ALC 라이브러리 종속 항목을 추가합니다.


...
 
dependencies {
	def onestore_sdk_version = "2.0.0"
	implementation "com.onestorecorp.sdk:sdk-licensing:$onestore_sdk_version"
}
...

AndroidManifest.xml에 queries 추가

아래의 두 가지의 경우 원스토어 공지사항을 참조하여 설정 바랍니다.

Android 11 이상 (Target SDK 30 이상) 일 경우, queries를 추가하여야 합니다.


<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.dev.sample">
    <queries>
        <intent>
            <action android:name="com.onestore.extern.licensing.LicensingService.ACTION" />
        </intent>
        <intent>
            <action android:name="android.intent.action.VIEW" />
            <data android:scheme="onestore" />
        </intent>
    </queries>
...

ONE store Login을 위한 configuration 추가

프로젝트 최상위 build.gradle 파일에 원스토어 maven 주소를 등록합니다.

ALC 라이브러리 종속 항목 추가시 사전 작업과 동일합니다.


...

buildscript {
    repositories {
        ...
        maven { url 'https://repo.onestore.co.kr/repository/onestore-sdk-public' }
    }
}  
...

다음은 앱의 build.gradle 파일에 원스토어 configuration 라이브러리 종속 항목을 추가합니다.


...
 
dependencies {
	def onestore_configuration_version = "1.0.0"
	implementation "com.onestorecorp.sdk:sdk-configuration-kr:$onestore_configuration_version"
}
...

 

AppLicenseChecker 초기화

Application License Checker를 사용하여 사용자의 구매 라이센스를 요청하려면 AppLicenseChecker의 instance를 생성해야 합니다.

라이센스 검증을 위해 개발자 센터에서 발급받은 라이센스 키를 전달해야 합니다. 또한, 유효한 라이센스를 보유 하고 있는지에 대한 결과는 LicenseCheckerListener를 통해 전달되기 때문에 초기화시 Listener도 생성해야 합니다.

라이센스 키 저장

라이센스 키의 경우, 앱 내 코드로 저장하기 보다는 보안이 될 수 있도록 서버 등을 이용하여 전달받아 사용하는 것을 권장합니다.

override fun onCreate(savedInstanceState: Bundle?) {
	super.onCreate(savedInstanceState)
	...
	val appLicenseChecker = AppLicenseChecker.get(this@MainActivity, getString(R.string.publick_key, new AppLicenseListener())
}

...
inner class AppLicenseListener : LicenseCheckerListener {
	override fun granted(license: String, signature: String) {}

	override fun denied() {}  
	
	override fun error(code: Int, message: String) {}
} 

Callback 등록

AppLicenseChecker 초기화시 LicenseCheckerListener를 필수로 등록하여야 합니다.

LicenseCheckeerListener 는 라이선스 확인 결과를 처리하기 위해 제공하는 인터페이스 입니다. 라이선스 확인 결과는 항상 LicenseCheckeerListener 메서드 중 하나를 호출합니다.

granted(), denied(), error() 3가지의 메소드를 가지며, 간단한 결과처리 동작을 사용할 수 있습니다. error() 메소드에서는 에러 코드와 메세지를 전달합니다. 에러코드는 아래 응답코드를 참고하시기 바랍니다.

class AppLicenseListener : LicenseCheckerListener {
	override fun granted(license: String, signature: String) {
		// 라이센스 체크 성공
	}

	override fun denied() {
		// 라이센스 체크 거절
	}  
	
	override fun error(code: Int, message: String) {
		// 라이센스 체크 에러 발생
	}
} 

라이센스 검증 요청하기

라이센스 체크 호출시 원스토어 서버와의 통신을 통해 라이센스를 전달받게 됩니다. 네트워크 장애 상황이나 비행기 모드 등 으로 인해 사용자가 정상적으로 원스토어 서버에 접근하지 못하는 경우에는 일반적으로 캐시정책을 사용하여 캐시된 라이센스의 유효 기간 동안 앱의 실행을 보장합니다. 만약 캐시 정책을 사용하지 않고 싶은 경우 strictQueryLicense API 를 통해 캐시된 라이센스를 이용하지 않고 사용 가능합니다.

QueryLicense API (Cached API) 호출

캐시 정책을 동반하여 동작합니다. 일반적으로 원스토어 서버를 통해 사용자의 구매 이력 라이센스를 전달 받지만, 네트워크 장애나 비행기 모드 등 원스토어 서버에 접근이 불가할 때, 로컬에 캐시된 라이센스를 이용하여 유효기간까지 실행을 보장해주는 방식입니다.

appLicenseChecker.queryLicense()

StrictQueryLicense API (Non-Cached API) 호출

캐시된 라이센스를 사용하지 않습니다. 네트워크 장애 상황이나 비행기 모드 등에서 해당 API를 사용하였을 경우, 원스토어 서버에 접근이 불가능한 상태이기 때문에 사용자가 앱을 이용할 수 없습니다.

appLicenseChecker.strictQueryLicense()

연결 해제

AppLicenseChecker의 destroy 함수를 호출하여 원스토어 서비스와의 연결을 해제하는 것을 권장합니다.


override fun onDestroy() {
	if (null != appLicenseChecker) {
		appLicenseChecker.destroy()
	}
	
	super.onDestory()
} 

응답코드

아래 표는 원스토어 ALC 라이브러리에서 애플리케이션으로 전달되는 Error에 대한 응답코드 및 메시지 입니다. 라이브러리를 이용하는 애플리케이션에서는 응답코드에 대해 처리 해야 합니다.

Last updated