티스토리 뷰

공부

앱 종료하기 with animation

Zedd0202 2021. 5. 4. 22:56
반응형

 

안녕하세요 :) Zedd입니다.

오늘은 제가 정말 인상을 받은....!! 기능(?)

 

# 앱 종료하기

사실 앱을 직접 종료하는 일은 당연히!!!! 하면 안되는데, 특정 상황에서 앱을 강제종료 시킬 수 있습니다.

(저의) 특정 상황 : 사내 배포용 && 실험실에서 특정 값 바꿈 -> 앱 강제종료 시키고 다시 실행하도록 함 

 

# 앱을 강제종료 시키기

저는 exit(0), exit(1) 밖에 몰랐습니다.

exit(0) : 성공적인 프로그램 종료(Exit Success)

exit(1) : 성공적이지 않은 프로그램 종료(Exit Failure)

(사실 exit(2), exit(-1) 이런식으로 해도 종료가 되는데, 0과 1이 표준이라고 보시면 됩니다.)

보시다시피 앱 사용성에 굉장히 안좋게 종료가 되는데요. 

만약 앱 심사 리뷰 중 위와같이 앱이 죽게 되면 리젝사유가 됩니다.

We found that your app includes a UI control for quitting the app. This is not in compliance with the iOS Human Interface Guidelines, as required by the App Store Review Guidelines

 

# 앱을 💕⭐️💚❤️예쁘게⭐️❤️☀️💙💕종료시키기

 UIApplication.shared.perform(#selector(NSXPCConnection.suspend))

위 코드를 이용하는 것입니다. 

이렇게 애니메이션과 함께 홈화면으로 돌아가게 됩니다.

 UIApplication.shared.perform(#selector(NSXPCConnection.suspend))

하지만 위 gif에서 볼 수 있듯이 단순히 앱 상태를 suspend로 보낸거기 때문에 앱이 종료가 안된 것을 볼 수 있어요.

UIApplication.shared.perform(#selector(NSXPCConnection.suspend))
DispatchQueue.main.asyncAfter(deadline: .now() + 0.5) {
    exit(0) ✅
}

이렇게 해주게 되면

애니메이션과 함께 앱이 정상적으로 잘 종료하는 것을 볼 수 있습니다! 

이렇게 예쁘게(?) 종료하면 리젝도 면할 수 있다고 합니다. (참고링크)

 

저는 일단 앱 종료 키워드를 exit만 알고있어서..이게 당연한 줄 알았는데,

최근에 이런 seamless한 종료를 보면서 많이 감동을.....🥺

그래서 저같이 exit밖에 모르시는 분들을 위해..호다닥...✍️

 

+ 추가

UIApplication.shared.perform(#selector(NSXPCConnection.suspend))
DispatchQueue.main.asyncAfter(deadline: .now() + 0.5) {
    exit(0) ✅
}

이렇게 dispatchQueue를 돌려서 했지만, didEnterBackgroundNotification obsever를 등록해서 exit(0)하는 방법도!! 

 

참고

stackoverflow.com/a/52515554

반응형

'공부' 카테고리의 다른 글

Swift Package Resource - Copy와 Process의 차이점  (0) 2021.05.15
FlexLayout (2)  (0) 2021.05.05
FlexLayout 사용해보기  (4) 2021.05.02
extension Reactive  (1) 2021.04.28
PinLayout 사용해보기  (0) 2021.04.21