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

81 行
2.1 KiB
Markdown

# 推送接入
`@xuqm/rn-push` 负责把宿主登录用户同步给原生推送模块,并提供离线推送开关与免打扰
设置。厂商识别、Token 获取和绑定由原生实现完成,RN 页面不接收或上传厂商 Token。
## 安装
```bash
pnpm add @xuqm/rn-common @xuqm/rn-push
```
Android 原生推送依赖按租户平台为当前应用生成的配置接入。宿主只启用实际使用的厂商
渠道,不要把其他项目的厂商 App ID 或密钥复制过来。
## 登录后自动绑定
宿主仍然只调用公共登录入口:
```ts
import { XuqmSDK } from '@xuqm/rn-common'
await XuqmSDK.login({
userId: 'user-001',
accessToken: 'host-access-token',
})
```
已安装 Push 模块时,会话变化自动同步到原生层。不要调用不存在的
Token 注册方法,也不要建立第二套 Push 登录 API。
登出:
```ts
await XuqmSDK.logout()
```
## 离线推送开关
```ts
import { PushSDK } from '@xuqm/rn-push'
await PushSDK.setOfflinePushEnabled(false)
await PushSDK.setOfflinePushEnabled(true)
```
该开关同步到当前登录用户。未登录时不要在业务页面展示为已经保存成功。
## 免打扰
```ts
await PushSDK.setQuietHours('22:00', '08:00')
```
时间使用 24 小时制的 `HH:mm`。清除设置:
```ts
await PushSDK.clearQuietHours()
```
## 权限和厂商配置
- Android 13 及以上由宿主在合适的业务时机申请通知权限。
- 厂商推送应用标识和服务端密钥在租户平台维护。
- 客户端只包含厂商要求的公开配置,不得包含服务端密钥。
- Push 服务关闭或注册失败不能阻断宿主登录。
- 重新登录或切换用户后,SDK 会使用新的公共会话重新绑定。
## 常见错误
### 登录成功但没有离线通知
依次检查:
1. 系统通知权限是否开启。
2. 当前构建是否包含目标设备厂商通道。
3. 租户平台是否启用 Push。
4. App 包名、签名和厂商控制台配置是否一致。
5. 当前用户是否关闭了离线推送或设置了免打扰。
不要在 RN 页面手工缓存 Token 作为“绑定成功”的判断依据。