提交图

87 次代码提交

作者 SHA1 备注 提交日期
XuqmGroup
b3114ba522 fix(ci): push detached HEAD to main, sync version to 1.0.4
- Use `git push origin HEAD:main` instead of `git push origin main`
  because Jenkins checks out a specific commit (detached HEAD)
- Sync gradle.properties to 1.0.4 (already published to Nexus)

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-23 02:04:01 +08:00
XuqmGroup
e1521ea7ec debug(ci): use cmd findstr to read version, add debug output
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-23 02:01:39 +08:00
XuqmGroup
2c8814c5e6 debug(ci): add debug logging for version bump, use if/else instead of switch
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-23 02:01:26 +08:00
XuqmGroup
883a623505 fix(ci): explicit ASCII encoding for version read, git checkout main
- Force ASCII output encoding in PowerShell to avoid hidden chars
- Add git checkout main before commit to avoid detached HEAD
- Simplify version reading command

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-23 02:01:14 +08:00
XuqmGroup
24b7abb361 fix(ci): use Groovy readProperties for version, add git pull before push
- Replace PowerShell-based version reading with Groovy's readProperties
  and readFile/writeFile to avoid encoding issues causing "1.0.3→1.0.3"
- Add git pull --rebase before push to handle non-fast-forward rejections

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-23 01:57:14 +08:00
XuqmGroup
c60bc15a93 fix(ci): fix version bump and git push
- Strip \r\n from PowerShell output to fix version parsing
  (was causing "1.0.3 → 1.0.3" instead of "1.0.3 → 1.0.4")
- Remove gitlab-credentials dependency, use git remote URL
  which already has the access token embedded

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-23 01:54:28 +08:00
XuqmGroup
cff30338b2 chore: sync PUBLISH_VERSION to 1.0.3 (matches Nexus)
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-23 01:51:41 +08:00
XuqmGroup
086900cd26 fix(ci): commit version bump back to git after publish
The Jenkinsfile bumped PUBLISH_VERSION during the run but never
committed the change, causing every run to start from the same
base version. Now commits gradle.properties back to main after
successful Nexus publish.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-23 01:51:00 +08:00
XuqmGroup
4fcaba3338 ci: remove unit tests, simplify publish stages
Remove RUN_TESTS parameter and Unit Tests stage.
Publish SPM and CocoaPods are now the only publish paths.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-23 01:42:32 +08:00
XuqmGroup
c103178d77 fix(ci): 模块复选框默认不勾选,需手动选择 2026-05-23 01:36:40 +08:00
XuqmGroup
0dd1cb297c refactor(ci): 移除自定义版本号功能,仅保留自动升级 2026-05-23 01:34:53 +08:00
XuqmGroup
2247c1146e fix(ci): 修复凭据ID、Windows兼容性和post块上下文 2026-05-23 01:30:53 +08:00
XuqmGroup
141f5e3e30 feat(ci): 模块选择改为复选框,每个模块独立勾选 2026-05-23 01:28:41 +08:00
XuqmGroup
0bce3d4b0b fix(ci): 修复 choice 参数语法,使用 choices 数组 2026-05-23 01:25:10 +08:00
XuqmGroup
998e5384ff 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
XuqmGroup
eb27e8f112 feat(sdk-license): client-side package name validation
Package name matching is now done entirely in the SDK before any network call:
- License file flow (tryAutoInitialize): compare licenseFile.packageName with
  context.packageName; refuse initialization if mismatch
- appKey-only flow (checkLicense): fetch GET /api/license/app-info and compare
  configured package names locally before register/verify
- LicenseConfig: add fromLicenseFile flag to distinguish the two flows
- LicenseModels: add AppInfoResponse with matchesPackageName helper
- LicenseApiService: add getAppInfo() endpoint

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-23 00:30:00 +08:00
XuqmGroup
63da94c670 sdk: auto-init from license file, cross-module init waiting
- XuqmSDK: autoInitialize() validates license package name; afterInit() callback
- LicenseSDK: await XuqmSDK init via reflection with timeout before operations
- UpdateSDK: await XuqmSDK init before checkAppUpdate
- LicenseFileReader: return Triple(appKey, serverUrl, packageName)

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-22 17:56:42 +08:00
XuqmGroup
7b18d279bf build: 各 SDK 模块独立版本,publish.gradle 改用 project.version
每个模块通过 SDK_<NAME>_VERSION 属性指定自己的版本,
未设置时回退到全局 PUBLISH_VERSION,保持向后兼容。

