Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/38.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在ApplicationIDBecomeActive中确定它是否是iPhone应用程序的首次发布?_Iphone_Ios_Background_Uiapplicationdelegate - Fatal编程技术网

如何在ApplicationIDBecomeActive中确定它是否是iPhone应用程序的首次发布?

如何在ApplicationIDBecomeActive中确定它是否是iPhone应用程序的首次发布?,iphone,ios,background,uiapplicationdelegate,Iphone,Ios,Background,Uiapplicationdelegate,如何在中确定如何在UIApplicationIDBECOMEACTIVENTIfication中确定它是否为初始应用程序启动?是否为初始应用程序启动 这是应用程序的初始启动,而不是由于应用程序先放在后台,然后放在前台(例如,用户先进入日历,然后再回到应用程序)而导致的后续DidBecomeActive启动 [[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"alreadyLaunched"]; [[NSUserDefaults

如何在中确定如何在UIApplicationIDBECOMEACTIVENTIfication中确定它是否为初始应用程序启动?是否为初始应用程序启动


这是应用程序的初始启动,而不是由于应用程序先放在后台,然后放在前台(例如,用户先进入日历,然后再回到应用程序)而导致的后续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不幸的是,死链接。是这个吗