89 行
3.1 KiB
Markdown
89 行
3.1 KiB
Markdown
# React Native SDK
|
||
|
||
XuqmGroup React Native SDK 由一个可独立使用的基础包和多个按需安装的扩展包组成。宿主只需
|
||
维护一份平台下发的配置文件,并在登录成功后同步一次会话;已安装的扩展包会共享这份配置
|
||
和会话状态。
|
||
|
||
## 选择需要的模块
|
||
|
||
| 包 | 用途 | 是否需要平台配置 |
|
||
| --- | --- | --- |
|
||
| `@xuqm/rn-common` | 网络、文件、时间、设备、通用 UI 与 API Hooks | 独立使用时不需要 |
|
||
| `@xuqm/rn-update` | Android 整包更新与 RN 插件更新 | 需要 |
|
||
| `@xuqm/rn-bugcollect` | JS 异常、原生崩溃、面包屑和自定义事件 | 需要 |
|
||
| `@xuqm/rn-xwebview` | 独立 WebView 页面、导航栏、权限、下载和宿主 Bridge | 使用页面能力时需要 |
|
||
| `@xuqm/rn-im` | 单聊、群聊、会话、好友和离线消息 | 需要,并需要登录 |
|
||
| `@xuqm/rn-push` | 厂商推送绑定、离线推送和免打扰 | 需要,并需要登录 |
|
||
|
||
只安装实际使用的模块。扩展包会声明对 `rn-common` 的依赖范围,不需要宿主再创建第二套
|
||
初始化器、网络层或用户 Store。
|
||
|
||
## 两种接入方式
|
||
|
||
### 只使用 Common
|
||
|
||
不放置 `.xuqmconfig`,也不包装 Metro:
|
||
|
||
```ts
|
||
import { configureHttp, apiRequest, expirationStatus } from '@xuqm/rn-common'
|
||
|
||
configureHttp({ baseUrl: 'https://api.example.com' })
|
||
const health = await apiRequest('/health', { skipAuth: true })
|
||
const certState = expirationStatus('2027-12-31T23:59:59+08:00')
|
||
```
|
||
|
||
这种模式不需要初始化和登录。
|
||
|
||
### 使用任意扩展包
|
||
|
||
1. 从租户平台下载当前应用的 `.xuqmconfig`。
|
||
2. 将唯一一份配置放到 `src/assets/config/`。
|
||
3. 使用 SDK 提供的 Metro 包装器。
|
||
4. 宿主隐私声明获得用户同意后调用一次 `setPrivacyConsent(true)`。
|
||
5. 宿主登录成功后调用一次 `XuqmSDK.login(...)`。
|
||
|
||
SDK 不要求页面逐层传递 AppKey、平台地址、用户 ID 或登录凭证。
|
||
|
||
## 最小示例
|
||
|
||
```js
|
||
// metro.config.js
|
||
const { getDefaultConfig } = require('@react-native/metro-config')
|
||
const { withXuqmConfig } = require('@xuqm/rn-common/metro')
|
||
|
||
module.exports = withXuqmConfig(getDefaultConfig(__dirname))
|
||
```
|
||
|
||
```ts
|
||
import { XuqmSDK } from '@xuqm/rn-common'
|
||
|
||
await XuqmSDK.setPrivacyConsent(true)
|
||
|
||
await XuqmSDK.login({
|
||
userId: 'user-001',
|
||
accessToken: 'host-access-token',
|
||
// 仅使用 IM 时传入:
|
||
userSig: 'im-user-signature',
|
||
})
|
||
```
|
||
|
||
## 默认行为
|
||
|
||
- 配置由构建工具自动发现,运行时没有手动初始化 API。
|
||
- 配置错误会阻断构建,避免生成安装后才无法初始化的包。
|
||
- 扩展服务初始化失败不会阻断宿主应用自身启动;具体操作会返回结构化状态或错误。
|
||
- Update、BugCollect 等服务是否启用由租户平台控制。
|
||
- Debug 不会自动检查更新,也不会自动上报 BugCollect。
|
||
- Common 独立模式不会访问 XuqmGroup 服务。
|
||
|
||
## 下一步
|
||
|
||
- [安装与自动配置](./setup)
|
||
- [Common 基础能力](./common)
|
||
- [会话与隐私授权](./session)
|
||
- [版本与插件更新](./update)
|
||
- [BugCollect](./bugcollect)
|
||
- [XWebView](./xwebview)
|
||
- [IM 接入](./im)
|
||
- [推送接入](./push)
|