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的應用程式必須處理對應代碼。
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