Pergunta

Como reiniciar programaticamente um aplicativo para iPhone no iOS?

Eu encontro assim http://writeitstudios.com/david/?p=54

Mas pode ser algo simples.

Foi útil?

Solução

A única maneira de saber fazer isso não é o ideal, mas funciona.

Primeiro, seu aplicativo precisa optar por não executar a execução em segundo plano (multitarefa) que o aplicativo deve sair quando sai, não executado como uma tarefa em segundo plano. Isso é feito com a chave do plist uiapplicationExitSonsPend.

Segundo, seu aplicativo precisa registrar um esquema de URL personalizado que pode ser usado para iniciar o aplicativo.

Terceiro, você precisa de uma página da web hospedada em algum lugar que, quando carregado, será redirecionado para o esquema de URL personalizado do seu aplicativo.

Adiante, o usuário precisa de uma conexão ativa à Internet.

Para sair e reiniciar, ligue para o UIApplication OpenUrl na sua página da web de redirecionamento hospedado. Seu aplicativo sairá e o Safari iniciará e carregará sua página. A página redirecionará o Safari para o seu esquema de URL personalizado, levando o Safari a ligar para o OpenUrl internamente, fazendo com que o iOS inicie seu aplicativo.

Outras dicas

Meu post ao qual você vinculou está se referindo a um aplicativo de cacau, não ao iOS. No iOS, você pode deixar um aplicativo (mas a Apple não gosta disso) usando exit(0); Mas eu não recomendo isso. Você não pode reiniciar os aplicativos para iPhone.

A menos que você esteja se desenvolvendo para dispositivos com jailbroken, a Apple nem permitirá que você encerre seu aplicativo programaticamente. Portanto, reiniciar o dispositivo está fora de questão.

Sua AppDelegate instância tem um método

(void)applicationDidBecomeActive:(UIApplication *)application
{
}

Aqui, você pode colocar a lógica para descobrir se o aplicativo deve reiniciar ou continuar fazendo o que estava fazendo. Por exemplo, você pode ter um BOOL variável appMustRestart isso é false No começo, mas é desencadeado como verdadeiro sempre que algo acontece em seu aplicativo que você gostaria da próxima vez para ser um novo relançamento.

if (appMustRestart)
{
    [self resetVars];  // call a method that resets all your vars to initial settings

    // INSERT CODE HERE TO TRANSFER FOCUS TO INITIAL VIEWCONTROLLER
}
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top