iOS 推送,应用相关的生命周期
最近在做iOS推送相关需求的时候踩了一些坑。 大概的需求是这样的:推送分2个类型,1.紧急推送 2.普通推送。
- 紧急推送:App在前台,需要有个警告框;App在后台,点击推送唤起App,需要警告框。
- 普通推送:App在前台,无反应;App在后台,需要进入详情页面。
首先看下iOS相关的大概生命周期
正常打开App
- didFinishLaunchingWithOptions(如果是杀死进程,点击消息打开,这里会包含推送消息的字典)
- 默认加载第一个ViewController的viewDidLoad函数
- applicationDidBecomeActive
进入后台
- applicationWillResignActive
- applicationDidEnterBackground
后台进入前台
- applicationWillEnterForeground
- applicationDidBecomeActive
点击推送进入前台
- applicationWillEnterForeground
- didReceive
- applicationDidBecomeActive
我们需要考虑2个情况
- 点击推送 App后台唤起
- 点击消息 App正常启动
第一个情况:我们可以判断当前状态是applicationWillEnterForeground,然后处理消息 第二个情况:我是这么处理的,第一个加载的ViewController的didLoad函数中,处理didFinishLaunchingWithOptions的消息字典。(暂时没有想到其他方式)
推送工具可以用我的PushMeGod