XuqmGroup-Web/docs-site/docs/rn/push.md

139 行
3.0 KiB
Markdown

# React Native 推送接入指南
**包名**`@xuqm/rn-push` · **支持**华为、小米、OPPO、vivo、荣耀、APNsiOS
---
## 1. 安装
```bash
yarn add @xuqm/rn-push
```
iOS 需要执行 `pod install`
```bash
cd ios && pod install
```
---
## 2. Android 厂商推送集成
各厂商推送 SDK 需在原生 Android 层集成。在 `android/app/build.gradle` 中按需添加:
```gradle
dependencies {
// 华为 HMS Push
implementation 'com.huawei.hms:push:6.9.0.300'
// 小米 Push
implementation 'com.xiaomi.mipush:sdk:5.0.6'
// OPPO Push
implementation 'com.heytap.msp:push:3.5.0'
// vivo Push
implementation 'com.vivo.push:sdk:3.0.0.4_484'
// 荣耀 Push
implementation 'com.hihonor.mcs:push:7.0.41.301'
}
```
---
## 3. 请求原生推送权限并注册
```ts
import { PushSDK } from '@xuqm/rn-push'
// 触发原生推送注册Android 请求厂商 token;iOS 请求 APNs 权限)
await PushSDK.requestNativeRegistration()
```
---
## 4. 监听推送 Token
```ts
import { PushSDK } from '@xuqm/rn-push'
// 在 App 启动时监听 token 回调,并向服务端注册
const unsubscribe = PushSDK.onPushToken(async (token, vendor) => {
console.log('获取到 Token:', token, '厂商:', vendor)
// 登录后调用注册接口
await PushSDK.setDeviceToken(token, vendor as PushVendor)
})
// 在组件卸载时取消监听
unsubscribe()
```
---
## 5. 手动注册 Token
```ts
import { PushSDK } from '@xuqm/rn-push'
import type { PushVendor } from '@xuqm/rn-push'
// 登录成功后,将 token 注册到服务端
await PushSDK.registerToken('user_001', 'device_token_here', 'HUAWEI')
```
---
## 6. 登出时注销 Token
```ts
await PushSDK.unregisterToken('user_001')
// 或简写
await PushSDK.logout('user_001')
```
---
## 7. 多模块统一登录
Push 模块与 IM、Update 模块共享同一套登录态:
```ts
import { XuqmSDK } from '@xuqm/rn-common'
import { PushSDK } from '@xuqm/rn-push'
await XuqmSDK.initialize({ appKey: 'your_app_key' })
await XuqmSDK.login({ userId: 'user_001', userSig: 'your_user_sig' })
// ↓ 登录后调用 PushSDK.initialize() 完成 token 注册
await PushSDK.initialize('user_001')
```
---
## 8. iOS APNs 配置
`AppDelegate.m``AppDelegate.swift` 中:
```objc
// AppDelegate.m
- (void)application:(UIApplication *)application
didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken {
// 转发 token,由 rn-push 原生模块处理
[RCTEventEmitter ...] // 通过 Bridge 传至 JS
}
```
> 使用 `PushSDK.requestNativeRegistration()` 会自动触发 iOS APNs 注册流程,无需额外原生代码(前提是 RN 0.76+ 自动链接)。
---
## 9. 厂商渠道自动检测
`@xuqm/rn-common``detectPushVendor` 会根据 `device.brand` 自动识别厂商:
| 品牌关键字 | 识别厂商 |
|-----------|---------|
| xiaomi / redmi | XIAOMI |
| huawei | HUAWEI |
| honor | HONOR |
| oppo / realme | OPPO |
| vivo / iqoo | VIVO |
| iOS | APNS |
| 其他 | FCM |