2010-02-19 3 views
3

У меня есть приложение для iPhone, которое выйдет из него самостоятельно после того, как пользователь выполнит определенное действие. В настоящее время я использую exit (0), чтобы оставить приложение, и до недавнего времени у меня не было никаких проблем. Я понимаю, что это не «правильный» способ выхода из приложения, но это то, что я хочу сделать. Проблема, с которой я сталкиваюсь, заключается в том, когда устройство переходит из спящего режима, при этом мое приложение является активным, вызывается exit (0), и приложение будет перезагружаться после выхода.Как программно выйти из приложения iPhone?

Это выглядит очень странно, и мне интересно, если это ошибка или я что-то не так? Есть ли лучший способ изящно выйти из приложения, не нажав на домашний ключ?

Благодаря

+0

Где вы называете функцию exit()? Может быть, код вызывается, когда устройство просыпается из спящего режима ... – Vladimir

+0

У меня есть метод в делетете приложения, который обрабатывает выход из приложения. В этом методе applicationWillTerminate вызывается перед выходом (0). При отладке я могу выйти (0), а затем перезапустить. – Wallace

+2

Я не понимаю, что вы пытаетесь сделать. Почему вы принудительно завершаете приложение? И чтобы ответить на ваш вопрос об изящном завершении приложения, нет, нет никакого способа сделать это правильно, потому что это не намеренное поведение какого-либо приложения на iPhone. – Jasarien

ответ

3

Путь Apple заключается в том, чтобы предупредить пользователя о том, что приложение закончено, и они должны щелкнуть по нему дома, чтобы выйти. Вы не должны этого делать в своем коде. Если очевидно, что ваше приложение отправляется рецензентам, оно скорее всего не получит одобрения.

0

Существует прямая связь здесь, где можно иметь ваш ответил: link text

Но не существует общественного API прекратить программно приложения iPhone. (см. Technical Q&A QA1561 с iPhone Dev Center)

-1
//@step invoke the normal routine applicationWillTerminate 
if ([[UIApplication sharedApplication].delegate respondsToSelector:@selector(applicationWillTerminate:)]) 
{ 
    [[UIApplication sharedApplication].delegate performSelector:@selector(applicationWillTerminate:) withObject:[UIApplication sharedApplication]]; 
} 
//@step force quite app 
kill(getpid(), SIGINT); 

Я думаю, что нет частной API был использован ....

0

я вижу один и тот же вопрос. Я смог остановить это, вызвав exit (1).

1

Вы можете использовать эту частную команду, чтобы бросить приложение с анимацией (после того, как вы добавили ключ UIApplicationExistsOnSuspend в вашем Info.plist):

[[UIApplication sharedApplication] suspend]; 

Но ваше приложение будет отклонено, если вы хотите, чтобы положить его в App Store

Смежные вопросы