[英]How to detect the first launch of an app
我已經研究了2個小時,我發現了一個非常相似的問題,Zaid Pathan回答了。 不幸的是,當我使用Zaid在自己的應用程序中共享的代碼時,沒有得到我期望的結果。 這是代碼:
override func viewDidLoad() {
super.viewDidLoad()
println("Launched")
func isAppAlreadyLaunchedOnce()->Bool{
let defaults = NSUserDefaults.standardUserDefaults()
if let isAppAlreadyLaunchedOnce = defaults.stringForKey("isAppAlreadyLaunchedOnce"){
println("App already launched")
return true
}else{
defaults.setBool(true, forKey: "isAppAlreadyLaunchedOnce")
println("App launched first time")
return false
}
}
我添加了println("Launched")
以便可以在日志中看到代碼已執行。 這樣可行。 但是, println("App already launched")
和/或println("App launched first time")
不執行。 有什么建議么?
Yo在函數中創建了函數。 在范圍內移動isAlreadyLaunchedOnce
(與viewDidLoad
處於同一級別),然后從viewDidLoad
調用它,或修改如下代碼:
override func viewDidLoad() {
super.viewDidLoad()
println("Launched")
let defaults = NSUserDefaults.standardUserDefaults()
if let isAppAlreadyLaunchedOnce = defaults.stringForKey("isAppAlreadyLaunchedOnce"){
println("App already launched")
// do something
} else {
defaults.setBool(true, forKey: "isAppAlreadyLaunchedOnce")
println("App launched first time")
// do something
}
}
您應該調用sync()將數據保存到用戶默認設置。
defaults.setBool(true, forKey: "isAppAlreadyLaunchedOnce")
defaults.synchronize()
您可以使用以下方法初次識別天氣應用程序是否搖晃。
對於目標C
if ([self isFirstLuanch]) {
NSLog(@"First lunch");
}else{
NSLog(@"No a first lunch");
}
-(BOOL) isFirstLuanch{
if (![[NSUserDefaults standardUserDefaults] boolForKey:@"HasLaunchedOnce"]){
return NO;
}else{
[[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"HasLaunchedOnce"];
[[NSUserDefaults standardUserDefaults] synchronize];
return YES;
}
}
對於迅速4.0
if isFirstLuanch(){
print("First lunch")
}else{
print("No a first lunch")
}
func isFirstLuanch()-> Bool{
if UserDefaults.standard.bool(forKey: "isAppAlreadyLaunchedOnce") {
return false
}else{
UserDefaults.standard.set(true, forKey: "isAppAlreadyLaunchedOnce")
return true
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.