发布单个模块示例:
  ./gradlew :sdk-license:publish -PSDK_LICENSE_VERSION=1.0.3 -PPUBLISH_VERSION=1.0.2

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-21 16:48:10 +08:00
XuqmGroup
9fd358deef fix(sdk-license): HTTP 错误不回退缓存,防止已吊销设备认证通过
verify 返回 false 后 SDK 会尝试 register,服务端对已吊销设备返回 403。
原 catch 块将 HttpException 与网络错误同等处理,导致 cachedStatus=="ok"
时依然返回 Success。修复:HttpException(4xx/5xx)直接写入 DENIED,
只有真正的网络错误(IOException/超时)才允许离线缓存回退。

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-21 16:41:47 +08:00
XuqmGroup
63797ea1cb feat(sdk-license): LicenseInitializerProvider 自动完成全量 SDK 初始化
ContentProvider 在 Application.onCreate() 之前运行,读取
assets/xuqm/license.xuqm 后直接调用 XuqmSDK.initialize()。
app 端只需放入 license 文件,无需任何初始化代码。

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-21 15:31:52 +08:00
XuqmGroup
84eeecb4cc feat(sdk): 新增 autoInitialize(),放入 license 文件即可完成全量 SDK 初始化
- LicenseFile 新增 serverUrl 字段(私有化部署时由后端写入)
- LicenseSDK 新增 readLicenseFileData() 供 sdk-core 反射调用
- XuqmSDK.autoInitialize(context) 从 assets/xuqm/license.xuqm 读取
  appKey 和 serverUrl,一行完成公/私有化 SDK 初始化

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-21 15:25:22 +08:00
XuqmGroup
02407dfe16 chore: bump PUBLISH_VERSION to 1.0.1
Start new versioning scheme at 1.0.1 for all SDK modules.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-21 12:55:05 +08:00
XuqmGroup
d7fe714e69 feat(sdk-core): XuqmSDK.initialize() 新增 serverUrl 参数支持私有化部署
传入 serverUrl 后 SDK 自动完成:
- 配置所有服务端点(controlBaseUrl/fileBaseUrl/imApiBaseUrl/imWsUrl/pushBaseUrl/updateBaseUrl)
- 通过反射调用 LicenseSDK.initialize() 注入私有化 appKey 和 baseUrl
- wss/ws scheme 自动根据 https/http 推导

App 侧只需:
  XuqmSDK.initialize(context, appKey, serverUrl = "https://your-server.com", logLevel = WARN)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-21 12:45:15 +08:00
