Como reiniciar programaticamente um aplicativo para iPhone no iOS
Pergunta
Como reiniciar programaticamente um aplicativo para iPhone no iOS?
Eu encontro assim http://writeitstudios.com/david/?p=54
Mas pode ser algo simples.
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
}