推送通知唤醒终止App时,application:didFinishLaunchingWithOptions:是否调用?含content-available分析
关于iOS终止状态App接收推送的生命周期问题
未点击通知时application:didFinishLaunchingWithOptions:的调用情况
当App处于非用户强制退出的终止状态,收到推送但用户未点击通知时,application:didFinishLaunchingWithOptions:不会被调用。此时系统仅唤醒App的后台进程处理推送相关逻辑,但不会触发完整的App启动流程,这个方法只有在用户主动启动App或点击推送通知时才会执行。
包含content-available标志的行为差异
如果推送 payload 中包含content-available: 1标志,行为会明显不同:
- 系统会唤醒App进入后台状态,此时会调用
application:didFinishLaunchingWithOptions:(注意是后台启动,用户不会看到App界面),同时会触发application:didReceiveRemoteNotification:fetchCompletionHandler:方法。 - 你需要在
fetchCompletionHandler中完成数据更新等后台任务,并在系统规定的时间(通常30秒内)调用 completion handler,否则系统可能会终止App进程。 - 即便用户未点击通知,App也不会进入前台,仅在后台完成推送内容的处理。
内容的提问来源于stack exchange,提问作者cessmestreet
相关产品推荐
相关产品推荐

