XuqmGroup-Web/docs-site/docs/flutter/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

145 行
2.9 KiB
Markdown

此文件含有模棱两可的 Unicode 字符

此文件含有可能会与其他字符混淆的 Unicode 字符。 如果您是想特意这样的,可以安全地忽略该警告。 使用 Escape 按钮显示他们。

# Flutter 推送接入指南
**模块**`xuqm_flutter_push` · **支持**华为、小米、OPPO、vivo、荣耀Android、APNsiOS
---
## 1. 安装
`pubspec.yaml` 中添加:
```yaml
dependencies:
xuqm_flutter_push:
git:
url: https://xuqinmin.com/xuqinmin12/XuqmGroup-FlutterSDK.git
ref: v0.2.0
path: packages/push
```
---
## 2. Android 厂商推送集成
`android/app/build.gradle` 中按需添加厂商 SDK
```gradle
dependencies {
// 华为 HMS Push
implementation 'com.huawei.hms:push:6.9.0.300'
// 小米 Push其他厂商同理
}
```
---
## 3. 请求原生推送注册
```dart
import 'package:xuqm_flutter_push/xuqm_flutter_push.dart';
// 触发原生推送注册Android: 厂商 token;iOS: APNs 权限)
await XuqmPushSdk.requestNativeRegistration();
```
---
## 4. 监听推送 Token
```dart
import 'package:xuqm_flutter_push/xuqm_flutter_push.dart';
// 监听 token 回调(广播 Stream,可多处监听
final subscription = XuqmPushSdk.onPushToken.listen((event) async {
final token = event['token'] ?? '';
final vendor = event['vendor'] ?? '';
print('获取到 Token: $token, 厂商: $vendor');
// 登录后注册到服务端
final push = XuqmPushSdk();
await push.registerToken(
'user_001',
token,
vendor: vendor,
platform: Platform.isIOS ? 'IOS' : 'ANDROID',
);
});
// 页面销毁时取消监听
subscription.cancel();
```
---
## 5. 手动注册 Token
```dart
import 'package:xuqm_flutter_push/xuqm_flutter_push.dart';
import 'dart:io';
final push = XuqmPushSdk();
await push.registerToken(
'user_001', // userId
'device_token', // token
vendor: 'HUAWEI',
platform: Platform.isIOS ? 'IOS' : 'ANDROID',
);
```
---
## 6. 登出时注销 Token
```dart
import 'package:xuqm_flutter_common/xuqm_flutter_common.dart' as common;
final push = XuqmPushSdk();
final deviceId = await common.apiRequest('/api/device/id');
await push.unregisterToken('user_001', deviceId: deviceId);
```
---
## 7. 检测厂商
```dart
final vendor = await XuqmPushSdk.detectVendor();
print('当前推送厂商: $vendor'); // e.g. 'HUAWEI', 'XIAOMI', 'APNS'
```
---
## 8. 多模块统一登录
```dart
import 'package:xuqm_flutter_sdk/xuqm_flutter_sdk.dart';
import 'package:xuqm_flutter_push/xuqm_flutter_push.dart';
// 初始化 SDK
await XuqmSDK.initialize(XuqmInitOptions(appKey: 'your_app_key'));
// 请求原生注册,监听 token 后手动上报
await XuqmPushSdk.requestNativeRegistration();
XuqmPushSdk.onPushToken.listen((event) async {
final push = XuqmPushSdk();
await push.registerToken('user_001', event['token']!);
});
```
---
## 9. iOS APNs 配置
在 Xcode 中开启 Push Notifications 能力Signing & Capabilities → + Capability → Push Notifications
`Info.plist` 添加(如需后台推送):
```xml
<key>UIBackgroundModes</key>
<array>
<string>remote-notification</string>
</array>
```