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
XuqmGroup
20fc57ac97
docs: 添加 SDK API 重设计、安全设计规范和测试进度跟踪文档
...
- 新增 SDK API 重设计规范文档,统一各端 SDK 初始化、登录、消息接口
- 新增安全设计规范文档,涵盖密码安全、AppSecret 验证、令牌存储等安全要点
- 新增 Bug 跟踪记录文档,记录已修复问题和开放问题
- 新增测试进度跟踪文档,记录各模块测试覆盖情况和验证结果
2026-05-02 11:45:43 +08:00
XuqmGroup
72a03a65d6
docs(deploy): 添加部署文档并更新SDK API设计规范
...
- 新增完整的XuqmGroup部署文档,包含服务器配置、Docker Compose部署策略
- 更新SDK API重设计规范至V2.0,统一各端SDK初始化和登录接口
- 添加安全设计规范文档,涵盖密码安全、AppSecret验证等内容
- 新增离线推送架构设计文档,定义厂商推送集成方案
- 重构SDK登录流程,统一使用userId + userSig鉴权模式
- 移除dbName等外部配置参数,实现零感知平台地址配置
- 完善部署架构图和配置示例文件
2026-05-02 11:29:49 +08:00
XuqmGroup
553427d44e
feat: 简化登录模型,移除 nickname/avatar/expiresAt
...
- XuqmSDK.login() 只保留 userId + userSig
- 移除 UserSigRefresher 续签逻辑
- XuqmLoginSession 移除 nickname/avatar/expiresAt
- ImSDK.login() 同步简化
- AuthRepository 适配新登录方式,移除过期检查与定时刷新
- README 示例同步更新
2026-05-01 22:18:47 +08:00
XuqmGroup
595a91ae3d
feat(sdk): 更新 SDK 设计文档和 API 重构
...
- 添加 expiresAt 和 refreshUserSig 参数支持自动续签
- 修改 PushSDK 初始化方式,自动完成设备注册和厂商初始化
- 调整过期续签策略,从提前 15 分钟改为提前 5 分钟触发
- 重构 RN SDK 文档结构,简化安装和使用方式
- 更新统一登录流程,支持 profile 信息传递
- 添加 IM 数据库自动隔离功能
- 修复 Android 群消息聚合问题
- 补充自动化测试验证和错误处理机制
2026-05-01 21:27:38 +08:00
XuqmGroup
dc1ad2be69
fix(im): avoid duplicate connectWithToken when init and login are both called
2026-04-30 18:26:52 +08:00
XuqmGroup
ba3f286341
docs(testing): 添加测试文档和修复多个平台SDK问题
...
- 新增 BUG_TRACKER.md 记录已修复和开放的bug
- 新增 TEST_EXECUTION_2026-04-30.md 自动化测试执行报告
- 新增 TEST_PROGRESS.md 测试进度跟踪文档
- 修复 Android SDK connectedCheck 内存不足问题
- 修复 Android sample-app CAMERA 权限 lint 失败
- 修复 Android UpdateSDK longVersionCode minSdk lint 失败
- 修复 RN Chat Demo Jest 无法解析本地 SDK 源码包
- 修复 Python Server SDK 回调消息解析与顶层导出错误
- 修复 Vue3 SDK package exports 条件顺序警告
- 修复 im-service 群消息不进入会话聚合列表问题
- 修复 im-service 对外时间字段单位不一致问题
- 修复 RN SDK 历史消息 upsert 丢失回推状态问题
- 修复 Android 黑名单操作静默失败问题
- 修复 AppSecret 调用无鉴权安全问题
- 修复 IM Token 无过期信息问题
- 修复 RN SDK 草稿同步服务端数据污染问题
- 修复 Vue3 SDK 撤回编辑后依赖 WS 刷新延迟问题
- 修复 im-service 消息摘要不支持媒体类型问题
2026-04-30 16:54:10 +08:00
XuqmGroup
4abb6f5b1b
docs(testing): 添加测试进度跟踪和bug记录文档
...
- 创建 BUG_TRACKER.md 记录已修复和开放的 bug 问题
- 添加 TEST_PROGRESS.md 跟踪各模块测试覆盖率和验证状态
- 修复 RN Chat Demo Jest 配置以支持本地 SDK 源码解析
- 修复 Python Server SDK 回调消息解析和顶层导出问题
- 修复 Vue3 SDK package exports 条件顺序警告
- 完善 im-service 时间字段单位一致性处理
- 优化 RN SDK 历史消息 upsert 逻辑避免回推状态丢失
- 增强 Android 黑名单操作错误处理和 UI 反馈
- 实现 im-service AppSecret 鉴权和 HMAC 签名验证
- 添加 IM Token 过期时间和自动续签机制
- 修复 RN SDK 草稿同步避免多设备数据污染
- 优化 Vue3 SDK 撤回编辑操作的本地状态更新
- 完善 im-service 消息摘要媒体类型占位文本显示
2026-04-30 15:53:38 +08:00
XuqmGroup
947972369c
docs(testing): 添加测试文档与修复API分页问题
...
- 修复ImApi中历史消息接口返回类型从List改为PageResult
- 修复ImSDK中fetchHistory和fetchGroupHistory方法获取数据方式
- 重构ChatScreen中Column布局结构以解决UI问题
- 添加BUG_TRACKER.md记录已修复问题和开放问题
- 添加TEST_PLAN.md定义完整的测试策略和用例
- 添加TEST_PROGRESS.md跟踪各模块测试执行情况
- 为Python SDK添加crypto相关单元测试
- 移除CameraAction枚举未使用代码
2026-04-30 15:42:04 +08:00
XuqmGroup
026f8e874c
feat(chat): 实现聊天界面功能并完善文档说明
...
- 新增AttachmentRepository处理图片、视频、音频、文件发送功能
- 实现AuthRepository管理用户认证和会话状态
- 添加EnvironmentRepository支持环境配置切换
- 完成ChatScreen界面实现,包含消息收发、媒体文件处理
- 更新设计文档补充Android聊天页历史加载和测试验证说明
- 添加联系人黑名单错误信息返回和IM验证流程调整说明
2026-04-30 14:59:47 +08:00
XuqmGroup
a948abd845
feat(deploy): 添加生产环境部署配置和联调环境切换功能
...
- 新增 .env.production.example 配置文件,包含所有微服务的数据库和Redis配置
- 添加 compose.production.yaml Docker Compose部署文件,定义web和各服务容器
- 实现Android SDK环境切换功能,支持外部服务和本地联调模式切换
- 添加推送注册状态管理和接收开关设置界面
- 集成演示服务的应用密钥客户端和认证服务实现
- 完善文档说明各SDK模块的集成和使用方法
2026-04-30 11:47:01 +08:00
XuqmGroup
6f5ce42e50
docs(sdk): 添加 React Native SDK 文档和 Android/HarmonyOS 发版脚本
...
- 新增 XuqmGroup React Native SDK 使用文档,包含安装、初始化、HTTP客户端、IM模块、推送模块、版本管理等功能说明
- 添加 Android Gradle 发版任务脚本,支持构建发布 APK 并上传到更新服务
- 添加 HarmonyOS hvigorw 发版任务脚本,支持 HAP 包构建和上传功能
- 实现多平台版本检查、自动重连、灰度发布等发版流程自动化
- 集成商店提交、定时发布、Webhook 回调等发布后处理功能
2026-04-29 17:35:52 +08:00
XuqmGroup
19b389856f
build: add consumer-rules.pro and untrack local.properties
...
consumer-rules.pro was referenced in all modules but never committed;
Gradle fails if the declared proguard file doesn't exist on disk.
local.properties is machine-specific (sdk.dir) and must not be in VCS.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-29 16:02:57 +08:00
XuqmGroup
a1614840e5
docs(sdk): 添加 Android SDK 文档和 API 设计规范
...
- 新增 Android SDK 使用文档,包含模块结构、集成方式和快速开始指南
- 添加 SDK API 重设计规范,统一初始化和登录接口设计
- 补充安全设计规范,完善 UserSig 鉴权和敏感数据处理方案
- 创建平台 REST API 规范,定义服务端到服务端的调用接口
- 添加离线推送架构设计,集成各大厂商推送服务与 IM 联动方案
2026-04-29 15:46:39 +08:00
XuqmGroup
48ddea9f68
build: declare singleVariant("release") to register publish component
...
AGP 7.1+ does not automatically register the release SoftwareComponent
for maven-publish. Must explicitly opt in via android { publishing {
singleVariant("release") } } so that components.release is available
in afterEvaluate.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-29 15:32:23 +08:00
XuqmGroup
b5d00c5f78
build: switch apply(from) to Groovy publish.gradle for AGP compat
...
KTS scripts loaded via apply(from) are compiled without AGP on the
classpath, so LibraryExtension and ext are unresolvable. Groovy
applied scripts are evaluated dynamically and don't have this issue.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-29 15:23:51 +08:00
XuqmGroup
b7de2852eb
build: apply maven-publish to all SDK library modules
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-29 15:09:12 +08:00