![](/img/trans.png)
[英]How to know whether launch image has been shown when applicationWillEnterForeground or applicationDidBecomeActive is called?
[英]how to determine in applicationDidBecomeActive whether it is the initial iPhone app launch?
如何確定如何在UIApplicationDidBecomeActiveNotification中確定它是否是初始應用程序啟動?是否是初始應用程序啟動?
這是應用程序的初始啟動,而不是后續的DidBecomeActive,因為應用程序被放在后台然后到前台(例如用戶轉到日歷然后回到你的應用程序)
FWIW,接受的答案會告訴您之前是否有應用程序啟動,而不是應用程序是從后台恢復還是啟動。 一旦alreadyLaunched
在首選項中設置了已啟動的密鑰,它將在將來啟動應用程序時返回YES
(vs從后台恢復)。
要檢測應用程序是否已從后台恢復,您無需向首選項添加任何內容。 而是在您的應用程序委托實現中執行以下操作。
// 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
在你的applicationDidFinishLaunching:withOptions:
把這個:
[[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"alreadyLaunched"];
[[NSUserDefaults standardUserDefaults] synchronize];
然后,在didBecomeActive
:
if ([[NSUserDefaults standardUserDefaults] boolForKey:@"alreadyLaunched"]) {
// is NOT initial launch...
} else {
// is initial launch...
}
我曾經使用過@XJones提到的方法。 然后我意識到它有一個潛在的問題:如果“初始應用程序啟動”意味着檢查applicationDidBecomeActive是否自應用程序啟動以來第一次調用它! 因為當app重新啟動應用程序時(通過跳板,應用程序切換或URL),所有上述3個委托方法都將被調用! 所以最安全的方法是在applicationDidBecomeActive中重置self.activatedFromBackground。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.