XuqmGroup-Web/docs-site/docs/rn/session.md
2026-07-29 02:43:17 +08:00

2.2 KiB

会话与隐私授权

使用扩展模块的应用只有一个公共会话入口。Common 独立模式不需要登录。

隐私授权

SDK 不展示隐私弹窗,也不会自行推断用户是否同意。宿主在自己的隐私声明获得授权后调用:

import { XuqmSDK } from '@xuqm/rn-common'

await XuqmSDK.setPrivacyConsent(true)

用户撤回授权时:

await XuqmSDK.setPrivacyConsent(false)

撤回后 BugCollect 会停止采集并清理尚未发送的数据。宿主业务是否继续运行由宿主决定。

登录

宿主业务登录成功后调用一次:

await XuqmSDK.login({
  userId: 'user-001',
  accessToken: 'host-access-token',
  name: '张医生',
  phone: '13800000000',
  avatar: 'https://example.com/avatar.png',
  // 只有使用 IM 时才需要:
  userSig: 'im-user-signature',
})

字段说明:

字段 必填 用途
userId XuqmGroup 扩展服务共享的用户标识
accessToken 按业务 公共 HTTP Bearer Token
userSig 仅 IM IM 登录凭证
name/email/phone/avatar 扩展模块需要时使用的用户资料

accessTokenuserSig 是两种不同凭证,不要互相替代。

登出

await XuqmSDK.logout()

登出会通知所有已安装扩展包清理当前会话。业务页面不需要分别调用 Update、Push 或 IM 的 登录/登出方法。

获取当前状态

const userId = XuqmSDK.getUserId()
const userInfo = XuqmSDK.getUserInfo()
const initState = XuqmSDK.getInitializationState()

这些方法适合应用入口、调试页或基础设施层读取。业务组件应从宿主自己的用户领域 Store 展示资料,不要把 SDK 当作宿主用户资料数据库。

登录门禁与宿主行为

租户平台可以把 Update 等服务配置为“登录后检查”。未登录时 SDK 会返回 LOGIN_REQUIRED,宿主应当跳过更新提示并继续正常使用应用:

const result = await UpdateSDK.checkAppUpdate()

if (result.status === 'LOGIN_REQUIRED') {
  return // 不弹错误、不阻断启动
}

平台临时不可用、服务关闭或登录要求发生变化,都不能替代宿主自身的登录和启动流程。