后台与静默推送
静默推送(`content-available: 1`)可以让 App 在后台被短暂唤醒,用于补收消息与刷新角标,但系统会节流、并不保证送达。消息可靠性必须由 IMLib 的连接补收保证,静默推送只是“更早一点”的优化。
静默推送的边界
| 项 | 说明 |
|---|---|
| 触发条件 | payload 含 `content-available: 1`,且用户未强制退出 App |
| 执行时间 | 系统调度,通常几十秒内;低电量 / 低优先级时可能延后或不执行 |
| 执行时长 | 约 30 秒内完成,不要做长时间同步 |
| 强制退出后 | 不会唤醒;下次打开 App 时由 IMLib 补收离线消息 |
| 频率限制 | 系统按 App 使用习惯节流;不要把它当实时通道 |
后台补收
Objective-C 示例已隐藏(含未导出符号)
该示例引用了 SDK 头文件未导出的符号(多为 Swift 专用 helper)。请使用下表真实 ObjC 类,或参考对应组件页的 Objective-C 接入说明。
| 可用 ObjC 类 | 用途 |
|---|---|
IMPOSClient | IMLib 客户端(连接、消息、会话、群组等) |
IMPOSChatViewController | IMKit 会话页(真实 ObjC 类) |
IMPOSConversationListViewController | IMKit 会话列表页(真实 ObjC 类) |
IMPOSGlobalChatViewController | Global UIKit 会话页(真实 ObjC 类) |
IMPOSGlobalChatListViewController | Global UIKit 会话列表页(真实 ObjC 类) |
// ios-imlib/push/background
let backgroundPushOptions = IMPRegisterPushTokenOptions(platform: "ios", token: "TOKEN")
let res = await client.registerPushToken(options: backgroundPushOptions)后台模式配置
- Xcode → Signing & Capabilities → Background Modes → 勾选 Remote notifications。
- 服务端推送 payload 需要包含 `content-available: 1`(静默)与 `apns-priority: 5`。
- 前台已连接时,静默推送不会带来额外收益;可在服务端按在线状态跳过。
- 后台任务结束务必调用 `completionHandler`,否则系统会降低后续唤醒频率。
不要用静默推送替代连接
静默推送不可靠且会被节流;进入后台后未读与消息以 IMLib 重连补收为准。