如何檢測iOS應用程序第一次啓動的時間?第一次啓動iOS應用程序時檢測嗎?
63
A
回答
80
差不多就是馬克和克里斯說,雖然我更喜歡更改值當應用程序退出時,以防需要了解該應用程序的多個區域。 在代碼:
// -applicationDidFinishLaunching:
[[NSUserDefaults standardUserDefaults] registerDefaults:[NSDictionary dictionaryWithObjectsAndKeys:[NSNumber numberWithBool:YES],@"firstLaunch",nil]];
// to check it:
[[NSUserDefaults standardUserDefaults] boolForKey:@"firstLaunch"];
// -applicationWillTerminate:
[[NSUserDefaults standardUserDefaults] setBool:NO forKey:@"firstLaunch"];
2
您可以在用戶的默認設置中設置一個布爾值來做到這一點。當您撥打registerDefaults:
時將該鍵設置爲false,然後將其設置爲true,在您顯示初始幫助屏幕或您需要執行的任何操作後,將其更改爲true。
如果您在應用程序關閉後始終保存一個持久數據文件,檢查它是否存在是另一種方式。
2
保存它作爲一個user preference,如had_first_launch,設置爲在啓動時屬實,這將只能是第一次假...
29
我通常使用的應用程序的版本號,而不是在用戶默認值firstLaunch值布爾值。這樣,您可以區分第一次啓動新安裝和第一次啓動升級。可能會在未來的版本有用...
59
我意識到這個問題是相當古老的,但我用它來想出一個方法檢測第一次啓動後「全新安裝」(第一次啓動後升級/降級),並認爲我會在未來的觀衆分享代碼,以防萬一它有幫助。
// Get current version ("Bundle Version") from the default Info.plist file
NSString *currentVersion = (NSString*)[[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleVersion"];
NSArray *prevStartupVersions = [[NSUserDefaults standardUserDefaults] arrayForKey:@"prevStartupVersions"];
if (prevStartupVersions == nil)
{
// Starting up for first time with NO pre-existing installs (e.g., fresh
// install of some version)
[self firstStartAfterFreshInstall];
[[NSUserDefaults standardUserDefaults] setObject:[NSArray arrayWithObject:currentVersion] forKey:@"prevStartupVersions"];
}
else
{
if (![prevStartupVersions containsObject:currentVersion])
{
// Starting up for first time with this version of the app. This
// means a different version of the app was alread installed once
// and started.
[self firstStartAfterUpgradeDowngrade];
NSMutableArray *updatedPrevStartVersions = [NSMutableArray arrayWithArray:prevStartupVersions];
[updatedPrevStartVersions addObject:currentVersion];
[[NSUserDefaults standardUserDefaults] setObject:updatedPrevStartVersions forKey:@"prevStartupVersions"];
}
}
// Save changes to disk
[[NSUserDefaults standardUserDefaults] synchronize];
2
如果您希望在代碼的其他位置檢測到它的第一次啓動,它將無法正常工作。由於多任務處理,「applicationWillTerminate」在iOS 4.0中無法使用。 此鏈接提供了一個很好的解決方案: http://mobiledevblog.metalcompass.com/?p=43
4
這是一個非常簡單快捷,但我發現,NSUserDefault鍵值對的總是空的第一次運行一個應用程序,所以
// Check to see if its the first time
if ([[NSUserDefaults standardUserDefaults] valueForKey:@"firstTime"] == NULL) {
[[NSUserDefaults standardUserDefaults] setValue:@"Not" forKey:@"firstTime"];
}
,並把這個代碼在應用程序啓動時顯示的視圖控制器的awakeFromNib中。我不知道其他答案是否適用於您的問題,但這是我解決問題的方式。
相關問題
- 1. J2me檢測應用程序的第一次啓動
- 2. iOS:在第一次啓動應用程序時管理數據
- 3. 僅在應用程序第一次啓動時啓動活動
- 4. 如何檢測第三次應用程序啓動
- 5. 如何檢測ios應用程序中的第一次運行?
- 6. 如何在第一次啓動應用程序時使Activity只啓動一次?
- 7. iCloud啓用時首次啓動iOS應用程序時凍結
- 8. iOS 8在應用程序啓動時檢測設備方向
- 9. 當第一次啓動應用程序時,presentViewController不起作用
- 10. 當應用程序第一次啓動時調用didReceiveRemoteNotification
- 11. 啓動時和第一次啓動應用程序時調度服務
- 12. iPhone應用程序第一次啓動時顯示操作表iOS 8
- 13. 僅在第一次啓動應用程序時顯示UIAlertView
- 14. 第一次啓動時將內容下載到應用程序?
- 15. Sqlite僅在第一次啓動應用程序時創建表
- 16. NavigationBarItem在第一次應用程序啓動時放錯位置
- 17. MessagePrompt在第一次啓動應用程序時崩潰
- 18. iphone應用程序在第一次啓動時崩潰
- 19. 如何在第一次應用程序啓動時顯示pushviewcontroller?
- 20. 在第一次應用程序啓動時加載.nib
- 21. iPhone應用程序在第一次啓動時需要登錄嗎?
- 22. iOS:檢測不活動或定期啓動應用程序
- 23. overridePendingTransition第一次啓動時不工作(應用程序只啓動!)
- 24. 如何檢測取向模式,同時啓動應用程序第一
- 25. Xcode UI測試:如何測試應用程序的第一次啓動
- 26. Android:安裝另一個應用程序並檢測它何時首次啓動
- 27. 應用程序第一次(也是唯一一次)啓動時的透明閃屏用於說明(iOS)
- 28. 檢測應用程序啓動
- 29. 檢測應用程序啓動事件
- 30. 檢測應用程序啓動事件
卸載應用程序時,與應用程序關聯的默認數據庫中的條目是否已被刷新? – xyzzycoder 2009-12-29 22:15:32
@xyzzycoder:是 – 2010-01-29 13:02:57