Подтвердить что ты не робот

Выполнить функцию только при первом запуске ios

Есть ли способ, с помощью которого я могу запускать функцию только один раз (когда приложение обновляется или устанавливается)? Я не могу использовать run script, поскольку я должен использовать объектную функцию c.

4b9b3361

Ответ 1

    NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];

    if ( ![userDefaults valueForKey:@"version"] )
    {
            // CALL your Function;

            // Adding version number to NSUserDefaults for first version:
          [userDefaults setFloat:[[[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleVersion"] floatValue] forKey:@"version"];    
    }


    if ([[NSUserDefaults standardUserDefaults] floatForKey:@"version"] == [[[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleVersion"] floatValue] )
    {
    /// Same Version so dont run the function
    }
    else
    {
       // Call Your Function;

       // Update version number to NSUserDefaults for other versions:
         [userDefaults setFloat:[[[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleVersion"] floatValue] forKey:@"version"];
    }

Ответ 2

Это быстрое преобразование

Ответ 3

Если вы хотите запустить какой-либо код, когда приложение будет либо установлено, либо после каждого обновления, вы можете прочитать текущую версию своего приложения из своего пакета

CGFloat currentVersion = [[[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleVersion"] floatValue];

и напишите это по умолчанию для пользователей после запуска кода.

[[NSUserDefaults standardUserDefaults] setFloat:currentVersion 
                                         forKey:kLastVersionThatExecutedMyCodeKey];

В следующий раз, когда вы запустите свое приложение, вы сравните значение с пользовательскими значениями по умолчанию от версии пакета. Если версия пакета изменилась, приложение было обновлено, а это значит, что вам нужно снова запустить код и записать новую версию по умолчанию.

Ответ 4

В NSUserDefaults вы можете создать ключ значения BOOL (например, isFirstLaunch = NO) и после выполнения функции установить его в YES.

Если вы хотите выполнять его каждый раз, когда пользователь запускает приложение, вам необходимо установить ключ по умолчанию до того, как приложение будет существовать (т.е. reset в методе -applicationWillTerminate: в AppDelegate).

Ответ 5

Это версия Swift2.0 ответа Bhupendra, если кому-то это нужно!

    let infoDictionary: NSDictionary? = NSBundle.mainBundle().infoDictionary
    //Fetch info.plist as a Dictionary
    let temp: NSString = infoDictionary?.objectForKey("CFBundleVersion") as! NSString
    let val: Float = temp.floatValue

    let userDefaults = NSUserDefaults()
    if userDefaults.valueForKey("version") == nil {
        userDefaults.setFloat(val, forKey: "version")
    }
    if NSUserDefaults().floatForKey("version") == val {
        //if it is the same version, don't run the code
    }
    else {
        userDefaults.setFloat(val, forKey: "version")
    }
}