Есть ли способ, с помощью которого я могу запускать функцию только один раз (когда приложение обновляется или устанавливается)? Я не могу использовать run script, поскольку я должен использовать объектную функцию c.
Выполнить функцию только при первом запуске ios
Ответ 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")
}
}