XuqmGroup-iOSSDK/Sources/XuqmUpdateSDK/UpdateSDK.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

47 行
1.4 KiB
Swift

import Foundation
import XuqmCoreSDK
#if canImport(UIKit)
import UIKit
#endif
public struct AppUpdateInfo: Decodable, Sendable {
public let needsUpdate: Bool
public let versionName: String?
public let versionCode: Int?
public let changeLog: String?
public let forceUpdate: Bool?
public let appStoreUrl: String?
}
@MainActor
public final class UpdateSDK {
public static let shared = UpdateSDK()
private init() {}
public func checkAppUpdate(currentVersionCode: Int) async throws -> AppUpdateInfo {
await XuqmSDK.shared.awaitInitialization()
let config = XuqmSDK.shared.requireConfig()
let userId = XuqmSDK.shared.currentUserId
var queryItems = [
URLQueryItem(name: "appKey", value: config.appKey),
URLQueryItem(name: "platform", value: "IOS"),
URLQueryItem(name: "currentVersionCode", value: "\(currentVersionCode)"),
]
if let userId, !userId.isEmpty {
queryItems.append(URLQueryItem(name: "userId", value: userId))
}
return try await ApiClient.shared.request(
path: "/api/v1/updates/app/check",
queryItems: queryItems
)
}
public func openAppStore(url: String) {
guard let storeURL = URL(string: url) else { return }
#if canImport(UIKit)
UIApplication.shared.open(storeURL)
#endif
}
}