XuqmGroup-Web/docs-site/docs/android/update.md
XuqmGroup 6cd938cfbc feat(android-sdk): 添加完整的IM客户端SDK实现
- 实现了Android SDK的完整IM功能接口,包括消息、群组、好友、会话等核心功能
- 添加了消息收发、历史记录、撤回编辑等完整的消息操作能力
- 实现了群组管理功能,包括创建、成员管理、权限设置等操作
- 添加了好友关系链管理,支持添加、删除、分组等操作
- 实现了会话管理功能,包括置顶、免打扰、已读状态等
- 添加了黑名单、资料管理、搜索等辅助功能
- 补齐了批量操作接口,提升客户端操作效率
- 实现了WebSocket连接管理和事件监听机制
- 添加了离线消息同步和状态管理功能
2026-05-02 22:57:55 +08:00

120 行
2.7 KiB
Markdown

此文件含有模棱两可的 Unicode 字符

此文件含有可能会与其他字符混淆的 Unicode 字符。 如果您是想特意这样的,可以安全地忽略该警告。 使用 Escape 按钮显示他们。

# Android 版本更新接入指南
**模块**`com.xuqm:sdk-update` · **功能**App 版本检查、下载安装
---
## 1. 添加依赖
```kotlin
// app/build.gradle.kts
dependencies {
implementation("com.xuqm:sdk-update:0.4.0")
}
```
---
## 2. 检查更新
```kotlin
import com.xuqm.sdk.update.UpdateSDK
// 在协程中调用
lifecycleScope.launch {
val update = UpdateSDK.checkAppUpdate(context)
if (update?.needsUpdate == true) {
println("发现新版本: ${update.versionName}")
println("更新日志: ${update.changeLog}")
println("下载地址: ${update.downloadUrl}")
if (update.forceUpdate == true) {
// 强制更新:必须升级后才能使用
showForceUpdateDialog(update)
} else {
// 可选更新:提示用户
showOptionalUpdateDialog(update)
}
}
}
```
---
## 3. 下载并安装
```kotlin
lifecycleScope.launch {
UpdateSDK.downloadAndInstall(context, downloadUrl) { progress ->
// 更新下载进度 0-100
updateProgressBar(progress)
}
}
```
`downloadAndInstall` 内部会:
1. 下载 APK 到外部存储目录
2. 通过 `FileProvider` 获取文件 URI
3. 启动系统安装界面
**需提前配置 `FileProvider`**
```xml
<!-- AndroidManifest.xml -->
<provider
android:name="androidx.core.content.FileProvider"
android:authorities="${applicationId}.fileprovider"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/file_paths" />
</provider>
```
```xml
<!-- res/xml/file_paths.xml -->
<?xml version="1.0" encoding="utf-8"?>
<paths>
<external-files-path name="updates" path="." />
</paths>
```
---
## 4. 强制更新处理
当服务端返回 `forceUpdate = true` 时,建议业务层:
1. 弹出不可取消的对话框
2. 只允许用户点击「立即更新」
3. 下载完成后自动调用安装
```kotlin
fun showForceUpdateDialog(update: UpdateInfo) {
AlertDialog.Builder(context)
.setTitle("发现重要更新")
.setMessage("当前版本已不可用,请升级至 ${update.versionName}")
.setCancelable(false)
.setPositiveButton("立即更新") { _, _ ->
lifecycleScope.launch {
UpdateSDK.downloadAndInstall(context, update.downloadUrl!!) { progress ->
// 显示下载进度
}
}
}
.show()
}
```
---
## 5. 多模块统一登录
Update 模块与 IM、Push 模块共享同一套登录态:
```kotlin
XuqmSDK.login(userId = "user_001", userSig = "jwt_token")
// UpdateSDK 在 checkAppUpdate 时自动携带 appKey,无需额外登录操作
```