XuqmGroup-Web/docs-site/docs/ios/push.md
XuqmGroup 6cd938cfbc feat(android-sdk): 添加完整的IM客户端SDK实现
- 实现了Android SDK的完整IM功能接口,包括消息、群组、好友、会话等核心功能
- 添加了消息收发、历史记录、撤回编辑等完整的消息操作能力
- 实现了群组管理功能,包括创建、成员管理、权限设置等操作
- 添加了好友关系链管理,支持添加、删除、分组等操作
- 实现了会话管理功能,包括置顶、免打扰、已读状态等
- 添加了黑名单、资料管理、搜索等辅助功能
- 补齐了批量操作接口,提升客户端操作效率
- 实现了WebSocket连接管理和事件监听机制
- 添加了离线消息同步和状态管理功能
2026-05-02 22:57:55 +08:00

143 行
3.3 KiB
Markdown

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

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

# iOS 推送接入指南
**模块**`XuqmPush` · **支持**APNs默认、FCM可选
---
## 1. 添加依赖
`Package.swift` 中按需引入:
```swift
.target(
name: "MyApp",
dependencies: [
.product(name: "XuqmPush", package: "XuqmGroup-iOSSDK"),
]
)
```
如需 FCM 支持,额外在 Xcode 中集成 `FirebaseMessaging`
---
## 2. 申请通知权限
在应用启动时请求用户授权:
```swift
import XuqmPush
let granted = try await PushSDK.shared.requestAuthorization(options: [.alert, .badge, .sound])
if granted {
print("用户已授权通知")
}
```
`requestAuthorization` 内部会自动调用 `UIApplication.shared.registerForRemoteNotifications()`,无需额外处理。
---
## 3. 注册 APNs Token
`AppDelegate` 中转发系统回调:
```swift
import XuqmSDK
func application(
_ application: UIApplication,
didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data
) {
// 将 deviceToken 转发生给 SDK
XuqmSDK.shared.registerDeviceToken(deviceToken)
}
func application(
_ application: UIApplication,
didFailToRegisterForRemoteNotificationsWithError error: Error
) {
print("注册远程通知失败: \(error.localizedDescription)")
}
```
> `XuqmSDK.shared.login()` 成功后会自动将 APNs Token 上报到 Push 服务端,业务层无需手动调用 `PushSDK.shared.registerDeviceToken()`。
---
## 4. FCM 支持(可选)
如需集成 Firebase Cloud Messaging
1. 在 Xcode 中添加 `FirebaseMessaging` 依赖
2. 配置 `GoogleService-Info.plist`
3. 在获取到 FCM Token 后手动注册:
```swift
import XuqmPush
// 在 Firebase Messaging 回调中获取 FCM Token
func messaging(_ messaging: Messaging, didReceiveRegistrationToken fcmToken: String?) {
guard let token = fcmToken else { return }
try await PushSDK.shared.registerFcmToken(token, userId: "user_001")
}
```
可通过 `PushSDK.shared.isFcmAvailable` 检查当前是否编译了 FCM
```swift
if PushSDK.shared.isFcmAvailable {
print("FCM 模块已集成")
}
```
---
## 5. 接收推送消息
实现 `PushMessageDelegate` 处理推送消息:
```swift
import XuqmPush
class MyPushHandler: NSObject, PushMessageDelegate {
func pushSDK(_ sdk: PushSDK, didReceiveMessage message: PushMessage) {
// 应用在前台时收到通知
print("收到推送: \(message.title ?? "") - \(message.body ?? "")")
print("Payload: \(message.payload)")
}
func pushSDK(_ sdk: PushSDK, didTapNotification message: PushMessage) {
// 用户点击通知栏消息
print("用户点击了通知: \(message.title ?? "")")
// 可在此跳转至对应会话页面
}
}
// 设置代理
PushSDK.shared.delegate = MyPushHandler()
```
`PushSDK` 内部已实现 `UNUserNotificationCenterDelegate`,会自动处理前台展示和点击事件。业务层只需设置 `delegate` 即可接收回调。
---
## 6. 多模块统一登录
Push 模块与 IM、Update 模块共享同一套登录态:
```swift
// 登录成功后自动触发
try await XuqmSDK.shared.login(userId: "user_001", userSig: userSig)
// ↓ 自动触发
// · PushSDK 注册 APNs Token 并上报
```
---
## 7. 登出时注销 Token
```swift
try await PushSDK.shared.unregisterToken(userId: "user_001")
```