3.1 KiB
3.1 KiB
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:
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')
这种模式不需要初始化和登录。
使用任意扩展包
- 从租户平台下载当前应用的
.xuqmconfig。 - 将唯一一份配置放到
src/assets/config/。 - 使用 SDK 提供的 Metro 包装器。
- 宿主隐私声明获得用户同意后调用一次
setPrivacyConsent(true)。 - 宿主登录成功后调用一次
XuqmSDK.login(...)。
SDK 不要求页面逐层传递 AppKey、平台地址、用户 ID 或登录凭证。
最小示例
// metro.config.js
const { getDefaultConfig } = require('@react-native/metro-config')
const { withXuqmConfig } = require('@xuqm/rn-common/metro')
module.exports = withXuqmConfig(getDefaultConfig(__dirname))
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 服务。