2009-12-03 10 views
4

웹 데이터를 기반으로하는 iPhone 응용 프로그램을 개발 중입니다.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)은 응용 프로그램 종료 옵션입니까 아니면 다른 옵션이 있습니까?

+1

http://stackoverflow.com/questions/355168/properway-to-exit-iphone-application (허용되는 대답은 "잘못"임에도 불구하고)을 참조하십시오. –

+0

그러면 답은 무엇이되어야합니까? –

+3

정답은 "하지 마세요"입니다. 게시 된 UI 지침에 위배됩니다. 몇 명의 의견 작성자가 대신 할 일을 제안했습니다. –

답변

17

이 주제에 대한 절대적 분명하다 : 정상적으로 아이폰을 응용 프로그램을 종료 제공 어떤 API가

없습니다. iPhone OS에서 사용자는 홈 버튼을 눌러 응용 프로그램을 닫습니다. 무선 랜에 터닝 - 응용 프로그램 이 그것의 의도 된 기능을 제공하지 할 수있는 조건이 만일, 권장되는 방법은 문제의 자연과 사용자가 취할 수있는 가능한 작업을 나타내는 사용자에 대한 경고를 표시하는 것입니다 등 위치 서비스를 사용하도록 설정합니다. 사용자가 자신의 재량에 따라 응용 프로그램을 종료 할 수 있도록 허용합니다. 당신은이 작업을 수행해서는 안

Technical Q&A QA1561

+0

그리고 나서 OS는 "멀티 태스킹"을합니다 :) 그것의 제한된 구현은 사용자에게 문제를 일으 킵니다. 사용자가 앱 사용을 마쳤을 때와 앱을 숨기려고 할 때를 알기를 신뢰하지만 모든 앱이 viewWillEnterBackground 만 가져옵니다. 모든 애플리케이션이 리소스를 사용하기 때문에 전화 자체를 사용하는 데 2 ​​초의 지연이있는 모드에서 iPhone을 얻는 데 아무런 문제가 없습니다. 이제는 앱에 Exit 버튼이있는 이유가 적어도 하나 있다고 생각합니다. 예를 들어 묻는 사람의 경우에는 고급 솔루션이 아니더라도 마찬가지입니다. ;) –

+0

@Henrik : 나는 동의하지 않는다. –

+2

전혀 동의하지 않습니다. 나가기 버튼이 전혀 필요 없습니다. 그러나 확실히 개발자의 관점에서 적절한 출구/재시작 기능에 대한 필요성 - 데이터베이스 재설정, 사물 테스트, 유효하지 않은 알 수없는 상태 (사용자가 계속 사용하면 데이터 손상 방지) 등이 필요합니다. 앱을 강제로 무차별 적으로 무너 뜨 렸습니다. – chakrit

10

활성 네트워크 연결없이 응용 프로그램을 사용할 수 없다는 것을 사용자에게 알리는 것이 좋습니다. 응용 프로그램을 완전히 종료하는 것은 매우 비우호적 인 방법입니다. 사용자는 단순히 앱이 '사라'는 것을 보게됩니다.

내가 본 모든 잘 작동하는 응용 프로그램은 적어도 종료하기 전에 알림을 제공 할 것입니다.

+2

대단히. 앱이 연결없이 작동하지 않는다고 사용자에게 알려주고 앱이 스스로 죽일 수 있도록합니다. –

+1

또한 네트워크가 몇 초 동안 사라지는 것은 불가능하지 않습니다. 반점이있는 지역에서 이러한 앱을 사용하는 것은 매우 초조 할 것입니다. –

2

앱을 종료하면 앱이 다운 된 것처럼 보입니다.

최저

는 인터넷에 연결되어 있지 않아도되었다는 메시지를 올려 그들에게 (그들은 인터넷 연결을 얻을 수있는 경우), 또는 내가 당신을 권합니다

+0

하지만 고객은 이것을 필요로합니다. 나는 당신이 옳다고 알고 있습니다. 그러나 우리는 클라이언트가 "우리의 보스"이고 "보스는 항상 옳습니다." –

+3

이 경우 보스가 잘못되었습니다. 기간. 그들에게 ** Nikolai Ruhe **가 그의 대답에 올린 글을 보여주십시오. –

+2

@sagar "보스"가 주장하는 경우, 그 사람/그녀를 Apple의 설명서로 안내하십시오. 애플은 프로그램 적으로 프로그램 종료를 강력히 권유한다. 내 대답에 링크를 제공했습니다. –

6

확실히 그것을 자신을 선택할 재 시도 할 수있는 옵션을 제공합니다 3 가지 이유로 재검토하십시오

  1. 앱이 고장난 것으로 보입니다.
  2. 앱이 실행되는 동안 사용자가 인터넷에 연결될 수 있습니다. 이 경우 '재시도'가 가장 좋습니다.
  3. 나는 애플이 실제로 그렇게한다면 앱을 받아들이지 않을 것이라고 생각한다. Apple 응용 프로그램이 인터넷 연결을 필요로 할 경우, 그들이 무엇을 할 것인지 확실하지 않으며, 응용 프로그램이 연결없이 무엇을 할 것인지를보기 위해 테스트를 수행합니다.

(이유가 무엇이든) 원하지 않으면 사용할 수 있습니다. 애플은

exit(0); 
+0

예 "닫기"=> 응용 프로그램을 종료해야하는 경우 alertview "재시도"및 "닫기"에 두 개의 버튼을 제공합니다. –

+2

그럴 경우 "재시도"버튼이 하나 있어야합니다. iPhone의 모든 응용 프로그램에는 이미 "닫기"버튼 (하드웨어 홈 버튼)이 있으며, 다른 버튼을 구현할 필요가 없습니다. –

2

를 참조하십시오.the Human Interface Guidelines에서 "중지 중"을 살펴보십시오.이 작업을 수행하는 앱을 제출하지 못하거나 이상한 사용자 환경을 제공하지 못할 수도 있습니다.

링크는 iTunes Music Store 앱과 마찬가지로이 문제를 해결하는 올바른 방법을 보여줍니다.

5

언제나 0으로 나눌 수 있습니다. 보너스로, 구현은 이것이 좋은 생각을 반영 할 것입니다.

+0

여기서는 "0으로 나누기"예외로 응용 프로그램이 종료됩니다. –

+1

이제 응용 프로그램이 종료된다는 사실에 화가 났습니까? 바지, 남자, 당신의 마음을 확인하십시오! – Chuck

+1

당신의 평판을 살펴보면, 나는이 대답을 농담으로 생각합니다 : +1 –

1

인터넷에 연결할 수 없을 때 종료하면 앱이 거부됩니다.

죄송합니다.

3

희망이 도움이 [[NSThread mainThread] 출구] -t

;