XuqmGroup-iOSSDK/Sources/XuqmLicenseSDK/LicenseModels.swift
XuqmGroup e016adbb71 chore(ci): 更新 Jenkins 配置以支持多模块版本管理
- 为 Android、Flutter、iOS 和 RN SDK 的 Jenkinsfile 添加模块化版本控制
- 引入版本升级策略选择(major/minor/patch)和自定义版本号功能
- 实现多模块独立版本管理和选择性构建发布
- 更新 iOS SDK Package.swift 以支持独立模块化库
- 修改 iOS SDK podspec 文件以适应新的标签命名约定
- 优化 Jenkins 构建流程以支持按需选择特定模块进行构建和发布
- 修复 iOS 测试中的可选类型转换问题以提高代码健壮性
2026-05-23 01:20:57 +08:00

100 行
2.4 KiB
Swift

import Foundation
import XuqmCoreSDK
public struct LicenseFile: Codable, Sendable {
public let appKey: String
public let appName: String?
public let companyName: String?
public let packageName: String?
public let iosBundleId: String?
public let harmonyBundleName: String?
public let baseUrl: String?
public let serverUrl: String?
public let issuedAt: String?
public let expiresAt: String?
public init(
appKey: String,
appName: String? = nil,
companyName: String? = nil,
packageName: String? = nil,
iosBundleId: String? = nil,
harmonyBundleName: String? = nil,
baseUrl: String? = nil,
serverUrl: String? = nil,
issuedAt: String? = nil,
expiresAt: String? = nil
) {
self.appKey = appKey
self.appName = appName
self.companyName = companyName
self.packageName = packageName
self.iosBundleId = iosBundleId
self.harmonyBundleName = harmonyBundleName
self.baseUrl = baseUrl
self.serverUrl = serverUrl
self.issuedAt = issuedAt
self.expiresAt = expiresAt
}
}
public struct LicenseUserInfo: Sendable {
public let userId: String?
public let name: String?
public let email: String?
public let phone: String?
public init(userId: String? = nil, name: String? = nil, email: String? = nil, phone: String? = nil) {
self.userId = userId
self.name = name
self.email = email
self.phone = phone
}
}
public enum LicenseStatus: Sendable {
case ok
case denied
case unknown
}
public enum LicenseResult: Sendable {
case success(String)
case error(String)
}
struct UserInfoPayload: Encodable {
let userId: String?
let name: String?
let email: String?
let phone: String?
}
struct RegisterRequest: Encodable {
let appKey: String
let deviceId: String
let deviceName: String?
let deviceModel: String
let deviceVendor: String
let osVersion: String
let userInfo: UserInfoPayload?
}
struct VerifyRequest: Encodable {
let appKey: String
let deviceId: String
let token: String
let userInfo: UserInfoPayload?
}
struct RegisterResponse: Decodable {
let success: Bool
let token: String?
let message: String?
}
struct VerifyResponse: Decodable {
let valid: Bool
let error: String?
}