모바일 메신저 알림 지옥에서 벗어나는 방법

스마트폰이 퍼지고 메신저가 널리 사용 되면서부터 시작 된 고민이 있었는데 예전에도 글로 남긴 적이 있다(link).

그래서 몇 년 전부터 생각하고 있던 방법이 있는데 알림이 오기는 오되 같은 방에서 일정 시간 이내에 연속으로 오는 메시지에 대해서는 알림을 울리지 않는 것이다.
그렇게 하면 메시지를 놓치지 않을 수 있고 진동 폭풍에서 벗어날 수 있다. 하지만 어떤 메신저도 이런 기능을 구현하지 않고 있다. 1시간 알림 끄기 정도가 전부이다. 그걸 5분으로 줄이고 메시지가 올 때마다 자동으로 설정하게 하면 끝인데 왜 하질 않는지 모르겠다.

단체 채팅방의 경우 엄청 심한 문제인데 대부분의 채팅의 경우 한동안 조용하다가 대화가 시작되면 거의 초 단위로 메시지들이 온다. 이러면 한동안 가만히 있다가 알림이 왔을 때 내가 즉시 앱을 열지 않는 한 무한한 알림 지옥에 빠지게 된다. 그렇다고 알림을 끄면 대화가 언제 시작되는지도 모르고 하루 일과가 끝났을 때 우편함을 확인하듯이 이미 지나간 대화를 읽어야 하는데 페이스북이나 트위터, 혹은 블로그면 모를까 채팅에서 이러는 건 아무런 의미도 없기 때문에 소통을 거부하든지 알림 지옥에 들어가든지 하나의 선택을 해야만 한다.

요즘의 경우 이 문제점을 제작사들도 알고 있는지 1시간 뮤트 같은 기능을 제공하긴 하지만 결국은 내가 앱을 열고 뮤트를 설정해야 한다. 근본적인 문제는 아예 해결이 안 된 것이다.
내가 생각했던 방법은 일단 알림이 울리긴 하는데 일정 시간 내에 너무 많은 알림이 오면 자동으로 1시간 정도 뮤트를 설정해버리는 기능이었다. 구현하기 어려운 것도 아닌데 이게 되는 메신저를 본 적이 여태 없다는 게 굉장히 실망스러웠고 오늘 다시 검색을 해 봤다. 앱에서 지원을 안 하면 OS가 해 주면 되는 거 아닌가 했지만 안타깝게도 안드로이드에선 이런 기능이 없다. CM롬에서도 없다. 하지만 Xposed라는 게 있었다.

Xposed는 안드로이드에 이것저것 모듈을 붙여서 심하면 커스텀롬의 기능을 모두 붙일 수도 있는데 여기면 누군가가 만들었겠다 싶어서 찾아 봤더니 역시나 있었다. Less frequently notification이라는 물건인데 설정한 시간 단위 이내에 알림이 많이 오면(그 많다의 기준은 모르겠다. 설정도 없고..) 그 이후의 알림은 소리, 진동 중 원하는 것을 안 울리게 할 수 있다. GCM이 날아오고 앱이 잠들기 상태에서 깨어나 배터리를 먹는 건 어쩔 수 없지만 일단 사용자인 내가 스트레스를 덜 받을 수 있다는 점에 만족하기로 했다.

P.S: 폰에서 알림 소리와 진동이 안 나지만 일단 노티바에는 뜨기 때문에 Pebble에서는 그걸 인식하고 시계에 알림을 전송한다. 폰은 조용한데 손목에서는 계속 진동이 와서 귀찮아지긴 하지만 이건 이제 Pebble이 해결 할 문제지.. 알림이 올 때 그 알림이 진동을 울렸는지, 소리를 울렸는지 판단 할 수 있다면 시계에서도 화면만 띄우고 진동을 안 울리면 좋겠는데 바보같은 개발자가 노티바 내용과 진동을 따로 발생시킨다면?

Android 시스템에 핑을 보내다가 신기한 사실을 알아냈다

나는 집에서 라즈베리 파이를 이용해 음악을 틀어 두는데 내 핸드폰을 향해 주기적으로 핑을 보내다가 일정 시간동안 응답이 없으면 내가 집에 없는 것으로 판단하고 음악을 멈추게 해 놓았다. 그런데 핸드폰을 가만히 두면 배터리를 아끼기 위해(충전기에 꽂혀 있는데도) 시스템이 잠든 상태에 빠지고 핑에 대한 응답을 하지 않아 음악이 멈추는 일이 자주 발생했다.

그래서 Android 시스템이 화면이 꺼진 후 얼마나 시간이 지나야 잠드는지 확인하고 싶어서 Wi-Fi monitor를 통해 와이파이 신호를 살펴보고 있었는데 놀라운 사실을 발견했다. 핑에 대한 응답은 안 하지만 내 핸드폰의 맥 어드레스가 발신지인 와이파이 패킷이 잡히고 있었다.
혹시나 내가 핑을 보내는 패킷의 목적지 주소까지 스캔해서 그렇게 잘못 뜨는 건가 싶어 핸드폰의 와이파이를 꺼 봤는데 그 상태에서는 패킷이 잡히지 않았다. 핑에 대한 응답은 없는데 패킷은 발생하는 이 상황을 좀 더 살펴봐야겠다.

결론적으로 음악을 꺼 주는 스크립트는 주기적으로 핑을 보내는 부분은 그대로 두고 Wi-Fi monitor로부터 해당 맥어드레스가 발신지인 패킷이 최근에 있었는지를 확인하도록 바꿨다. 뭔가 하찮은 일에 과한 노력을 쏟은 거 아닌가 싶지만 애초에 이 프로젝트가 그러라고 만든 프로젝트니 상관 없겠지.

Android ART 때문에 부팅이 너무 오래 걸린다

ART(Android Runtime)이라는 게 생기면서 롬을 업데이트 하거나 한 후 부팅을 할 때 시스템에 설치 된 모든 앱에 대해서 최적화를 해야 한단다1. 문제는 이걸 스킵을 할 수도 없고 이게 돌아가는 동안은 부팅이 끝나지 않는데 10분 정도 걸린다. 모든 앱에 대해서 이걸 해야 할 이유도 모르겠고(부팅에 필요한 앱만 우선적으로 한 뒤 UI를 띄워주고 백그라운드에서 아직 사용하지 않은 앱들을 최적화 하면 안 되나?) 이걸 오래 걸리지 않게 하는 게 현재로선 유일한 해결책이라고 한다.
문제는 그 유일한 해결책이 설치한 앱을 최소한으로 남기고 다 지우라는 거다2 (아니면 업데이트 주기를 늦추든가).