XuqmGroup-RNSDK/packages/common/README.md
XuqmGroup 4c3019edab docs: 添加 CLAUDE.md + 各 package README + 架构总览 + 模块待开发说明
Agent 8 文档生成:
- CLAUDE.md 项目上下文
- 各 package README (common/update/push/im/xwebview/license/log)
- docs/架构总览.md
- docs/模块待开发说明.md
2026-06-16 12:14:52 +08:00

110 行
3.1 KiB
Markdown

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

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

# @xuqm/rn-common
XuqmGroup RN SDK 核心模块。负责 SDK 初始化、HTTP 请求、Token 管理、设备信息、XWebView Bridge、API hooks。
## 安装
```bash
yarn add @xuqm/rn-common @react-native-async-storage/async-storage
```
Peer dependencies`react >= 18`,`react-native >= 0.76`,`axios >= 1.0.0`
## 初始化
### 方式 A — 配置文件自动初始化(推荐)
在宿主项目中配置 Babel alias `@xuqm/autoinit-config` → 加密配置文件:
```js
// metro.config.js
config.resolver.extraNodeModules = {
'@xuqm/autoinit-config': './path/to/your.xuqmconfig',
};
```
SDK 在 import 时自动调用 `initWithConfigFile()`,App 无需任何 init 代码。
### 方式 B — 手动初始化
```ts
import { XuqmSDK } from '@xuqm/rn-common'
await XuqmSDK.initialize({ appKey: 'xxx' }) // 公有平台
await XuqmSDK.initialize({ appKey: 'xxx', platformUrl: 'https://xxx' }) // 私有化
await XuqmSDK.awaitInitialization() // 等待配置拉取
```
## API
### 初始化
| API | 说明 |
|-----|------|
| `XuqmSDK.initialize(opts)` | 初始化,拉取平台配置 |
| `XuqmSDK.awaitInitialization()` | 等待异步初始化完成 |
| `isInitialized()` | 检查 SDK 是否就绪 |
| `getConfig()` | 获取已解析的平台配置 |
### 用户信息
| API | 说明 |
|-----|------|
| `XuqmSDK.setUserInfo(info)` | 设置用户信息,触发所有子 SDK 登录 |
| `XuqmSDK.setUserInfo(null)` | 登出,触发全局登出 |
| `getUserId()` | 获取当前 userId |
| `getUserInfo()` | 获取当前用户信息 |
| `setUserId(id)` | 直接设置 userId内部用 |
### HTTP
| API | 说明 |
|-----|------|
| `apiRequest(url, options?)` | 带 Bearer token 的 HTTP 请求 |
| `configureHttp(opts)` | 覆盖 HTTP 基础配置 |
| `_getToken()` | 获取当前 token内部用 |
| `_saveToken(token)` | 保存 token内部用 |
| `_clearToken()` | 清除 token内部用 |
### 设备
| API | 说明 |
|-----|------|
| `getDeviceId()` | 获取设备稳定 UUID |
| `getDeviceInfo()` | 获取设备品牌/型号/系统信息 |
| `detectPushVendor()` | 检测设备推送厂商 |
### XWebView Bridge
| API | 说明 |
|-----|------|
| `openXWebView(url, options?)` | 打开 WebView |
| `setXWebViewController(controller)` | 设置全局 WebView 控制器 |
| `getXWebViewConfig()` | 获取当前 WebView 配置 |
| `XWebViewControl` | WebView 控制器类 |
### API Hooks
| API | 说明 |
|-----|------|
| `useApi(method, url, opts?)` | React hook带 loading/error 的 API 调用 |
| `usePageApi(method, url, opts?)` | React hook分页 API |
| `useRequest(opts?)` | React hook通用请求 |
| `setGlobalApiErrorHandler(handler)` | 设置全局 API 错误处理 |
### UI
| API | 说明 |
|-----|------|
| `showToast(msg)` | 显示 toast |
| `showAlert(title, msg)` | 显示 alert |
| `showConfirm(title, msg)` | 显示确认对话框 |
| `ScaledImage` | 等比缩放图片组件 |
### 常量
| 常量 | 说明 |
|------|------|
| `DEFAULT_TENANT_PLATFORM_URL` | 默认公有平台地址 |
| `DEFAULT_IM_WS_URL` | 默认 IM WebSocket 地址 |