XuqmGroup
4896f24af8
feat(bugcollect): SDK v1.1.0 — 修复 packageName 缺失导致 captureError 静默失败
...
Root cause: SdkPlatformConfigApi.fetchConfig 未传 packageName → 服务端返回400
→ bugCollectEnabled=false → captureError 是空操作
修复内容:
- SdkPlatformConfigApi: 增加 packageName 查询参数
- SdkPlatformConfig: 修正字段名 bugCollectApiUrl/features.bugCollect
- XuqmSDK: 传入 appContext.packageName,读取 features?.bugCollect
- Fingerprint: 使用 exceptionType(类名)替代 level 字符串,避免同一崩溃按级别分桶
- IssueEvent: 增加 eventId、breadcrumbs、DeviceInfo 扩展字段
- BugCollect: 增加 addBreadcrumb(),captureError/captureCrash 附加面包屑和设备信息
- LogUploader: 序列化 eventId/breadcrumbs/expanded device
- LogQueue: 崩溃恢复使用 exceptionType 重建 fingerprint
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-17 15:30:40 +08:00
XuqmGroup
c8a482a5c0
refactor: sdk-log → sdk-bugcollect
...
- 目录/包名/类名/Gradle plugin 全部重命名
- XLog → BugCollect
- logApiUrl/logEnabled → bugCollectApiUrl/bugCollectEnabled
- assembleDebug 通过
Co-Authored-By: Claude <noreply@anthropic.com>
2026-06-16 17:39:23 +08:00
XuqmGroup
39f5c4ecf6
fix: sdk-log 编译修复 + sdk-core/sdk-webview 类型修正
...
- sdk-log: AGP 9.x mappingFileProvider 适配、LogQueue optNullableString
- sdk-core: 移除重复 getUserInfo() 函数
- sdk-webview: XuqmSDK.getUserInfo() → .userInfo 属性访问
Co-Authored-By: Claude <noreply@anthropic.com>
2026-06-16 13:46:01 +08:00
XuqmGroup
b25a27c9f6
docs(sdk): 添加 Android SDK 架构总览文档
...
- 新增架构总览文档,包含整体架构图和依赖关系
- 详细描述初始化流程(ContentProvider 自动和手动两种方式)
- 补充技术栈版本信息和发布说明
- 更新服务器端和Web端项目上下文文档
- 添加新模块 xuqm-log-service 的版本文件
- 在服务器端 POM 中注册 xuqm-log-service 模块
- 修复 Android SDK 字符串模板语法错误
- 修改服务器端 webhook 服务的 Redis 锁获取逻辑
2026-06-16 12:35:17 +08:00
XuqmGroup
4a18d06c63
docs: 添加 CLAUDE.md + 各 module README + sdk-webview JSBridge 补全
...
Agent 7 + Agent 8:
- CLAUDE.md 项目上下文
- 各 module README (core/im/push/update/webview/log)
- XWebViewStandardHandlers.kt 补全标准 JSBridge handler
2026-06-16 12:14:54 +08:00
XuqmGroup
fbafc8d802
feat: sdk-log v1.0.0 新建 + sdk-core logApiUrl 扩展 + sdk-update 进度回调
...
Agent 7 — sdk-core:
- SdkPlatformConfig 新增 logApiUrl、logEnabled 字段
- XuqmSDK 新增 logApiUrl/logEnabled 属性
- fetchAndApplyPlatformConfig 填充新字段
Agent 7 — sdk-log v1.0.0:
- XLog 主入口:event/captureError/warn/info/startCrashCapture
- LogQueue:SharedPreferences 存储 + 批量 OkHttp 上报
- CrashCapture:Thread.setDefaultUncaughtExceptionHandler
- Fingerprint:SHA-256 指纹去重
- FunnelTracker:漏斗分析
- Gradle Plugin:com.xuqm.log — assembleRelease 后自动上传 mapping
Agent 7 — sdk-update:
- downloadApk/downloadPlugin 新增 onProgress 进度回调
- checkAppUpdate 版本缓存(30分钟 TTL)
2026-06-16 12:10:58 +08:00
XuqmGroup
3fe411738d
docs(sdk): 更新跨平台SDK设计规范至v1.1版本
...
- 更新版本号至v1.1,状态调整为Android已落地
- 添加私有化与公有平台完全独立的原则说明
- 增加Android配置文件路径规范
- 修改platformUrl为可选参数,默认使用内置公有平台地址
- 添加awaitInitialization和retryInitialization方法
- 调整API响应格式,统一返回data结构
- 优化各子SDK配置流程和错误处理机制
- 更新ImSDK登录逻辑,支持userSig为空时跳过连接
- 添加platformType和platformConfig属性
- 标记login/logout方法为已废弃,合并至setUserInfo
- 修改PushSDK方法签名,将Promise改为void
- 添加PushSDK.currentRegistration和detectVendor方法
- 更新Android Kotlin代码示例和完整示例
- 重构服务端接口要求章节,明确各子SDK独立配置接口
- 更新测试代码,替换login/logout为setUserInfo
- 调整UI组件中的推送设置调用方式
2026-06-15 15:51:58 +08:00
XuqmGroup
16c6668533
feat(sdk): 扩展用户信息功能并增强文件下载权限管理
...
- 扩展 setUserInfo 方法支持用户昵称和头像参数
- 重构 XuqmUserInfo 数据类使用 id 替代 userId 字段
- 更新 UpdateSDK 中用户ID解析逻辑适配新字段名
- 为 Android 11+ 设备添加 MANAGE_EXTERNAL_STORAGE 权限检查
- 实现下载暂停和恢复机制处理存储权限请求流程
- 添加权限说明对话框指导用户完成设置授权
- 集成生命周期观察者自动续传获得权限后的下载任务
2026-06-11 16:41:07 +08:00
XuqmGroup
db8a2a6820
feat(sdk-core): 新增 XuqmSDK.setUserInfo,替换 UpdateSDK.setUserId
...
- 新增 XuqmUserInfo 数据类和 XuqmSDK.setUserInfo(userId) 统一接口
- 供 update 灰度发布、push 精准推送等服务共用,调用一次即可
- UpdateSDK 移除 setUserId,resolveUserId 改为优先读取
XuqmSDK.userInfo,其次 currentLoginSession
- 说明:IM socket 连接需独立调用 XuqmSDK.login,setUserInfo 不影响 IM 鉴权
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-11 15:12:40 +08:00
XuqmGroup
510bb8439b
feat(file): 添加文件下载权限管理和回退机制
...
- 实现 PublicDownloads 目录失败时自动回退到 Sandbox 目录
- 添加 Android 11+ 所有文件访问权限检查功能
- 提供跳转到文件访问权限设置页面的 Intent 方法
- 重构目录解析逻辑为独立的 resolveBaseDir 函数
- 增强文件下载的异常处理和日志记录
- 修复空白文件名处理逻辑,确保默认文件名为 download.bin
2026-06-10 20:22:32 +08:00
XuqmGroup
2bd497ead4
debug(file): 添加文件下载功能的调试日志
...
- 在 FileSDK 的 saveBlobDownload 方法中添加解码、目录创建和文件写入的日志记录
- 在 XWebViewView 的 readBlobAndPost 函数中添加 JavaScript 端的数据读取和错误处理日志
- 添加锚点拦截和消息传递过程中的日志记录
- 在 blobdownload 处理流程中添加成功和失败的状态日志
- 增加文件保存到相册操作的结果日志记录
2026-06-10 20:13:45 +08:00
XuqmGroup
ff13b54d9e
feat(file): 添加图片保存到系统相册功能
...
- 在 FileSDK 中新增 saveImageToGallery 方法用于将图片文件保存到系统照片库
- 支持 Android Q 及以上版本使用 MediaStore API 安全存储图片
- 对于旧版 Android 系统使用兼容方案将图片复制到 Pictures 目录
- 在 WebView 组件下载完成后自动将图片文件保存到相册
- 仅当图片未被保存到相册时才显示文件打开选项以避免重复操作
2026-06-10 12:39:51 +08:00
XuqmGroup
2a9b1c0f36
feat(file): 添加文件下载完成后打开文件的功能
...
- 导入 PendingIntent 相关类
- 在下载完成通知中添加打开文件的意图
- 实现构建打开文件 PendingIntent 的方法
- 使用 FileProvider 安全分享文件 URI
- 根据文件扩展名获取正确的 MIME 类型
- 创建带读取权限的查看意图并设置标记兼容性
2026-06-05 16:28:34 +08:00
XuqmGroup
2449c2b920
fix(file): 修复文件下载完成后通知显示问题
...
- 使用capturedNotifId替换notifId变量
- 先取消原有通知再创建新通知
- 重新构建通知内容包括标题和完成状态
- 添加自动取消功能
- 优化通知图标和文本显示逻辑
2026-06-05 16:22:12 +08:00
XuqmGroup
6514c27eaa
feat(webview): 优化文件下载和图片选择功能
...
- 下载文件时在公共下载目录下创建应用名称子目录
- 实现支持多MIME类型的文件选择器合约
- 添加相机拍照功能并在图片选择时显示选项对话框
- 为Android 13+系统添加下载通知权限请求
- 重构文件选择逻辑以支持更灵活的MIME类型处理
2026-06-05 16:15:50 +08:00
XuqmGroup
d19b0ae8fc
fix(webview): 解决文件选择器MIME类型解析和通知ID空指针问题
...
- 修复了文件下载通知中notifId为空时的崩溃问题
- 为XWebViewJsBridge添加了额外的回调参数以支持消息处理
- 重构了resolvePickerMimeType函数的文档注释并优化了MIME类型解析逻辑
- 将文件选择器的MIME类型解析逻辑统一到resolvePickerMimeType函数中
- 改进了HTML accept类型的转换机制,更好地支持混合和未知MIME类型
2026-06-05 15:53:51 +08:00
XuqmGroup
0ce2f21307
feat(sdk): 新增文件上传下载功能并完善WebView组件
...
- 在Android SDK中新增FileSDK模块,提供统一的文件上传、下载、打开接口
- 实现Android端文件下载到沙盒目录或公共Downloads目录,并支持通知栏进度显示
- 完善Android WebView组件,增加文件选择、拍照、下载拦截、H5双向通信能力
- 在iOS SDK中新增XuqmFileSDK模块,提供文件上传下载功能
- 实现iOS端WebView组件的文件下载拦截和原生文件选择器集成
- 更新文档说明Android和iOS SDK的文件操作API使用方法
- 重构iOS SDK项目结构,按功能拆分为多个独立模块便于集成
- 添加文件下载进度通知和完成后的文件打开功能
2026-06-05 15:48:08 +08:00
XuqmGroup
d12c575dd6
feat(update): 添加更新检查功能增强和配置文件读取日志
...
- 新增 UpdateInfo.requiresLogin 字段支持登录后更新检测
- 添加 UpdateSDK.ignoreVersion 和 clearIgnoredVersions 方法实现版本忽略功能
- 扩展 checkAppUpdate 方法支持 userIdOverride 参数用于 H5 登录后重检
- 在 ConfigFileReader 中添加日志输出便于调试配置文件读取问题
- 优化 XuqmInitializerProvider 自动初始化错误处理和日志记录
- 实现非强制更新版本忽略机制,支持下次检测时不弹窗提示
- 添加 15 秒超时等待 SDK 初始化完成的异步处理逻辑
2026-06-04 13:14:02 +08:00
XuqmGroup
5fe859e975
feat(sdk): 将许可证文件替换为初始化配置文件
...
- 将 license.xuqm 文件替换为 config.xuqm 配置文件
- 实现 ConfigFileReader 来读取和解密配置文件
- 添加 ConfigFileCrypto 用于配置文件加密解密
- 更新 autoInitialize 方法以从配置文件自动初始化
- 移除对 sdk-license 的反射依赖
- 在 HarmonySDK 中实现配置端点动态配置
- 更新 iOS SDK 中的配置文件读取逻辑
- 统一各平台配置文件格式和处理方式
2026-06-02 17:15:49 +08:00
XuqmGroup
90ef764695
refactor(sdk): 优化 SDK 初始化逻辑和错误处理
...
- 移除初始化失败原因注释
- 简化授权文件检查逻辑
- 统一错误消息为英文格式
- 优化授权文件路径验证流程
- 改进包名匹配错误提示信息
2026-05-29 17:14:20 +08:00
XuqmGroup
2404809649
refactor(sdk): 移除初始化失败日志记录并优化错误处理
...
- 移除了 XuqmInitializerProvider 中的异常日志记录逻辑
- 将失败原因存储至 XuqmSDK.getInitError() 供应用决定展示方式
- 优化了授权文件不存在时的错误信息提示
- 简化了包名不匹配的错误处理流程
- 移除了调试日志输出以提升性能
- 改进了错误消息的中文本地化显示
2026-05-29 17:07:12 +08:00
XuqmGroup
42b644ac11
fix(sdk): 完善初始化异常处理和日志记录
...
- 在 XuqmInitializerProvider 中添加 autoInitialize 失败时的错误日志记录
- 在 autoInitialize 方法中添加许可证文件缺失时的详细错误日志
- 添加包名匹配失败时的错误日志记录
- 添加许可证读取成功时的调试日志
- 新增 listAssets 辅助方法用于列出资产目录文件
2026-05-29 17:00:04 +08:00
XuqmGroup
db3ec3d377
fix: auto-init XuqmSDK via ContentProvider; remove packageName from update check; fix Jenkinsfile
...
- sdk-core: add XuqmInitializerProvider for auto-init at app startup
- sdk-core: register provider in AndroidManifest.xml
- sdk-license: remove duplicate XuqmSDK init from LicenseInitializerProvider
- sdk-update: awaitInitialization() now uses requireInit() directly (no 30s polling)
- Jenkinsfile: replace Windows external commands (findstr/powershell) with Groovy readFile/writeFile
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-23 04:11:32 +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
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
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
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
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
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
d0b263411d
feat(im): 添加即时消息SDK核心功能实现
...
- 实现了聊天消息发送功能,支持文本、图片、视频、音频、文件等多种消息类型
- 集成了文件上传下载功能,支持多媒体文件的传输和管理
- 添加了群组管理功能,包括创建群组、成员管理、权限控制等操作
- 实现了好友系统,支持好友添加、删除、分组等功能
- 集成了黑名单管理,提供用户屏蔽和解除屏蔽功能
- 添加了会话管理功能,支持对话列表、未读消息统计等
- 实现了历史消息查询和搜索功能
- 添加了实时连接状态管理和自动重连机制
2026-05-03 00:11:06 +08:00
XuqmGroup
20fc57ac97
docs: 添加 SDK API 重设计、安全设计规范和测试进度跟踪文档
...
- 新增 SDK API 重设计规范文档,统一各端 SDK 初始化、登录、消息接口
- 新增安全设计规范文档,涵盖密码安全、AppSecret 验证、令牌存储等安全要点
- 新增 Bug 跟踪记录文档,记录已修复问题和开放问题
- 新增测试进度跟踪文档,记录各模块测试覆盖情况和验证结果
2026-05-02 11:45:43 +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
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
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
XuqmGroup
0425c988ae
feat(chat): 添加聊天界面和文件更新SDK功能
...
- 实现完整的聊天界面UI组件,支持文本、图片、视频、音频、文件等多种消息类型
- 集成IM消息收发功能,实现消息气泡显示和用户头像占位符
- 添加媒体文件选择和拍摄功能,支持相册图片、视频及相机拍照录像
- 实现语音录制和播放功能,包含按住说话交互和权限处理
- 添加群组提及功能,支持@用户和提及候选列表显示
- 实现消息回复和引用功能,支持消息长按回复操作
- 添加本地消息搜索功能,支持搜索当前会话的历史消息
- 实现文件上传下载功能,集成FileSDK进行文件传输管理
- 添加应用更新检查功能,集成UpdateSDK支持版本更新
- 实现消息状态显示,包括发送、送达、已读等状态标识
- 添加群组已读人数统计,显示消息在群聊中的阅读情况
- 实现草稿保存和恢复功能,支持断点续聊体验
- 添加连接状态横幅,实时显示IM服务连接状态
- 实现滚动加载更多历史消息,优化大量消息的性能表现
- 添加多媒体文件下载保存功能,支持保存到应用专属目录
2026-04-28 20:11:38 +08:00
XuqmGroup
b7ecf13908
feat(sample): 添加示例应用的核心功能模块
...
- 实现环境配置管理,支持外部和本地主机模式切换
- 集成Demo API接口,包含登录、注册、文件上传等功能
- 构建附件处理仓库,支持图片、视频、音频和文件发送
- 开发认证仓库,管理用户会话和IM令牌刷新机制
- 添加语音录制功能,支持实时音频消息录制
- 创建依赖注入容器,统一管理应用组件实例
- 实现登录界面,提供用户认证交互功能
- 开发聊天界面,集成消息收发和媒体处理功能
2026-04-28 16:08:06 +08:00
XuqmGroup
bee82637f3
feat(chat): 添加聊天功能相关API接口、本地缓存和数据仓库
...
- 添加DemoApi接口定义用户认证和资料管理API
- 实现LocalImCache用于本地存储IM对话和消息历史
- 添加MessageContent模型处理多媒体消息内容
- 创建AttachmentRepository处理图片视频音频文件发送
- 实现AuthRepository管理用户登录注册和会话
- 添加VoiceRecorder支持语音录制功能
- 创建AppDependencies依赖注入容器
- 添加ChatScreen界面组件实现聊天UI逻辑
2026-04-28 09:45:20 +08:00
XuqmGroup
5a0378d579
feat(sdk): 实现动态服务端点配置和环境切换功能
...
- 移除硬编码的基础URL常量,改为可配置的服务端点
- 添加ServiceEndpointRegistry用于统一管理所有服务端点地址
- 实现ApiClient支持多基础URL的Retrofit实例缓存机制
- 新增XuqmSDK.configureServiceEndpoints等方法用于运行时切换环境
- 为sample-app添加SampleEnvironmentConfig支持本地联调环境切换
- 创建独立的IM、Push、Update SDK模块并集成服务端点配置
- 更新文档说明如何进行联调环境切换操作
2026-04-27 19:30:06 +08:00
XuqmGroup
087753075e
feat(sdk): 添加认证仓库和登录会话管理功能
...
- 新增 AuthRepository 处理用户认证和加密存储
- 实现 SDK 登录会话管理和自动通知模块
- 添加 IM SDK 登录集成和会话传递
- 更新 API 响应结构支持 userSig 字段
- 添加文件存储服务和上传功能
- 完善文档说明 SDK 架构和集成方式
2026-04-27 19:23:11 +08:00
XuqmGroup
00f2ad04b7
feat(sample): 添加示例应用的核心功能模块
...
- 集成依赖管理配置文件 libs.versions.toml,统一管理项目依赖版本
- 实现演示 API 接口定义,包含登录、注册、用户管理等 RESTful 端点
- 创建认证仓库 AuthRepository,处理用户会话管理和加密存储
- 开发登录和注册界面,实现用户身份验证流程
- 构建聊天界面 ChatScreen,支持消息收发和历史记录显示
- 实现联系人管理功能,包含好友搜索和添加删除操作
- 添加会话列表界面,展示最近聊天记录和未读消息提示
2026-04-27 19:00:54 +08:00
XuqmGroup
6dd0fa8f49
feat(sdk): 初始化 Android SDK 核心功能模块
...
- 添加 SDK 配置管理、网络请求客户端和令牌存储功能
- 实现即时通讯 IM 模块,包括消息收发、群组管理和会话功能
- 集成推送服务和应用更新功能模块
- 创建示例应用演示 SDK 使用方法
- 配置项目依赖管理和构建设置
2026-04-27 17:18:55 +08:00
XuqmGroup
3e66380802
feat(sample): 集成 Sentry 异常监控功能
...
- 添加 Sentry Android SDK 依赖 (版本 8.39.1)
- 在 sample-app 中集成 Sentry 监控插件
- 添加 Sentry 初始化配置到应用 Application 类
- 在 MainActivity 中添加异常上报测试按钮
- 添加闪退测试功能用于验证 Sentry 监控
- 更新 AndroidManifest.xml 配置应用入口点
- 添加新的 gradle wrapper 文件支持项目构建
- 创建 sdk-core、sdk-im、sdk-push、sdk-update 模块基础结构
- 配置各 SDK 模块的 build.gradle.kts 文件
- 更新 libs.versions.toml 添加 Sentry 版本定义
2026-04-24 16:46:38 +08:00