XuqmGroup-Web/docs-site/docs/rn/push.md
XuqmGroup 06436394ed docs: fix version numbers, add license SDK docs; fix service gating reactivity
- 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>
2026-05-16 02:23:57 +08:00

3.0 KiB

React Native 推送接入指南

包名@xuqm/rn-push · 支持华为、小米、OPPO、vivo、荣耀、APNsiOS


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.mAppDelegate.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-commondetectPushVendor 会根据 device.brand 自动识别厂商:

品牌关键字 识别厂商
xiaomi / redmi XIAOMI
huawei HUAWEI
honor HONOR
oppo / realme OPPO
vivo / iqoo VIVO
iOS APNS
其他 FCM