принудительно завершить приложение в iPhone - PullRequest
5 голосов
/ 03 декабря 2009

Я занимаюсь разработкой приложения для iPhone, полностью основанного на веб-данных.

Если приложение не подключено к Интернету, приложение бесполезно.

Итак, я хочу завершить приложение, когда соединение не найдено.

NSURL *tmpURl=[NSURL URLWithString:[NSString stringWithFormat:@"%@search.php",[iGolfAppDelegate getServerPath]]];
    NSMutableURLRequest *theRequest=[NSMutableURLRequest requestWithURL:tmpURl];
    con=[[NSURLConnection alloc] initWithRequest:theRequest delegate:self];
    if(con){
        myWebData=[[NSMutableData data] retain];    
    } else { 
        //Yes I will provide two buttons on alertview "retry" & "close", & when user
        //taps on "close" => application should terminate.
        // i will send alertview & when user taps on button close then
        // what to write for terminating application?
        // Ok Ok. Don't terminate. User will terminate.
        // user is owner of iPhone 
        // let him choose what to do
        // wait till wifi connects
    }

Вопрос в том, как закрыть приложение?

Является ли exit(0) только опцией для завершения приложения или есть какая-либо другая опция?

Ответы [ 8 ]

17 голосов
/ 03 декабря 2009

Apple абсолютно ясно об этой теме:

API для изящно завершая iPhone приложение. Под iPhone OS пользователь нажимает кнопку Home, чтобы закрыть Приложения. Если ваше заявление есть условия, в которых он не может обеспечить его предназначенную функцию, Рекомендуемый подход заключается в отображении оповещение для пользователя, которое указывает на характер проблемы и возможные действия, которые пользователь может предпринять - поворот по WiFi, включив Услуги определения местоположения, и т.д. Разрешить пользователю прекратить приложение по своему усмотрению.

См. Технические вопросы и ответы QA1561

10 голосов
/ 03 декабря 2009

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

Каждое приложение с хорошим поведением, которое я видел, по крайней мере, выдаст уведомление перед завершением.

6 голосов
/ 03 декабря 2009

Я бы посоветовал вам пересмотреть по 3 причинам

  1. Может показаться, что ваше приложение упало.
  2. Пользователь может подключиться к Интернету, когда ваше приложение работает. В этом случае «Retry» будет лучше.
  3. Я думаю, что Apple может на самом деле не принимать приложение, если оно это делает. Это точно не то, что они сделали бы, если бы приложению Apple требовалось подключение к Интернету, и они проверяют, что приложение будет делать без подключения.

Если (по какой-либо причине) вы хотите это сделать, вы можете использовать.

exit(0);
5 голосов
/ 03 декабря 2009

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

3 голосов
/ 08 сентября 2010

Надеюсь, что это полезно [[NSThread mainThread] выход];

2 голосов
/ 03 декабря 2009

Ты не должен этого делать. Взгляните на «Остановку» в Руководстве по человеческому интерфейсу , так как вы можете потерпеть неудачу при отправке приложения, которое делает это, или, по крайней мере, обеспечить странное взаимодействие с пользователем.

Ссылка также показывает правильный способ справиться с этим, как в приложении iTunes Music Store.

2 голосов
/ 03 декабря 2009

Если вы прекратите работу, это будет похоже на сбой вашего приложения!

Лучше всего подать сообщение о том, что нет подключения к Интернету, и дать им возможность повторить попытку (в случае, если они могут подключиться к Интернету), или выбрать его самостоятельно

1 голос
/ 04 декабря 2009

Ваше приложение будет отклонено, если вы прекратите работу, когда не сможете подключиться к Интернету.

Извините.

-t

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...