본문 바로가기
개발/ios

손쉽게 아이폰 앱을 새로 실행 시키는 코드 한줄

by 매몰 2018. 3. 26.

 

 

 

안드로이드에서는 메인 activity를 종료하고 다시 호출하면 바로 재시작이 된다.

 

하지만 아이폰에서는 그렇게 할수가 없었다. 혹시나 하는 마음에 재시작 시키는 함수를 찾아봤지만 이 또한 없었다. 나의 구글링 실력이 부족해서 못찾은거일수도 있지만... 좌절하고 있는 순간...

 

정말 우연하게 방법을 알아냈다. 사실 실수로 코드를 잘못 넣었는데... 재시작이 되는것이다... 아! 실수로 찍은 로또나 될것이지.. 어쨋든 기분은 좋다. 불로소득같은 느낌이다.

 

 

방법은 진짜 간단하다.

AppDelegate 의 applicationWillEnterForeground 에서 exit(0)를 호출해주면 된다.

아마도 잠에서 깨어나기 직전에 종료를 해주면 깨어나는 작업이 중단되지 않고 계속 진행되면서 재시작되는 효과가 나오는것 같다.

 

단점은 내가 원하는 시점이 아니라 앱이 깨어나는 순간에서만 적용된다는 것이다.

하지만 이는 아주 유용하게 쓰일수 있다.

 

iOS 특성상 앱을 완전 종료하지 않고 임시로 백그라운드로 내렸다가 다시 불려오는 경우가 많다.

(폰 아래 버튼은 종료 버튼이 아니라 홈 버튼이기 때문에)

즉, 앱이 완전 종료되고 다시 실행되어야만 하는 경우 매우 기특하게 사용될수 있다.

 

 

다음은 1시간 동안 앱이 포어그라운드로 깨어나지 않았다면 새로 실행 시키는 코드이다.

참고하여 다양하게 사용하길 바란다.

 

 

class AppDelegate: UIResponder, UIApplicationDelegate {

 

    let RESTART_TIME: TimeInterval = 3600

  

    var mResignTime: TimeInterval?

 

    func applicationWillResignActive(_ application: UIApplication) {

        mResignTime = NSDate().timeIntervalSince1970

    }

 

    func applicationWillEnterForeground(_ application: UIApplication) {

        if mResignTime != nil && NSDate().timeIntervalSince1970 - mResignTime! > RESTART_TIME {

            exit(0)

        }

 

    }

}

 

 

아이폰X와 아이폰7 (11.2)에서 테스트 해보았다. 잘 돌아간다. 굳!

 

 

 

 

 

 

 

도움이 되셨다면~ 정성으로 빚은 저희 앱!  많은 이용 바래요:)

 

https://meorimal.com/index.html?tab=spaceship

 

우주선 - 방치형 인공지능 투자 체험기

미리 맛보는 인공지능 투자!

(주)머리말 meorimal.com

 

https://meorimal.com/subway.html

 

지하철어디있니

더이상 고민하지 마세요. 뛸지 말지 딱 보면 알죠.

(주)머리말 meorimal.com

 

사업자 정보 표시
주식회사 머리말 | 고영진 | 서울특별시 송파구 중대로 135 서관 10층 (가락동, 아이티벤처타워) | 사업자 등록번호 : 524-88-00727 | TEL : 010-9990-3674 | Mail : gyjmeba@hanmail.net | 통신판매신고번호 : 2017-서울강남-03941호 | 사이버몰의 이용약관 바로가기