簡體   English   中英

如何檢測應用程序的首次啟動

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM