¿Cómo puedo detectar el primer lanzamiento de
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
// if very first launch than perform actionA
// else perform actionB
}
¿método?
ios
iphone
launch
launching-application
Shishir.bobby
fuente
fuente
Respuestas:
fuente
BOOL
. 2. Entonces el error está en su código ... si devolver 0 hace que se bloquee, entonces algo está terriblemente mal, en otro lugar.NSUserDefaults
un lugar común? ¿Qué pasa si otra aplicación usa la misma "clave" que yo estoy usando?En Swift 3, 4 intente esto:
En Swift 2 intente esto,
ACTUALIZACIÓN: - Para OBJ-C utilizo esto,
Ref. Para OBJ-C: https://stackoverflow.com/a/9964400/3411787
fuente
Escribí una pequeña biblioteca para este mismo propósito. Me permite saber si este es el primer lanzamiento, o solo para esta versión, y cualquier versión anterior que el usuario haya instalado. Está disponible en github como cocoapod bajo la licencia Apache 2: GBVersionTracking
Solo llamas a esto en
application:didFinishLaunching:withOptions:
Y luego para verificar si este es el primer lanzamiento, simplemente llame a esto en cualquier lugar:
Y de manera similar:
fuente
para Swift 3.0 - Swift 5
agregar extensión
entonces en tu código
fuente
Otra idea para Xcode 7 y Swift 2.0 es usar extensiones
Ahora puedes escribir en cualquier lugar de tu aplicación
Personalmente prefiero una extensión de la aplicación UIA como esta:
Debido a que la llamada a la función es más descriptiva:
fuente
Puede implementarlo con el siguiente método estático:
fuente
Debe guardar algo cuando lo inicie y luego verificar si existe. Si no, es la primera vez. "Algo" puede ser un archivo, una entrada de la base de datos, una configuración en los valores predeterminados del usuario ...
fuente
Es bastante simple hacer esto y solo requiere seis líneas de código.
Será útil agregar este código en las preferencias de inicio de su aplicación o en cualquier otro lugar donde necesite probar si es la primera vez que se ejecuta su aplicación.
PD : NO use bools en las preferencias. Solo manténgase en los enteros. Su valor predeterminado es cero cuando no está definido.
Además, la
[theDefaults synchronize];
línea no es necesaria, pero descubrí que cuando una aplicación se ejecuta cientos de veces en cientos de dispositivos, los resultados no siempre son confiables, además, es una mejor práctica.fuente
almacene una clave bool en NSUserDefaults la primera vez que sea no, la cambiará a sí y la mantendrá así hasta que la aplicación la elimine o vuelva a instalar será la primera vez.
fuente
Función rápida y fácil
fuente
Para Swift 2.0 en Xcode 7. En el archivo AppDelegate.swift:
fuente
Registre los valores predeterminados al iniciar la aplicación:
Valor claro al finalizar la aplicación:
Comprobar valor:
fuente
En Swift, sugeriría usar una constante global que se puede hacer muy fácilmente fuera de cualquier alcance, como por ejemplo el delegado de la aplicación. Por lo tanto, se establecerá en el valor correcto mientras la aplicación no finalice. aún devolverá el mismo valor si la aplicación pasa a segundo plano más o menos. el valor cambiará solo si la aplicación se relanza por completo.
Pero, sinceramente, es mejor hacer un seguimiento del hecho de que la aplicación se ha enviado al fondo al menos una vez. En tal caso, prefiero usar una extensión en UIApplication y establecer el indicador en el método applicationDidEnterBackground de modo que:
y luego en su delegado de aplicación o delegado de escena
fuente
Swift 5 iOS 13.
Me gusta rápido y fácil por Chris Fremgen . Entonces lo actualicé.
fuente
Actualizado para XCode 11 , Swift 5
Entonces lo llamas como
fuente
NSUserDefaults + Macro
El mejor enfoque es usar
NSUserDefaults
y guardar unaBOOL
variable. Como se mencionó anteriormente, el siguiente código funcionará bien:También puede crear una macro como la siguiente para verificar fácilmente si es el primer lanzamiento o no
Entonces úsalo como tal,
fuente
Aquí hay una respuesta que funciona en swift 5.0. La mejora en comparación con la respuesta de @Zaid Pathan es que no hay un contrato oculto. Si no llama
setFirstAppLaunch()
exactamente una vez antes de llamarisFirstAppLaunch()
, obtendrá un error de aserción (solo en modo de depuración).Luego solo necesita llamar a la función
setFirstAppLaunch()
al inicio de su aplicación yisFirstAppLaunch()
siempre que desee verificar si se ha llamado a su aplicación.fuente