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 是為確保守全驗證而提供的PORT。呼叫授權結果 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