XuqmGroup-Web/docs-site/docs/miniprogram/index.md

207 行
4.0 KiB
Markdown

# 微信小程序 SDK 概览
**包名**`@xuqm/miniprogram-sdk` · **版本**0.1.0
---
## npm 安装
```bash
npm install @xuqm/miniprogram-sdk
```
或在微信开发者工具中:
1. 打开「工具」→「构建 npm」
2. 在小程序 `package.json` 中添加上述依赖
---
## 初始化
```ts
import { XuqmMiniProgramSDK } from '@xuqm/miniprogram-sdk'
const sdk = new XuqmMiniProgramSDK()
sdk.init({
appKey: 'your_app_key',
appSecret: 'your_app_secret',
debug: true, // 可选
})
```
---
## IM 接入
### 登录
```ts
// 使用 UserSig 登录
await sdk.login('user_001', 'your_user_sig_jwt')
// 或使用演示账号快速登录(仅测试)
const token = await sdk.loginWithDemo('user_001', '123456')
```
### 监听消息
```ts
sdk.on('connected', () => {
console.log('IM 已连接')
})
sdk.on('message', (msg) => {
console.log('收到消息:', msg.msgType, msg.content)
})
sdk.on('read', (msg) => {
console.log('已读回执:', msg.id)
})
sdk.on('revoke', (data) => {
console.log('消息被撤回:', data.msgId)
})
sdk.on('disconnected', (reason) => {
console.log('断开连接:', reason)
})
sdk.on('error', (error) => {
console.error('IM 错误:', error)
})
```
### 发送消息
```ts
const msg = await sdk.send({
toId: 'user_002',
chatType: 'SINGLE',
msgType: 'TEXT',
content: 'Hello!',
})
```
### 发送文本消息(快捷方法)
```ts
await sdk.sendTextMessage('user_002', 'SINGLE', 'Hello!')
```
### 历史消息
```ts
const history = await sdk.fetchHistory('user_002')
const groupHistory = await sdk.fetchGroupHistory('group_xxx')
```
### 会话列表
```ts
const conversations = await sdk.listConversations()
await sdk.markRead('user_002')
await sdk.setConversationPinned('user_002', 'SINGLE', true)
await sdk.setConversationMuted('user_002', 'SINGLE', true)
```
### 群聊
```ts
const groups = await sdk.listGroups()
const group = await sdk.getGroupInfo('group_xxx')
const members = await sdk.listGroupMembers('group_xxx')
```
### 好友管理
```ts
const friends = await sdk.listFriends()
await sdk.addFriend('user_002')
await sdk.removeFriend('user_002')
```
### 离线消息同步
```ts
const count = await sdk.offlineMessageCount()
const messages = await sdk.syncOfflineMessages()
```
---
## Push 接入(小程序通知)
微信小程序使用**订阅消息**和**服务通知**实现 Push,由服务端调用微信 API 下发。
XuqmGroup 小程序 SDK 本身不直接处理 Push Token小程序无设备 Token 概念),业务方需要:
1. 用户订阅消息模板
2. 业务服务端调用 XuqmGroup Server SDK 的 `send_push` 接口
3. 或业务服务端直接调用微信服务端 API 下发订阅消息
```python
# Python Server SDK 示例
from xuqm_im_server_sdk import XuqmImServerSdk
sdk = XuqmImServerSdk(config)
sdk.send_push(
user_id="user_001",
title="新消息",
body="你有一条未读消息",
)
```
---
## Update 接入(小程序自带更新机制)
微信小程序的更新由微信客户端自动管理,开发者可通过微信 API 检查更新:
```ts
const updateManager = wx.getUpdateManager()
updateManager.onCheckForUpdate((res) => {
console.log('是否有新版本:', res.hasUpdate)
})
updateManager.onUpdateReady(() => {
wx.showModal({
title: '更新提示',
content: '新版本已准备好,是否重启应用?',
success: (res) => {
if (res.confirm) {
updateManager.applyUpdate()
}
},
})
})
```
> XuqmGroup 小程序 SDK 不额外提供 Update 模块,直接使用微信小程序原生更新能力即可。
---
## 消息类型
| MsgType | 说明 |
|---------|------|
| `TEXT` | 纯文本 |
| `IMAGE` | 图片 |
| `VIDEO` | 视频 |
| `AUDIO` | 语音 |
| `FILE` | 文件 |
| `LOCATION` | 位置 |
| `CUSTOM` | 自定义 |
| `NOTIFY` | 系统通知 |
| `RICH_TEXT` | 富文本 |
| `CALL_AUDIO` | 语音通话信令 |
| `CALL_VIDEO` | 视频通话信令 |
| `QUOTE` | 引用 |
| `MERGE` | 合并转发 |
| `FORWARD` | 转发 |
| `REVOKED` | 撤回 |
[→ Server API 文档 →](/server/api)