- Android: correct version header 0.5.x→0.4.x, add sdk-license to module table, update artifact versions to 0.4.10 - iOS: correct min version iOS 14→16, bump version to 0.2.0, update SPM ref to from: "0.2.0" - RN: fix version 0.3.x→0.2.x, standardize npm registry URL, add @xuqm/rn-license to module table - Flutter: update git ref to v0.2.2, add xuqm_flutter_license to module tables - Add new docs: ios/license, rn/push, rn/license, flutter/push, flutter/update, flutter/license - tenant-platform: make appKey a computed ref in Push/VersionManagementView to fix service gating reactivity on route change - tenant-platform: add requestActivation API endpoint - tenant-platform: add IM service gating UI (checkServiceEnabled + activation dialog) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
3.0 KiB
3.0 KiB
React Native 推送接入指南
包名:@xuqm/rn-push · 支持:华为、小米、OPPO、vivo、荣耀、APNs(iOS)
1. 安装
yarn add @xuqm/rn-push
iOS 需要执行 pod install:
cd ios && pod install
2. Android 厂商推送集成
各厂商推送 SDK 需在原生 Android 层集成。在 android/app/build.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. 请求原生推送权限并注册
import { PushSDK } from '@xuqm/rn-push'
// 触发原生推送注册(Android 请求厂商 token;iOS 请求 APNs 权限)
await PushSDK.requestNativeRegistration()
4. 监听推送 Token
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
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
await PushSDK.unregisterToken('user_001')
// 或简写
await PushSDK.logout('user_001')
7. 多模块统一登录
Push 模块与 IM、Update 模块共享同一套登录态:
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 中:
// 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 |