Как я могу обнаружить самый первый запуск
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
// if very first launch than perform actionA
// else perform actionB
}
метод?
ios
iphone
launch
launching-application
Shishir.bobby
источник
источник
Ответы:
источник
BOOL
. 2. Тогда ошибка в вашем коде ... если возвращение 0 приводит к сбою, то что-то ужасно не так - в другом месте.NSUserDefaults
обычное место? Что делать, если другое приложение использует тот же «ключ», который я использую?В Swift 3, 4 попробуйте это:
В Swift 2 попробуйте это,
ОБНОВЛЕНИЕ: - Для OBJ-C я использую это,
Ссылка для OBJ-C: https://stackoverflow.com/a/9964400/3411787
источник
Я написал крошечную библиотеку для этой цели. Это позволяет мне узнать, является ли это первым запуском в истории, или только для этой версии, и любых предыдущих версий, которые установил пользователь. Он доступен на github как cocoapod под лицензией Apache 2: GBVersionTracking
Вы просто называете это в
application:didFinishLaunching:withOptions:
А затем, чтобы проверить, является ли это первым запуском, просто вызовите это где-нибудь:
И так же:
источник
для Swift 3.0 - Swift 5
добавить расширение
тогда в вашем коде
источник
Другая идея для Xcode 7 и Swift 2.0 - использовать расширения
Теперь вы можете написать в любом месте вашего приложения
Я лично предпочитаю расширение UIApplication следующим образом:
Поскольку вызов функции является более наглядным:
источник
Вы можете реализовать это статическим методом ниже:
источник
Вам нужно что-то сохранить при запуске, а затем проверить, существует ли оно. Если нет, то это первый раз. «Нечто» может быть файлом, записью в базе данных, настройкой по умолчанию для пользователя ....
источник
Это довольно просто сделать и требует всего шесть строк кода.
Было бы полезно добавить этот код в настройках запуска вашего приложения или в любом другом месте, где вам может понадобиться проверить, работает ли приложение в первый раз или нет.
PS НЕ используйте bools в настройках Просто придерживайтесь целых чисел. Они по умолчанию равны нулю, когда не определены.
Кроме того,
[theDefaults synchronize];
линия не обязательна, но я обнаружил, что когда приложение запускается сотни раз на сотнях устройств, результаты не всегда надежны, кроме того, это более эффективная практика.источник
сохраните ключ bool в NSUserDefaults в первый раз, если вы не измените его на да и оставьте так до тех пор, пока приложение не удалит или не переустановит его снова в первый раз.
источник
Быстрая и простая функция
источник
Для Swift 2.0 в Xcode 7. В файле AppDelegate.swift:
источник
Зарегистрируйте значения по умолчанию при запуске приложения:
Очистить значение при завершении приложения:
Проверьте значение:
источник
В быстром я бы предложил использовать глобальную константу, которая может быть очень легко сделана вне любой области, такой как над делегатом приложения. Таким образом, он будет установлен на правильное значение до тех пор, пока приложение не будет завершено. оно все равно вернет то же значение, если приложение перейдет в фоновый режим или около того. значение изменится, только если приложение будет полностью перезапущено.
Но, честно говоря, лучше отследить тот факт, что приложение было отправлено в фоновом режиме хотя бы один раз. В таком случае я предпочитаю использовать расширение для UIApplication и установить флаг в методе applicationDidEnterBackground так, чтобы:
а затем в вашем приложении делегат или делегат сцены
источник
Swift 5 iOS 13.
Мне нравится быстро и легко Крис Фремген . Я обновил его.
источник
Обновлено для XCode 11 , Swift 5
Тогда вы называете это как
источник
NSUserDefaults + Macro
Наилучшим подходом является использование
NSUserDefaults
и сохранениеBOOL
переменной. Как уже упоминалось выше, следующий код будет хорошо работать:Вы также можете создать макрос, как показано ниже, чтобы легко проверить, является ли он первым запуском или нет
Тогда используйте это как таковое,
источник
Вот ответ, работающий в Swift 5.0. Улучшение по сравнению с ответом @Zaid Pathan в том, что нет скрытого контракта. Если вы не позвоните
setFirstAppLaunch()
ровно один раз перед вызовом,isFirstAppLaunch()
вы получите ошибку подтверждения (только в режиме отладки).Затем вам просто нужно вызвать функцию
setFirstAppLaunch()
в начале вашего приложения иisFirstAppLaunch()
всякий раз, когда вы хотите проверить, было ли вызвано ваше приложение.источник