func application(application: UIApplication, didReceiveRemoteNotification data: [NSObject : AnyObject]) {
var dat = JSON(data)
if application.applicationState == UIApplicationState.Active {
// app was already in the foreground
println("App is in foreground")
processNotification(dat)
}else{
// app was just brought from background to foreground via PUSH
println("App brought back via PUSH")
processNotification(dat)
}
}
这是我检查推送通知的方法。但是,如果我发送推送通知,用户会错过它,然后通过图标打开应用程序?如何从图标中查看应用程序何时打开?
答案 0 :(得分:12)
The UIApplicationDelegate
protocol定义了几种方法,可以将代码添加到应用程序的几个生命周期事件中。
您特别感兴趣的是:
application(_:willFinishLaunchingWithOptions:)
- 在应用程序尚未在后台运行时应用程序完成启动之前调用application(_:didFinishLaunchingWithOptions:)
- 在应用程序尚未在后台运行时应用程序完成启动后调用applicationDidBecomeActive(_:)
- 在应用程序变为活动状态后调用,当用户从头开始启动,从后台重新打开以及用户从临时中断(例如电话呼叫)返回时调用/ LI>
applicationWillEnterForeground(_:)
- 这是在应用程序进入后台后才调用的 - 紧接着是applicationDidBecomeActive(_:)
调用无论用户是通过通知还是通过点击图标打开您的应用程序,此生命周期事件都可以触发。据我所知,没有办法确定应用程序是通过点击图标打开的。您可以知道(ish)应用程序未通过通知打开,因为相关的“确实收到通知”方法永远不会触发。但是这仍然允许用户打开应用程序的两种方法:点击应用程序图标或双击主页按钮并点击应用程序将其从后台唤醒。