최초 출시를 어떻게 감지 할 수 있습니까?
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
  // if very first launch than perform actionA
  // else perform actionB
}방법?
답변
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    if (![[NSUserDefaults standardUserDefaults] boolForKey:@"HasLaunchedOnce"])
    {
        [[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"HasLaunchedOnce"];
        [[NSUserDefaults standardUserDefaults] synchronize];
    }
    return YES;
}답변
에서 스위프트 3, 4는 이 시도 :
func isAppAlreadyLaunchedOnce()->Bool{
        let defaults = UserDefaults.standard
        if let isAppAlreadyLaunchedOnce = defaults.string(forKey: "isAppAlreadyLaunchedOnce"){
            print("App already launched : \(isAppAlreadyLaunchedOnce)")
            return true
        }else{
            defaults.set(true, forKey: "isAppAlreadyLaunchedOnce")
            print("App launched first time")
            return false
        }
    }에서 스위프트 2 , 이것을 시도
func isAppAlreadyLaunchedOnce()->Bool{
    let defaults = NSUserDefaults.standardUserDefaults()
    if let isAppAlreadyLaunchedOnce = defaults.stringForKey("isAppAlreadyLaunchedOnce"){
        print("App already launched : \(isAppAlreadyLaunchedOnce)")
        return true
    }else{
        defaults.setBool(true, forKey: "isAppAlreadyLaunchedOnce")
        print("App launched first time")
        return false
    }
}UPDATE : – 들어 OBJ-C I이를 사용,
+ (BOOL)isAppAlreadyLaunchedOnce {
    if ([[NSUserDefaults standardUserDefaults] boolForKey:@"isAppAlreadyLaunchedOnce"])
    {
        return true;
    }
    else
    {
        [[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"isAppAlreadyLaunchedOnce"];
        [[NSUserDefaults standardUserDefaults] synchronize];
        return false;
    }
}OBJ-C에 대한 참조 : https://stackoverflow.com/a/9964400/3411787
답변
이 목적을 위해 작은 라이브러리를 작성했습니다. 최초 출시인지 아니면이 버전인지, 사용자가 설치 한 이전 버전인지 알려줍니다. github에서 Apache 2 라이센스에 따라 cocoapod로 제공됩니다 : GBVersionTracking
당신은 단지 이것을 호출 application:didFinishLaunching:withOptions:
[GBVersionTracking track];그리고 이것이 첫 번째 발사인지 확인하려면 어디서나 이것을 호출하십시오.
[GBVersionTracking isFirstLaunchEver];그리고 비슷하게 :
[GBVersionTracking isFirstLaunchForVersion];
[GBVersionTracking currentVersion];
[GBVersionTracking previousVersion];
[GBVersionTracking versionHistory];답변
스위프트 3.0-스위프트 5
확장 기능 추가
    extension UIApplication {
        class func isFirstLaunch() -> Bool {
            if !UserDefaults.standard.bool(forKey: "hasBeenLaunchedBeforeFlag") {
                UserDefaults.standard.set(true, forKey: "hasBeenLaunchedBeforeFlag")
                UserDefaults.standard.synchronize()
                return true
            }
            return false
        }
    }그런 다음 코드에서
UIApplication.isFirstLaunch()답변
Xcode 7 및 Swift 2.0의 또 다른 아이디어는 확장을 사용하는 것입니다.
extension NSUserDefaults {
    func isFirstLaunch() -> Bool {
        if !NSUserDefaults.standardUserDefaults().boolForKey("HasAtLeastLaunchedOnce") {
            NSUserDefaults.standardUserDefaults().setBool(true, forKey: "HasAtLeastLaunchedOnce")
            NSUserDefaults.standardUserDefaults().synchronize()
            return true
        }
        return false
    }
}이제 앱 어디에서나 쓸 수 있습니다
if NSUserDefaults.standardUserDefaults().isFirstLaunch() {
    // do something on first launch
}개인적으로 다음과 같이 UIApplication 확장을 선호합니다.
extension UIApplication {
    class func isFirstLaunch() -> Bool {
        if !NSUserDefaults.standardUserDefaults().boolForKey("HasAtLeastLaunchedOnce") {
            NSUserDefaults.standardUserDefaults().setBool(true, forKey: "HasAtLeastLaunchedOnce")
            NSUserDefaults.standardUserDefaults().synchronize()
            return true
        }
        return false
    }
}함수 호출이 더 설명하기 때문에 :
if UIApplication.isFirstLaunch() {
    // do something on first launch
}답변
아래 정적 메소드로 구현할 수 있습니다.
+ (BOOL)isFirstTime{
    static BOOL flag=NO;
    static BOOL result;
    if(!flag){
        if ([[NSUserDefaults standardUserDefaults] boolForKey:@"hasLaunchedOnce"]){
            result=NO;
        }else{
            [[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"hasLaunchedOnce"];
            [[NSUserDefaults standardUserDefaults] synchronize];
            result=YES;
        }
        flag=YES;
    }
    return result;
}답변
시작할 때 무언가를 저장 한 다음 존재하는지 확인해야합니다. 그렇지 않다면 처음입니다. “뭔가”는 파일, 데이터베이스 항목, 사용자 기본값 설정 …이 될 수 있습니다.
