Add license check user info
这个提交包含在:
父节点
8cf7ebb317
当前提交
2577d6e3e2
@ -46,6 +46,21 @@ LicenseSDK.checkLicense { isValid ->
|
|||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
Optional user metadata can be uploaded during the same check. All fields are optional.
|
||||||
|
|
||||||
|
```kotlin
|
||||||
|
LicenseSDK.checkLicense(
|
||||||
|
userInfo = LicenseUserInfo(
|
||||||
|
userId = "u_10001",
|
||||||
|
name = "张三",
|
||||||
|
email = "zhangsan@example.com",
|
||||||
|
phone = "13800000000",
|
||||||
|
),
|
||||||
|
) { isValid ->
|
||||||
|
// allow or block app usage
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
### Get Status (no network)
|
### Get Status (no network)
|
||||||
|
|
||||||
```kotlin
|
```kotlin
|
||||||
|
|||||||
@ -7,6 +7,7 @@ import com.xuqm.sdk.license.internal.LicenseContextHolder
|
|||||||
import com.xuqm.sdk.license.internal.LicenseFileReader
|
import com.xuqm.sdk.license.internal.LicenseFileReader
|
||||||
import com.xuqm.sdk.license.internal.LicenseHttpClient
|
import com.xuqm.sdk.license.internal.LicenseHttpClient
|
||||||
import com.xuqm.sdk.license.model.RegisterRequest
|
import com.xuqm.sdk.license.model.RegisterRequest
|
||||||
|
import com.xuqm.sdk.license.model.LicenseUserInfo
|
||||||
import com.xuqm.sdk.license.model.VerifyRequest
|
import com.xuqm.sdk.license.model.VerifyRequest
|
||||||
import com.xuqm.sdk.license.store.LicenseStore
|
import com.xuqm.sdk.license.store.LicenseStore
|
||||||
import kotlinx.coroutines.CoroutineScope
|
import kotlinx.coroutines.CoroutineScope
|
||||||
@ -68,9 +69,10 @@ object LicenseSDK {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@JvmStatic
|
@JvmStatic
|
||||||
fun checkLicense(callback: LicenseCallback) {
|
@JvmOverloads
|
||||||
|
fun checkLicense(userInfo: LicenseUserInfo? = null, callback: LicenseCallback) {
|
||||||
sdkScope.launch {
|
sdkScope.launch {
|
||||||
val valid = when (checkLicense()) {
|
val valid = when (checkLicense(userInfo)) {
|
||||||
is LicenseResult.Success -> true
|
is LicenseResult.Success -> true
|
||||||
is LicenseResult.Error -> false
|
is LicenseResult.Error -> false
|
||||||
}
|
}
|
||||||
@ -88,7 +90,8 @@ object LicenseSDK {
|
|||||||
*
|
*
|
||||||
* @return LicenseResult.Success if license is valid, LicenseResult.Error otherwise
|
* @return LicenseResult.Success if license is valid, LicenseResult.Error otherwise
|
||||||
*/
|
*/
|
||||||
suspend fun checkLicense(): LicenseResult = withContext(Dispatchers.IO) {
|
@JvmStatic
|
||||||
|
suspend fun checkLicense(userInfo: LicenseUserInfo? = null): LicenseResult = withContext(Dispatchers.IO) {
|
||||||
ensureInitialized()
|
ensureInitialized()
|
||||||
|
|
||||||
// Check cached status
|
// Check cached status
|
||||||
@ -109,6 +112,7 @@ object LicenseSDK {
|
|||||||
companyId = config.appKey,
|
companyId = config.appKey,
|
||||||
deviceId = deviceId,
|
deviceId = deviceId,
|
||||||
token = token,
|
token = token,
|
||||||
|
userInfo = userInfo,
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -130,6 +134,7 @@ object LicenseSDK {
|
|||||||
deviceModel = DeviceInfoProvider.getDeviceModel(),
|
deviceModel = DeviceInfoProvider.getDeviceModel(),
|
||||||
deviceVendor = DeviceInfoProvider.getDeviceVendor(),
|
deviceVendor = DeviceInfoProvider.getDeviceVendor(),
|
||||||
osVersion = DeviceInfoProvider.getOsVersion(),
|
osVersion = DeviceInfoProvider.getOsVersion(),
|
||||||
|
userInfo = userInfo,
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -153,12 +158,12 @@ object LicenseSDK {
|
|||||||
/**
|
/**
|
||||||
* Force re-register the device (e.g., after token revocation).
|
* Force re-register the device (e.g., after token revocation).
|
||||||
*/
|
*/
|
||||||
suspend fun reRegister(): LicenseResult = withContext(Dispatchers.IO) {
|
suspend fun reRegister(userInfo: LicenseUserInfo? = null): LicenseResult = withContext(Dispatchers.IO) {
|
||||||
requireInit()
|
requireInit()
|
||||||
store.token = null
|
store.token = null
|
||||||
store.status = null
|
store.status = null
|
||||||
store.statusTime = 0
|
store.statusTime = 0
|
||||||
checkLicense()
|
checkLicense(userInfo)
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@ -9,6 +9,7 @@ data class RegisterRequest(
|
|||||||
@SerializedName("deviceModel") val deviceModel: String? = null,
|
@SerializedName("deviceModel") val deviceModel: String? = null,
|
||||||
@SerializedName("deviceVendor") val deviceVendor: String? = null,
|
@SerializedName("deviceVendor") val deviceVendor: String? = null,
|
||||||
@SerializedName("osVersion") val osVersion: String? = null,
|
@SerializedName("osVersion") val osVersion: String? = null,
|
||||||
|
@SerializedName("userInfo") val userInfo: LicenseUserInfo? = null,
|
||||||
)
|
)
|
||||||
|
|
||||||
data class RegisterResponse(
|
data class RegisterResponse(
|
||||||
@ -21,6 +22,7 @@ data class VerifyRequest(
|
|||||||
@SerializedName("companyId") val companyId: String,
|
@SerializedName("companyId") val companyId: String,
|
||||||
@SerializedName("deviceId") val deviceId: String,
|
@SerializedName("deviceId") val deviceId: String,
|
||||||
val token: String,
|
val token: String,
|
||||||
|
@SerializedName("userInfo") val userInfo: LicenseUserInfo? = null,
|
||||||
)
|
)
|
||||||
|
|
||||||
data class VerifyResponse(
|
data class VerifyResponse(
|
||||||
@ -34,3 +36,10 @@ data class ApiResponse<T>(
|
|||||||
val data: T? = null,
|
val data: T? = null,
|
||||||
val message: String? = null,
|
val message: String? = null,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
data class LicenseUserInfo(
|
||||||
|
@SerializedName("userId") val userId: String? = null,
|
||||||
|
@SerializedName("name") val name: String? = null,
|
||||||
|
@SerializedName("email") val email: String? = null,
|
||||||
|
@SerializedName("phone") val phone: String? = null,
|
||||||
|
)
|
||||||
|
|||||||
正在加载...
在新工单中引用
屏蔽一个用户