我想通过用户点击应用图标来了解我的应用是否正在进入前景。(无论是重新启动还是从非活动状态变为活动状态)
但不是来电,应用内购买或其他任何内容 (我发现applicationDidBecomeActive在应用内购买过程中被调用)
答案 0 :(得分:2)
第1步:
当应用程序启动并且之前(暂停)不在后台时,application:didFinishLaunchingWithOptions:
将首先执行。此方法带有launchOptions
参数 - 当它为nil
时,您的应用程序是通过Springboard中的图标点按启动的。否则launchOptions
将指示应用程序启动的原因(URL方案,推送通知等... documentation中的更多内容。)
第2步:
到现在为止还挺好。现在让我们来回顾一下。当应用程序恢复(或启动)时,它会在某个时刻调用应用程序代理中的applicationDidBecomeActive
。诀窍是,由于应用程序可以恢复(启动)的所有可能原因被调用,因此调用此方法。因此,您需要做的就是引入一个BOOL
标记,您将在方法中设置该标记,以便恢复应用程序的恢复原因,并在applicationDidBecomeActive
中针对预期值进行检查。
需要设置标志的方法列表(我猜不完整):
application:handleOpenURL:
application:openURL:sourceApplication:annotation:
application:didReceiveLocalNotification:
application:didReceiveRemoteNotification:
您将在上面提到的documentation中找到的其他方法。请记住,第1步的applicationDidBecomeActive
也会被调用。