안부지기 · 이야기 · 개발 일지 ⑥

개발 일지 ⑥ — 알람이 왜 안 울릴까

알림 방식을 새로 깐 뒤에도, 한동안은 “왜 또 안 울리지” 하는 날의 연속이었습니다. 분명 시각을 맞춰 예약했는데 알림이 한참 늦거나 아예 오지 않았습니다. 처음엔 제 코드를 의심하며 같은 자리를 몇 번이고 들여다봤습니다.

그런데 원인은 다른 데 있었습니다. 안드로이드가 배터리를 아끼려고 백그라운드에 있는 앱을 재워버리는 것이었습니다. 제 잘못이 아니라 시스템의 성질이었던 거죠. 그걸 알고 나니 접근 방법이 달라졌습니다.

“시스템이 앱을 재운다면, 정해진 시각엔 시스템이 직접 깨워주도록 부탁하자”는 쪽으로 방향을 잡았습니다. 앱이 정한 시각에 스스로 깨어나 알림을 띄우도록 구조를 잡고, 또 잡았습니다. 고치고 예약하고 기다리고, 다시 고치고 예약하고 기다리고 — 그 반복이었습니다.

문제는 시간이 걸린다는 거였습니다. 알림을 “내일 아침”으로 걸어두면, 정말 다음 날 아침이 되어야 결과를 알 수 있으니까요. 자기 전에 알림을 예약해 두고, 아침에 일어나 “이번엔 왔나?” 확인하는 날들이 이어졌습니다. 하루에 시도할 수 있는 횟수가 정해져 있는, 묘하게 더딘 디버깅이었습니다.

게다가 제조사마다 절전 정책이 달라, 어떤 폰에서는 잘 되는데 다른 폰에서는 또 막혔습니다. 그래서 실제 휴대폰을 책상 위에 올려두고, 알림이 오는지 몇 번이고 직접 지켜봤습니다. 나중에 알림이 안 올 때 가이드를 따로 써 둔 것도, 이때 고생한 기억 덕분입니다.

가장 티가 안 나는 작업이었습니다. 화면에는 아무 변화가 없으니까요. 하지만 “알림이 제때 온다”는 이 당연한 한 가지가 사실 이 앱의 전부였습니다. 그게 안 되면, 나머지가 아무리 예뻐도 의미가 없었습니다.