문제 상황
- iOS 제어 화면에서 디바이스 화면 방향 변경 잠금을 하면 디바이스 orientation 정보가 수신되지 않는다.


- 정확히는, 디바이스 orientation이 변경되면 발행되는 NotificationCenter의 UIDevice.orientationDidChangeNotification이 발행되지 않는다.
고민 과정
배경
- 공식문서를 참고, beginGeneratingDeviceOrientationNotifications를 실행 후 테스트해 보아도 원하는 노티피케이션이 발행되지 않았다.
- isGeneratingDeviceOrientationNotifications 값을 테스트해 보았을 때 계속 true가 나왔다.
- 어제는 잘 됐는데…. 대체 왜?!
- 스택오버플로우 페이지를 참고, 기기가 화면 방향 변경 기능을 잠금하면 orientation 정보가 수신되지 않는다는 정보를 발견했다.
- 그렇다면 이를 극복하기 위해서는 어떻게 해야 할까?
해결 과정
- 프로젝트와 비슷한 기능을 하는 앱 검색해서 이들도 잠금 기능이 활성화되어 있는 상태에서는 flip 타이머가 작동하지 못하는지를 테스트 하였다.
- 도트타이머 라는 앱으로 테스트해 보았는데, 화면 방향 잠금 기능에 상관없이 기능이 잘 작동하였다.
- 그런데 프로젝트에서 사용하려던 방법인 orientationDidChangeNotification을 사용했다기엔 너무 빠른 반응속도로 잘 작동하였다.
- Core Motion을 사용한 것으로 추정!
- 따라서 화면 방향 잠금에 대응하기 위해서는 Core Motion의 활용이 필요하다는 결론을 내렸다.
결론