后台与静默推送

静默推送(`content-available: 1`)可以让 App 在后台被短暂唤醒,用于补收消息与刷新角标,但系统会节流、并不保证送达。消息可靠性必须由 IMLib 的连接补收保证,静默推送只是“更早一点”的优化。

静默推送的边界​

项说明
触发条件payload 含 `content-available: 1`,且用户未强制退出 App
执行时间系统调度,通常几十秒内;低电量 / 低优先级时可能延后或不执行
执行时长约 30 秒内完成,不要做长时间同步
强制退出后不会唤醒;下次打开 App 时由 IMLib 补收离线消息
频率限制系统按 App 使用习惯节流;不要把它当实时通道

后台补收​

Objective-C 示例已隐藏(含未导出符号)

该示例引用了 SDK 头文件未导出的符号(多为 Swift 专用 helper)。请使用下表真实 ObjC 类,或参考对应组件页的 Objective-C 接入说明。

可用 ObjC 类用途
IMPOSClientIMLib 客户端(连接、消息、会话、群组等)
IMPOSChatViewControllerIMKit 会话页(真实 ObjC 类)
IMPOSConversationListViewControllerIMKit 会话列表页(真实 ObjC 类)
IMPOSGlobalChatViewControllerGlobal UIKit 会话页(真实 ObjC 类)
IMPOSGlobalChatListViewControllerGlobal 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 重连补收为准。