XuqmGroup
5481ffa57a docs(deploy): 移除 Jenkins 配置和 Android Demo 计划文档
- 删除 jenkins-setup.md 完整的 Jenkins 服务配置指南
- 更新 README.md 部署文档标题为公有化部署文档
- 添加私有化部署说明章节和相关设计文档链接
- 从 REST API 设计文档中移除 demo-service 相关描述
- 更新推送架构图中业务服务端描述为客户端服务器
- 删除 android-demo-plan.md Android Demo 开发计划文档
- 删除 multi-platform-im-roadmap.md 多平台 IM 路线图文档
- 删除 java-im-server-sdk-plan.md Java IM 服务端 SDK 计划文档
2026-05-18 17:57:04 +08:00
XuqmGroup
dc0cd7b2b1 feat(webview): 添加外部链接处理功能
- 引入 Context 和 Intent 导入以支持外部链接打开
- 添加 Locale 导入用于 URL 方案小写转换
- 实现 shouldLoadInWebView 函数检查 URL 方案是否允许在 WebView 中加载
- 实现 openExternalScheme 函数用于启动外部应用处理非 HTTP 链接
- 在 shouldOverrideUrlLoading 中集成新的 URL 处理逻辑
- 添加对 http、https、about、data、blob、javascript 方案的支持判断
2026-05-18 13:55:02 +08:00
XuqmGroup
aa20a790a1 一大波改动 2026-05-16 12:48:17 +08:00
XuqmGroup
e81bf89697 Use appKey in license SDK requests 2026-05-15 21:42:27 +08:00
XuqmGroup
2577d6e3e2 Add license check user info 2026-05-15 21:29:58 +08:00
XuqmGroup
8cf7ebb317 Use auth domain for license SDK 2026-05-15 21:09:32 +08:00
XuqmGroup
cbc8ed56cd Add Android license SDK 2026-05-15 21:00:24 +08:00
XuqmGroup
0fdfc048e7 refactor(webview): 重构WebView组件实现
- 将rememberSaveable导入路径修正到saveable包下
- 移除未使用的Log导入并添加ViewGroup导入
- 添加FrameLayout用于WebView容器包装
- 使用FrameLayout作为WebView的父容器以改善布局控制
- 更新AndroidView的factory和update回调中的WebView引用方式
- 通过容器视图统一管理WebView生命周期和布局参数
- 更新发布版本号从0.4.9到0.4.10
2026-05-11 18:58:51 +08:00
XuqmGroup
9e9b41fedb feat(webview): 添加独立的WebView活动支持
- 引入XWebViewActivity以提供完整的WebView界面
- 在AndroidManifest.xml中注册新的WebView活动
- 更新桥接功能以支持上下文启动活动
- 将内部函数和类可见性调整为internal以便组件间访问
- 增加发布版本号从0.4.3到0.4.9
2026-05-11 18:12:59 +08:00
XuqmGroup
4fe7678e07 docs(android-sdk): 添加 Android SDK 完整文档与模块配置
- 新增 Android SDK 主文档,包含模块结构、集成方式、快速开始指南
- 添加 sdk-core、sdk-im、sdk-push、sdk-update、sdk-webview 各模块详细说明
- 配置各模块的 build.gradle.kts 文件,设置依赖和发布选项
- 更新 gradle.properties 版本配置和编译参数
- 重构 XWebViewView 组件,增加相机权限、文件选择、下载拦截功能
- 添加 XWebViewTypes.kt 定义配置类和控制器接口
- 集成 Flutter WebView 桥接代码,实现跨平台功能对齐
2026-05-11 15:21:54 +08:00
Jenkins CI
3937c29552 ci(jenkins): adapt Jenkinsfile for Windows Jenkins node 2026-05-08 18:47:02 +08:00
XuqmGroup
499f557bf7 feat(im): 添加平台事件通知功能支持应用审核状态实时更新
- 新增 ImPlatformEventController 提供令牌获取接口
- 新增 InternalImPlatformEventController 处理内部通知请求
- 实现 ImPlatformEventService 核心服务逻辑包括令牌签发和消息推送
- 添加 StoreReviewImNotifier 在更新服务中触发审核状态变更通知
- 在前端平台中集成实时审核状态更新功能
- 配置各项目环境版本管理文件 (.java-version, .nvmrc)
- 更新 Docker 忽略文件和 Maven 配置以优化构建流程
2026-05-08 18:32:46 +08:00
XuqmGroup
94cc3bd097 docs(deploy): 添加部署文档和安全设计规范
- 新增 XuqmGroup 部署文档,包含部署方案、架构建议和部署步骤
- 添加安全设计规范,涵盖密码安全、AppSecret验证和服务端API认证
- 补充平台REST API规范,定义Server-to-Server调用接口和错误码
- 创建Java IM服务端SDK计划文档,规划Maven包发布和接口实现
2026-05-08 18:31:59 +08:00
XuqmGroup
e0594d9b8f feat(update): 添加应用更新检查功能支持用户ID参数
- 在UpdateApi接口中新增可选的userId查询参数
- 新增UpdateSDK对象用于统一管理应用更新逻辑
- 实现应用版本检查、下载安装和APK文件处理功能
- 添加下载URL规范化处理逻辑
- 在Flutter SDK中新增update模块实现跨平台更新功能
- 在iOS SDK中新增UpdateSDK类提供应用更新检查接口
- 支持Android和iOS平台的应用商店跳转功能
- 添加React Native SDK的更新检查和插件注册功能
- 实现RN Bundle的检查、下载和缓存机制
2026-05-08 12:00:32 +08:00
XuqmGroup
3b84d8e4f1 fix: respect status bar in xwebview screen 2026-05-08 10:38:58 +08:00
XuqmGroup
43a11b1f7d fix: repair im api query annotations 2026-05-08 09:55:11 +08:00
XuqmGroup
79ca308446 feat: add independent common http client 2026-05-08 09:27:38 +08:00
XuqmGroup
74d9566554 chore: sync local changes 2026-05-07 19:39:38 +08:00
XuqmGroup
84221ff6b2 feat(push): 添加推送SDK和消息服务实现
- 实现了 Android 推送 SDK,支持华为、小米、Oppo、Vivo、荣耀、FCM 等厂商推送
- 添加了推送配置管理和设备注册功能
- 实现了推送令牌管理和用户绑定功能
- 添加了消息发送、撤回、编辑等核心消息服务功能
- 实现了单聊和群聊消息历史记录管理
- 添加了消息读取回执和群组消息状态同步
- 实现了消息过滤、黑名单和权限控制
- 添加了离线消息推送和消息预览功能
- 实现了消息 Webhook 回调机制
2026-05-05 22:16:11 +08:00
XuqmGroup
9114672518 feat(push): 添加推送服务功能支持
- 实现了 ConversationViewModel 来管理对话列表的刷新和状态
- 集成了 FCM 推送服务支持并实现了自动令牌获取机制
- 构建了完整的 PushSDK 推送系统,支持华为、小米、OPPO、VIVO、荣耀等厂商推送
- 添加了推送配置管理和设备注册/注销功能
- 实现了跨平台推送令牌管理和服务绑定逻辑
- 扩展了服务器端功能服务管理器以支持推送服务激活请求流程
2026-05-05 22:02:46 +08:00
XuqmGroup
e87b1b0af2 refactor(push): 重构小米推送集成实现
- 移除轮询注册ID的逻辑,改用系统回调机制获取推送令牌
- 将广播接收器替换为小米官方PushMessageReceiver实现
- 添加完整的推送消息处理方法(注册结果、透传消息、通知点击等)
- 删除硬编码的应用ID和密钥配置
- 移除过时的小米推送相关类引用和方法调用
- 更新应用配置以匹配生产环境参数
2026-05-05 21:40:50 +08:00
XuqmGroup
ea693d5c66 feat(push): 添加多厂商推送集成支持
- 实现了华为 HMS 推送服务集成
- 实现了小米推送服务集成
- 实现了 OPPO 推送服务集成
- 实现了 vivo 推送服务集成
- 实现了荣耀推送服务集成
- 实现了 FCM 推送服务集成
- 添加了统一的厂商推送接口和检测机制
- 添加了推送配置 API 和存储管理
- 添加了推送令牌管理和设备注册功能
- 添加了模拟器环境的推送测试用例
2026-05-05 17:54:59 +08:00
XuqmGroup
19e7b27d6e docs(test): 更新测试报告和文档
- 更新发布版本从 0.1.0-SNAPSHOT 到 0.4.0
- 更新 README.md 中的依赖版本引用
- 完善 TEST_REPORT.md 包括最新测试结果和新增测试用例
- 添加详细的 TEST_PLAN.md 文档
- 更新 sample-app 的测试配置和依赖
- 为各个 SDK 模块添加 ProGuard 规则文件
- 修复 ApiClient 中的 Gson 类型适配器问题
- 改进测试架构,解决会话删除和跨设备测试问题
2026-05-05 16:06:32 +08:00
XuqmGroup
66f2f8a47b feat(login): 添加调试模式下的测试登录功能
- 在登录界面添加了测试用户登录按钮
- 仅在DEBUG模式下显示测试登录选项
- 集成测试用户1和测试用户2的快速登录功能
- 移动IM SDK中的事件监听器定义位置以优化代码结构
2026-05-03 22:28:34 +08:00
XuqmGroup
d0b263411d feat(im): 添加即时消息SDK核心功能实现
- 实现了聊天消息发送功能,支持文本、图片、视频、音频、文件等多种消息类型
- 集成了文件上传下载功能,支持多媒体文件的传输和管理
- 添加了群组管理功能,包括创建群组、成员管理、权限控制等操作
- 实现了好友系统,支持好友添加、删除、分组等功能
- 集成了黑名单管理,提供用户屏蔽和解除屏蔽功能
- 添加了会话管理功能,支持对话列表、未读消息统计等
- 实现了历史消息查询和搜索功能
- 添加了实时连接状态管理和自动重连机制
2026-05-03 00:11:06 +08:00
XuqmGroup
d9c9e4f858 feat(android-sdk): 添加完整的IM客户端SDK实现
- 实现了Android SDK的完整IM功能接口,包括消息、群组、好友、会话等核心功能
- 添加了消息收发、历史记录、撤回编辑等完整的消息操作能力
- 实现了群组管理功能,包括创建、成员管理、权限设置等操作
- 添加了好友关系链管理,支持添加、删除、分组等操作
- 实现了会话管理功能,包括置顶、免打扰、已读状态等
- 添加了黑名单、资料管理、搜索等辅助功能
- 补齐了批量操作接口,提升客户端操作效率
- 实现了WebSocket连接管理和事件监听机制
- 添加了离线消息同步和状态管理功能
2026-05-02 22:57:55 +08:00
XuqmGroup
cfd0382ba2 docs(project): 更新需求与开发进度对比报告并完善Android SDK接口定义
- 添加了完整的XuqmGroup平台需求与开发进度对比报告
- 实现了Android SDK的ImApi接口定义,涵盖群组、好友、黑名单等完整功能
- 定义了IM消息、会话、群组、用户资料等核心数据模型
- 实现了Android SDK的ImSDK核心功能类,包括连接管理和消息处理
2026-05-02 12:30:31 +08:00