XuqmGroup-iOSSDK/Sources/XuqmSDK/License/LicenseModels.swift
XuqmGroup c9aff03a63 sdk: auto-init from license file, init continuation waiting
- XuqmSDK: autoInitialize() validates iosBundleId; awaitInitialization() with CheckedContinuation
- LicenseSDK: await XuqmSDK initialization before license operations
- UpdateSDK: await XuqmSDK init before checkAppUpdate
- LicenseModels: add packageName, iosBundleId, harmonyBundleName, serverUrl fields

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-22 17:56:52 +08:00

75 行
1.5 KiB
Swift

import Foundation
struct LicenseFile: Codable {
let appKey: String
let appName: String?
let companyName: String?
let packageName: String?
let iosBundleId: String?
let harmonyBundleName: String?
let baseUrl: String?
let serverUrl: String?
let issuedAt: String?
let expiresAt: String?
}
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?
}