Add ALC library dependency

添加 ALC Library 从属项目

项目顶端 build.gradle 文件中,注册 ONE store maven 地址。

Android Studio (version: bumblebee) 中添加 settings.gradle

hljs.highlightAll();


...

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

下面应用软件的 build.gradle 文件中,添加 ONE store ALC Library从属项目

hljs.highlightAll();


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

AndroidManifest.xml中添加queries

以下两种情况,请参考ONE store 公告进行设置。

Android 11 以上 (Target SDK 30 以上) ,请添加 queries。

hljs.highlightAll();


<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 Library从属项目时,流程同上。

hljs.highlightAll();


...

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

下面应用软件的 build.gradle 文件中,添加 添加 ONE store configuration Library从属项目。

hljs.highlightAll();


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

 

AppLicenseChecker 初始化

使用Application License Checke 要求用户的购买许可证,需生成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()三种方法,可进行简单的结果处理。 error() 类型传递错误代码和消息。 有关错误代码,请参考下面的响应代码。

class AppLicenseListener : LicenseCheckerListener {
	override fun granted(license: String, signature: String) {
		// 许可证验证成功
  }

	override fun denied() {
		// 许可证验证失败
	}  
	
	override fun error(code: Int, message: String) {
		// 许可证验证出错
	}
} 

许可证验证请求

调用许可证验证时,通过与 ONE store 服务器的通信传递许可证。用户因网络故障或飞行模式等原因无法正常访问ONE store服务器时,一般采使用缓存策略,保证缓存License有效期内应用软件的正常运行。 如果不想使用缓存策略,可通过 strictQueryLicense API 不使用缓存的许可证。

QueryLicense API (Cached API) 调用

协同缓存策略操作。 一般情况下,通过ONE store服务器接收用户购买历史的License,但因网络故障或飞行模式等原因无法访问ONE store服务器时,使用本地缓存的License来保证有效期内的正常运行。

appLicenseChecker.queryLicense()

StrictQueryLicense API (Non-Cached API) 调用

不使用缓存的许可证。 如果在网络故障或飞行模式下使用该 API, 因为无法访问 ONE store 服务器,用户无法使用应用程序 。

appLicenseChecker.strictQueryLicense()

断开连接

建议通过调用AppLicenseChecker的destroy函数,断开ONE store服务。

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

响应代码

下表是从 ONE store ALC Library传递到应用程序的Error响应代码和消息。 使用Library的应用程序必须处理响应代码。

Response CodeValueDescription(KR)Description(CN)How to handle Solutions

RESULT_OK

0

성공

成功

ERROR_CLIENT_NOT_ENABLED

1010

원스토어에 연결할 수 없습니다. 원스토어 앱 실행이 필요합니다.

无法连接到 ONE store。 需要运行 ONE store应用程序。

ERROR_SERVICE_UNAVAILABLE

2000

서비스를 이용할 수 없는 상태입니다.

服务不可用

请咨询 ONE store

ERROR_DATA_PARSING

2001

파라메터가 유효하지 않습니다.

参数无效

请咨询 ONE store

ERROR_SIGNATURE_VERIFICATION

2002

라이선스 키가 맞지 않거나 구매 내역이 없는 유저 입니다.

许可证密钥不匹配或用户没有购买历史记录

请在ONE store开发者中心确认许可证密钥

ERROR_SERVICE_TIMEOUT

2100

서비스 응답이 없습니다.

服务未响应

请检查 网络状态

ERROR_USER_LOGIN_CANCELD

2101

사용자가 로그인을 취소하였습니다.

用户取消登录

请登录ONE store

ERROR_INSTALL_USER_CANCELED

2103

원스토어 서비스 설치를 취소하였습니다.

已取消安装 ONE store 服务

请登录ONE store

ERROR_NOT_FOREGROUND

2104

백그라운드 서비스에서는 진행할 수 없습니다.

后台服务 无法运行

RESULT_UNKNOWN

-1

알 수 없는 오류가 발생하였습니다.

出现未知错误

请咨询 ONE store

RESULT_USER_CANCELED

1

사용자가 로그인을 취소하였습니다.

用户取消登录.

请咨询 ONE store

RESULT_SERVICE_UNAVAILABLE

2

단말 또는 서버 네트워크 오류가 발생하였습니다.

终端或服务器网络出错

请检查 网络状态.

RESULT_ALC_UNAVAILABLE

3

ALC api 버전 정보가 낮습니다. 해당 라이브러리를 업데이트 해주세요.

ALC api 版本过低。 请更新Library

请将ALC Library 更新到最新版本。

RESULT_DEVELOPER_ERROR

5

파라메터가 유효하지 않습니다.

参数无效

请咨询 ONE store

RESULT_ERROR

6

정의되지 않은 기타 오류가 발생하였습니다.

发生了其他未定义的错误

请咨询 ONE store

Last updated