2017-09-25 12 views
3

최신 xcode - 9 및 iOS 11로 업데이트되었습니다. 이제 UIApplicationState에서 문제가 발생했습니다. 아무도 애플이 ApplicationState에서이 변경을 한 이유를 말해 줄 수 있습니까?왜 iOS 11에서 내 UIApplicationState가 활성 상태가 아닌 비활성 상태로 표시됩니까?

예를 들어

:

 UIApplicationState applicationState = [UIApplication sharedApplication].applicationState; 
     if (applicationState == UIApplicationStateActive) 
     { 
     } 

을하지만 applicationState = UIApplicationStateInactive 무엇입니까 : 의 ViewController viewWillAppear 동안, 나는 UIApplicationState을 확인하고 있습니다.

또는 내가 여분의 코드로 아이폰 OS 11 버전에 대해 개별적으로 처리해야 할 :

if (applicationState == UIApplicationStateActive || (@available(iOS 11, *) && applicationState == UIApplicationStateInactive)){ 
} 

다른 대답은 모든 버전에 걸쳐 지속적으로 응용 프로그램의 상태를 유지하기 위해? 사전에

감사합니다,

+0

동일한 일이 여기에서 발생합니다. – Jacky

답변

2

** 업데이트] 답변 **

나는 모두 아이폰 OS (10)와 아이폰 OS (11) 장치의 상태를 테스트하기 위해 다음 코드를 사용했다.

import UIKit 

class ViewController: UIViewController { 
    override func viewDidLoad() { 
     super.viewDidLoad() 
     print("\(#function) active: \(UIApplication.shared.applicationState == .active)") 
    } 

    override func viewWillAppear(_ animated: Bool) { 
     super.viewWillAppear(animated) 
     print("\(#function) active: \(UIApplication.shared.applicationState == .active)") 
    } 

    override func viewDidAppear(_ animated: Bool) { 
     super.viewDidAppear(animated) 
     print("\(#function) active: \(UIApplication.shared.applicationState == .active)") 

     DispatchQueue.main.asyncAfter(deadline: .now() + 0.25) { 
      print("\(#function) with delay active: \(UIApplication.shared.applicationState == .active)") 
     } 
    } 
} 

은 아이폰 OS 10에서 실행중인 경우 :

viewDidLoad() active: false 
viewWillAppear active: false 
viewDidAppear active: true // This differs from 11 
viewDidAppear with delay active: true 

는 아이폰 OS 11에서 실행중인 경우 :

viewDidLoad() active: false 
viewWillAppear active: false 
viewDidAppear active: false 
viewDidAppear with delay active: true 
이 의도적인지,하지만 뭔가가 확실히 있다면 나는 당신에게 말할 수 없다

변경되었습니다. 아마도 레이더 파일에 기록할까요?

+0

viewDidAppear에서 UIApplicationState를 확인해 보았습니다. 현재 활성 상태가 아니라 "UIApplicationStateInactive"가 표시됩니다. –

+0

@AbilashBNair 예제 코드로 답변을 업데이트했습니다. – CodeBender