한국어
Search
K

ALC(Application License Checker) V2 应用

添加 ALC Library 从属项目

项目顶端 build.gradle 文件中,注册 ONE store maven 地址。
Android Studio (version: bumblebee) 中添加 settings.gradle
hljs.highlightAll();
...
buildscript {
repositories {
...
    maven { url 'https://repo.onestore.co.kr/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.co.kr/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。
保存许可证密钥
为了安全起见, 建议通过服务器接收许可证密钥并使用,而不是保存在应用程序内代码。
Kotlin
Java
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) {}
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
...
appLicenseChecker = AppLicenseChecker.get(MainActivity.this, getString(R.string.publick_key, new AppLicenseListener());
}
...
private class AppLicenseListener implements LicenseCheckerListener {
@Override
public void granted(String license, String signature) {}
@Override
public void denied() {}
@Override
public void error(int code, String message) {}
}

Callback 注册

AppLicenseChecker 初始化时,必须注册 LicenseCheckerListener LicenseCheckeerListener 是为确认许可验证而提供的接口。许可验证结果调用 LicenseCheckeerListener 方法之一。 granted()、denied() 、error()三种方法,可进行简单的结果处理。 error() 类型传递错误代码和消息。 有关错误代码,请参考下面的响应代码。
Kotlin
Java
class AppLicenseListener : LicenseCheckerListener {
override fun granted(license: String, signature: String) {
// 许可证验证成功
 }
override fun denied() {
// 许可证验证失败
}
override fun error(code: Int, message: String) {
// 许可证验证出错
}
}
class AppLicenseListener implements LicenseCheckerListener {
@Override
public void granted(String license, String signature) {
// 许可证验证成功
}
@Override
public void denied() {
// 许可证验证失败
}
@Override
public void error(int code, String message) {
// 许可证验证出错
}
}

许可证验证请求

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

QueryLicense API (Cached API) 调用

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

StrictQueryLicense API (Non-Cached API) 调用

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

断开连接

建议通过调用AppLicenseChecker的destroy函数,断开ONE store服务。
Kotlin
Java
override fun onDestroy() {
if (null != appLicenseChecker) {
appLicenseChecker.destroy()
}
super.onDestory()
}
@Override
protected void onDestroy() {
if (null != appLicenseChecker) {
appLicenseChecker.destroy();
}
super.onDestory();
}

响应代码

下表是从 ONE store ALC Library传递到应用程序的Error响应代码和消息。 使用Library的应用程序必须处理响应代码。
Response Code
Value
Description(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 modified 4mo ago