Add license check user info

这个提交包含在:
XuqmGroup 2026-05-15 21:29:58 +08:00
父节点 8cf7ebb317
当前提交 2577d6e3e2
共有 3 个文件被更改,包括 34 次插入5 次删除

查看文件

@ -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)
```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.LicenseHttpClient
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.store.LicenseStore
import kotlinx.coroutines.CoroutineScope
@ -68,9 +69,10 @@ object LicenseSDK {
}
@JvmStatic
fun checkLicense(callback: LicenseCallback) {
@JvmOverloads
fun checkLicense(userInfo: LicenseUserInfo? = null, callback: LicenseCallback) {
sdkScope.launch {
val valid = when (checkLicense()) {
val valid = when (checkLicense(userInfo)) {
is LicenseResult.Success -> true
is LicenseResult.Error -> false
}
@ -88,7 +90,8 @@ object LicenseSDK {
*
* @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()
// Check cached status
@ -109,6 +112,7 @@ object LicenseSDK {
companyId = config.appKey,
deviceId = deviceId,
token = token,
userInfo = userInfo,
)
)
@ -130,6 +134,7 @@ object LicenseSDK {
deviceModel = DeviceInfoProvider.getDeviceModel(),
deviceVendor = DeviceInfoProvider.getDeviceVendor(),
osVersion = DeviceInfoProvider.getOsVersion(),
userInfo = userInfo,
)
)
@ -153,12 +158,12 @@ object LicenseSDK {
/**
* 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()
store.token = null
store.status = null
store.statusTime = 0
checkLicense()
checkLicense(userInfo)
}
/**

查看文件

@ -9,6 +9,7 @@ data class RegisterRequest(
@SerializedName("deviceModel") val deviceModel: String? = null,
@SerializedName("deviceVendor") val deviceVendor: String? = null,
@SerializedName("osVersion") val osVersion: String? = null,
@SerializedName("userInfo") val userInfo: LicenseUserInfo? = null,
)
data class RegisterResponse(
@ -21,6 +22,7 @@ data class VerifyRequest(
@SerializedName("companyId") val companyId: String,
@SerializedName("deviceId") val deviceId: String,
val token: String,
@SerializedName("userInfo") val userInfo: LicenseUserInfo? = null,
)
data class VerifyResponse(
@ -34,3 +36,10 @@ data class ApiResponse<T>(
val data: T? = 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,
)