# 会话与隐私授权 使用扩展模块的应用只有一个公共会话入口。Common 独立模式不需要登录。 ## 隐私授权 SDK 不展示隐私弹窗,也不会自行推断用户是否同意。宿主在自己的隐私声明获得授权后调用: ```ts import { XuqmSDK } from '@xuqm/rn-common' await XuqmSDK.setPrivacyConsent(true) ``` 用户撤回授权时: ```ts await XuqmSDK.setPrivacyConsent(false) ``` 撤回后 BugCollect 会停止采集并清理尚未发送的数据。宿主业务是否继续运行由宿主决定。 ## 登录 宿主业务登录成功后调用一次: ```ts 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` | 否 | 扩展模块需要时使用的用户资料 | `accessToken` 和 `userSig` 是两种不同凭证,不要互相替代。 ## 登出 ```ts await XuqmSDK.logout() ``` 登出会通知所有已安装扩展包清理当前会话。业务页面不需要分别调用 Update、Push 或 IM 的 登录/登出方法。 ## 获取当前状态 ```ts const userId = XuqmSDK.getUserId() const userInfo = XuqmSDK.getUserInfo() const initState = XuqmSDK.getInitializationState() ``` 这些方法适合应用入口、调试页或基础设施层读取。业务组件应从宿主自己的用户领域 Store 展示资料,不要把 SDK 当作宿主用户资料数据库。 ## 登录门禁与宿主行为 租户平台可以把 Update 等服务配置为“登录后检查”。未登录时 SDK 会返回 `LOGIN_REQUIRED`,宿主应当跳过更新提示并继续正常使用应用: ```ts const result = await UpdateSDK.checkAppUpdate() if (result.status === 'LOGIN_REQUIRED') { return // 不弹错误、不阻断启动 } ``` 平台临时不可用、服务关闭或登录要求发生变化,都不能替代宿主自身的登录和启动流程。