Como posso detectar a primeira inicialização do
- (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
fonte
fonte
Respostas:
fonte
BOOL
. 2. Então o erro está no seu código ... se o retorno de 0 causar esta falha, algo está terrivelmente errado - em outro lugar.NSUserDefaults
um lugar comum? e se outro aplicativo usar a mesma "chave" que estou usando?No Swift 3, 4, tente o seguinte:
No Swift 2, tente isso,
UPDATE: - Para OBJ-C eu uso isso,
Ref para OBJ-C: https://stackoverflow.com/a/9964400/3411787
fonte
Eu escrevi uma pequena biblioteca para esse propósito. Ele me informa se esse é o primeiro lançamento de todos os tempos, ou apenas para esta versão, e se há versões anteriores que o usuário instalou. Está disponível no github como um cocoapod sob a licença Apache 2: GBVersionTracking
Você acabou de chamar isso
application:didFinishLaunching:withOptions:
E então, para verificar se este é o primeiro lançamento, basta ligar para este local:
E da mesma forma:
fonte
para Swift 3.0 - Swift 5
adicionar extensão
então no seu código
fonte
Outra idéia para o Xcode 7 e o Swift 2.0 é usar extensões
Agora você pode escrever em qualquer lugar do seu aplicativo
Pessoalmente, prefiro uma extensão do UIApplication assim:
Como a chamada de função é mais descritiva:
fonte
Você pode implementá-lo com o método estático abaixo:
fonte
Você precisa salvar algo ao iniciar e, em seguida, verifique se ele existe. Caso contrário, é a primeira vez. "Algo" pode ser um arquivo, uma entrada no banco de dados, uma configuração nos padrões do usuário ....
fonte
É bem simples de fazer isso e requer apenas seis linhas de código.
Será útil adicionar esse código nas preferências de inicialização do aplicativo ou em qualquer outro lugar em que você precise testar se é a primeira vez que o aplicativo é executado.
PS: Não use bools nas preferências. Basta usar números inteiros. Eles assumem o valor zero quando indefinidos.
Além disso, a
[theDefaults synchronize];
linha não é necessária, mas descobri que quando um aplicativo é executado centenas de vezes em centenas de dispositivos, os resultados nem sempre são confiáveis, além disso, é uma prática recomendada.fonte
armazenar uma chave bool no NSUserDefaults pela primeira vez, será não, você a alterará para yes e a manterá assim até que o aplicativo exclua ou reinstale-a novamente.
fonte
Função rápida e fácil
fonte
Para Swift 2.0 no Xcode 7. No arquivo AppDelegate.swift:
fonte
Registre os valores padrão na inicialização do aplicativo:
Valor claro no encerramento do aplicativo:
Verifique o valor:
fonte
Em breve, sugiro usar uma constante global que possa ser feita com muita facilidade fora de qualquer escopo, como acima do delegado do aplicativo. Portanto, ele será definido com o valor certo enquanto o aplicativo não for finalizado. ainda retornará o mesmo valor se o aplicativo for para segundo plano ou algo assim. o valor será alterado apenas se o aplicativo for reiniciado completamente.
Mas, honestamente, é melhor acompanhar o fato de que o aplicativo foi enviado para segundo plano pelo menos uma vez. Nesse caso, prefiro usar uma extensão no UIApplication e definir o sinalizador no método applicationDidEnterBackground, de modo que:
e, em seguida, no delegado do seu aplicativo ou delegado da cena
fonte
Swift 5 iOS 13.
Gosto rápido e fácil de Chris Fremgen . Então eu atualizei.
fonte
Atualizado para o XCode 11 , Swift 5
Então você o chama como
fonte
NSUserDefaults + Macro
A melhor abordagem é usar
NSUserDefaults
e salvar umaBOOL
variável. Como mencionado acima, o código a seguir funcionará perfeitamente:Você também pode criar uma macro como abaixo para verificar facilmente se é o primeiro lançamento ou não
Em seguida, use-o como tal,
fonte
Aqui está uma resposta trabalhando no swift 5.0. A melhoria em comparação com a resposta de @Zaid Pathan é que não há contrato oculto. Se você não ligar
setFirstAppLaunch()
exatamente uma vez antes de ligar,isFirstAppLaunch()
receberá um erro de asserção (apenas no modo de depuração).Depois, basta chamar a função
setFirstAppLaunch()
no início do seu aplicativo eisFirstAppLaunch()
sempre que desejar verificar se o aplicativo foi chamado.fonte