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的应用程序必须处理响应代码。

Last updated