如何在ApplicationIDBecomeActive中确定它是否是iPhone应用程序的首次发布?
如何在中确定如何在UIApplicationIDBECOMEACTIVENTIfication中确定它是否为初始应用程序启动?是否为初始应用程序启动如何在ApplicationIDBecomeActive中确定它是否是iPhone应用程序的首次发布?,iphone,ios,background,uiapplicationdelegate,Iphone,Ios,Background,Uiapplicationdelegate,如何在中确定如何在UIApplicationIDBECOMEACTIVENTIfication中确定它是否为初始应用程序启动?是否为初始应用程序启动 这是应用程序的初始启动,而不是由于应用程序先放在后台,然后放在前台(例如,用户先进入日历,然后再回到应用程序)而导致的后续DidBecomeActive启动 [[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"alreadyLaunched"]; [[NSUserDefaults
这是应用程序的初始启动,而不是由于应用程序先放在后台,然后放在前台(例如,用户先进入日历,然后再回到应用程序)而导致的后续DidBecomeActive启动
[[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"alreadyLaunched"];
[[NSUserDefaults standardUserDefaults] synchronize];
然后,在中变为活动状态
:
if ([[NSUserDefaults standardUserDefaults] boolForKey:@"alreadyLaunched"]) {
// is NOT initial launch...
} else {
// is initial launch...
}
FWIW,接受的答案告诉您之前是否启动过应用程序,而不是应用程序是否从后台恢复或启动。一旦在首选项中设置了
alreadyLaunched
键,当应用程序在将来启动时(vs从后台恢复),它将返回YES
要检测应用程序是否已从后台恢复,无需向首选项添加任何内容。相反,在应用程序委派实现中执行以下操作
// myAppDelegate.m
//
@interface MyAppDelegate()
@property (nonatomic) BOOL activatedFromBackground;
@end
@implementation MyAppDelegate
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
self.activatedFromBackground = NO;
// your code
}
- (void)applicationWillEnterForeground:(UIApplication *)application
{
self.activatedFromBackground = YES;
// your code
}
- (void)applicationDidBecomeActive:(UIApplication *)application
{
if (self.activatedFromBackground) {
// whatever you want here
}
}
@end
我曾经使用@XJones提到的方法。然后我意识到它有一个潜在的问题:如果“初始应用程序启动”意味着检查ApplicationIDBecomeActive是否在应用程序启动后第一次调用它!因为当应用程序重新启动应用程序(通过跳板、应用程序切换或URL)时,将调用上述3个委托方法!因此,最安全的方法是在ApplicationIDBecomeActive中重置self.activatedFromBackground。好的,谢谢-没有直接的方法-我可以在appDelegate中创建一个特定的实例变量(一个布尔值)因此,我不能吗?这并不构成一个答案,但这里的工作有助于理解这个公认的答案question@FotisParaskevopoulos不幸的是,死链接。是这个吗