12월 2일부터 iOS 11을 탑재한 기기에서 무한 리스프링이 일어나고 있다는 제보가 여러 곳에서 접수되고 있습니다. 현재 확실히 영향을 받는 것으로 알려진 버전은 11.1.1과 11.1.2지만, 그 이전 버전도 해당이 될 가능성을 무시할 수는 없습니다.
여기서 리스프링이란, 홈 화면에서 화면이 검은색으로 바뀌고, 바람개비가 돌아가다 돌아오는 현상을 뜻합니다. iOS 홈 화면의 코드명인 '스프링보드(Springboard)'가 다시 불러와진다는 의미에서 '리스프링(Respring)'이라 하는 것입니다.
이 글에서는 이 문제의 원인을 짚어보고, 애플이 역시나 패치를 내놓기 전까지 해결할 방법을 알아보도록 하겠습니다.
원인은 무엇인가
이번 버그의 원인은 써드 파티 앱들이 사용하는 로컬 알림 기능에서 발생하는 것으로 알려져 있습니다. 로컬 알림 기능은 푸시 알림과 비슷한 방식으로 사용자에게 보이지만, 내부 구조는 많이 다릅니다.
푸시 알림은 앱이 꺼진 상태에서 해당 앱이 받을 알림을 애플의 푸시 알림 전용 서버를 통해 기기로 전송하는 방식입니다. 백그라운드에서 앱이 구동되지 않아도 필요한 알림을 받을 수 있게 하기 위해 설계됐죠. 이에 반해 로컬 알림은 백그라운드에 살아 있는 앱이 직접 알림을 받는 구조입니다.
이번 버그의 원인은 UILocalNotification의 repeatInterval 메서드(method)를 사용하는 앱이 알림을 받으려 하는 경우에 발생합니다. 해당 메서드는 특정 시간 이후에 알림을 보내도록 설정할 수 있도록 해주는데, 현재 iOS 10부터 ‘사용 중지 권고(deprecated)’를 받은 상태입니다. 이 메서드를 사용하는 앱이 로컬 알림을 가져오려는 순간 스프링보드가 튕기면서 리스프링이 일어나는 것입니다.
해결 방법은?
이 버그에 해결 방법이 없는 것은 아닙니다. 무려(...) 세 가지나 있죠. 다만 세 가지 모두 장단점이 있습니다.
• 날짜를 12월 2일 전으로 돌리기: 사용자 입장에서는 가장 간단한 방법입니다. 설정 - 일반 - 날짜와 시간에서 자동 설정을 끄고 날짜를 앞으로 돌리면 됩니다. 다만 이로 인해 날짜에 의존하는 앱(캘린더 등)이 꼬일 가능성이 높습니다.
• 로컬 알림을 쓰는 앱의 알림 끄기: 해당 문제를 일으키는 앱의 알림을 끄면 리스프링 현상을 없앨 수 있습니다. 설정 - 알림에서 앱을 선택해 ‘알림 표시’를 꺼버리면 됩니다. 다만 이 방법은 어떤 앱이 푸시 알림을 쓰고, 어떤 앱이 로컬 알림을 쓰는지가 불확실하기 때문에 시행착오가 필요합니다. 몇 가지 팁을 알려드리자면, 외부 서버에 의존하는 앱(메신저 등)은 푸시 알림을 쓸 가능성이 높기 때문에 끌 필요는 없습니다. 로컬 알림은 보통 써드 파티 알람 앱이나 게임 등에서 많이 쓰는 알림 방식입니다. 일단 해당되는 앱들의 알림을 꺼보고, 현상이 다시 발생하면 바꿔보는 것이 좋습니다. 알림을 끈 후에는 재부팅도 해야 한다고 합니다.
• iOS 11.2 베타 사용하기: 현재 베타 테스트 중인 iOS 11.2에서는 해당 문제가 발생하지 않는 것으로 알려져 있습니다. 일반 사용자도 퍼블릭 베타 프로그램을 통해 11.2 베타로 올릴 수 있습니다. 물론 베타이니만큼 거기서 오는 잠재적인 위험(?)은 각오하셔야 합니다. 퍼블릭 베타를 설치하는 방법은 여기를 참고하세요.
필자: 쿠도군 (KudoKun) 컴퓨터 공학과 출신이지만 글쓰기가 더 편한 변종입니다. 더기어의 인턴 기자로 활동했었으며, KudoCast의 호스트로도 활동하고 있습니다. |
참조
• iPhone crashing on Dec. 2? Here's the fix! - 아이모어