我如何检查应用程序何时从后台返回前台,而不是从推送通知返回


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)
}
}

这就是我检查推送通知的方式。但是,如果我发送推送通知,用户什么时候会错过,然后通过图标打开应用程序?如何检查应用程序何时从图标打开?

UIApplicationDelegate协议定义了几个方法,可以将代码添加到应用程序的几个生命周期事件中。

您特别感兴趣的是以下内容:

  • application(_:willFinishLaunchingWithOptions:)-在应用程序完成启动之前调用,此时应用程序尚未在后台处于活动状态
  • application(_:didFinishLaunchingWithOptions:)-在应用程序完成启动后调用,此时应用程序尚未在后台处于活动状态
  • applicationDidBecomeActive(_:)-在应用程序激活后立即调用,当用户从头开始启动、从后台重新打开以及用户从临时中断(如电话)返回时调用
  • applicationWillEnterForeground(_:)——这是在应用程序进入后台之前调用的——紧接着是applicationDidBecomeActive(_:)调用

无论用户是通过通知还是点击图标打开应用程序,此生命周期事件都可能触发。据我所知,没有办法确定该应用程序是通过点击图标打开的。您可以知道(ish)应用程序不是通过通知打开的,因为相关的"确实收到通知"方法永远不会启动。但这仍然允许用户使用两种(至少)打开应用程序的方法:点击应用程序图标双击主页按钮,然后点击应用程序从后台唤醒它。

最新更新