디데이 앱 Days+를 만들어 출시하고 조용히 망한 기록. 7편짜리다. 각 편은 따로 읽어도 된다. 1편부터 보기

홈 위젯을 처음 건드린 게 1월 말이고, 패턴까지 정리가 끝난 게 3월 초다. 40일이다. 구글플레이 출시까지 걸린 75일 중 40일.

지금 위젯 코드만 세보면 4천 줄이 넘는다. iOS와 안드로이드 것을 따로 세서 합친 값이다.

디데이 하나를 홈 화면에 띄우는 데 그만큼 썼다.

아깝게 쓴 게 아니다. 디데이 앱에서 위젯은 곁다리가 아니라 본체다. 사람들이 이 앱을 쓰는 방식이 홈 화면에 날짜를 띄워두는 거니까, 위젯이 별로면 앱도 별로다. 그래서 거기에 제일 오래 붙었고, 지금도 그 판단은 맞았다고 생각한다.

문제는 잘 만들수록 앱을 안 켜게 된다는 거였는데, 그건 한참 뒤에 알았다.

같은 걸 두 번 만들어야 했다

위젯은 앱 코드로 못 만든다. iOS는 App Group이라는 공유 공간에 데이터를 넣어두고 위젯이 그걸 꺼내 그리는 구조고, Android는 RemoteViews라는 별도 화면 기술을 쓴다. 플러터로 짠 앱 코드는 여기 한 줄도 못 넘어온다. 그래서 iOS로 한 번, Android로 또 한 번 만들었다.

서버를 안 쓴 것도 여기서 걸렸다. 혼자 만드는데 서버까지 붙이면 기간이고 비용이고 감당이 안 돼서 전부 기기 안에서 돌게 짰는데, 그러면 위젯에 사진 한 장 넘기는 것도 파일을 복사하고 크기를 줄이고 캐시를 관리하는 일이 된다.

제일 오래 잡아먹은 건 패턴이었다.

Days+는 카드 배경에 감성 패턴이 깔린다. 색을 고르고 배치를 잡고 무늬를 그리는 로직을 따로 만들어서 오십 가지를 넣었다. 디데이 앱은 기능으로 이길 수 있는 게 아니니까 보기 좋은 데서 갈린다고 봤고, 그 판단으로 시간을 제일 많이 썼다.

그런데 앱에서 보이는 무늬와 위젯에서 보이는 무늬가 달라 보이면 안 된다. 그리는 엔진이 서로 다르니까 같은 그림이 안 나온다.

같은 이벤트를 앱과 위젯에서 각각 찍은 것

같은 이벤트를 앱에서 한 번, 홈 화면 위젯에서 한 번 찍어 나란히 놓은 거다. 왼쪽은 무늬가 또렷하게 뭉쳐 있는데 오른쪽은 흐릿하게 퍼져 있다. 같은 날짜, 같은 색인데 다른 그림이다.

이런 걸 며칠씩 찍어 올리면서 맞췄다. 난수 씨드를 양쪽이 공유하게 만들고, 밝기와 크기 보정을 따로 넣고. 그러다 3월 초에 겨우 끝났다.

그 사이에 터진 것들은 하나같이 위젯이 아니었으면 없었을 일이다. App Group ID가 다른 앱과 겹쳐서 릴리즈 빌드가 통째로 죽은 적도 있고, 위젯을 홈 화면에 두 개 놓으면 서로 데이터를 덮어쓰기도 했다.

열 명한테 팔면서 커버 화면을 지원했다

출시하고 얼마 안 됐을 때 이런 커밋을 했다.

feat(android): add support for Galaxy Z Flip cover screen widgets

갤럭시 Z 플립을 접었을 때 겉면에 뜨는 작은 화면이 있다. 거기에 디데이 위젯을 올릴 수 있게 만들었다.

그 시점 구글플레이 누적 설치가 열 명대였다. 전부 한국이다. 그 열 몇 명 중에 Z 플립을 쓰면서, 커버 화면을 굳이 커스텀하고, 거기에 하필 디데이 위젯을 올려둘 사람. 계산해본 적은 없다.

만들고 싶어서 만들었다. 잘 돌아간다.

잘 만들수록 안 켠다

출시하고 통계를 보다 알았다. 디데이 앱은 위젯을 세팅하면 앱을 다시 안 켠다.

홈 화면에 깔린 Days+ 위젯

이렇게 깔아두면 열 일이 없다. 홈 화면에 날짜가 다 떠 있는데 앱을 왜 켜나.

광고는 앱을 켜야 뜬다. 넉 달 동안 광고가 317번 떴다.

이 얘기를 출시 두 달 전에 들은 적이 있다. 기능을 다 넣고 냉정한 평가를 부탁했을 때다.

사용자는 D-day 앱을 앱 내부보다 위젯으로 더 많이 소비합니다.

문장은 위젯이 예쁘지 않으면 바로 지워진다는 쪽으로 이어졌다. 나는 그걸 위젯을 더 예쁘게 만들라는 말로 읽고 패턴을 다듬고 사이즈를 늘렸다.

내가 원래 하던 생각과 같은 말이었으니 그렇게 읽혔다. 안 예쁘면 안 쓴다는 건 내 전제였고, 저 문장은 그걸 확인해주는 걸로 들렸다.

같은 문장이 “그러니까 앱을 안 켠다"로도 읽힌다는 건 그때 못 봤다.

광고가 안 나온 날, 위젯을 하나 더 만들기로 했다

출시하고 보름쯤 지난 어느 날, 광고가 자주 안 뜬다는 걸 확인하고 원인을 찾았다. 단가를 높이려고 내가 걸어둔 eCPM 하한선이었다. 그날 저녁은 미디에이션을 붙이느라 밤늦게까지 갔다. 그 얘기는 5편에서 한다.

그리고 같은 날 저녁에 위젯에 사진이 나오게 하는 방법을 물었다.

멀티 포토 위젯의 시작이 거기다. 만든 건 한 달 뒤인데 착상은 하필 광고 수익이 안 나온다는 걸 확인한 그날이다.

나중에 그때 생각을 이렇게 정리해뒀다.

“앱 특성상 한번 위젯을 세팅하고나면 앱을 실행율이 뚝 떨어질거고 그럼 광고노출률도 떨어지고… 사용자가 계속 앱에 들어와서 광고를 노출하는게 가장 큰 목적이었어.”

앱을 안 켜는 게 문제라는 걸 정확히 알고 있었다. 그래서 낸 답이 위젯을 하나 더 만드는 것이었다.

포토 위젯을 고른 데는 광고 말고 다른 이유가 있었다. 패턴을 그렇게 만들어놓고 보니, 결국 사람들이 넣고 싶은 건 자기 사진이다. 우리 애 사진, 애인 사진. 내가 만든 무늬 오십 가지보다 그 한 장이 낫다.

그러니까 사진을 넣게 해주고, 그 대가로 광고를 한 번 보게 하자. 광고를 보면 24시간 열린다. 사진을 넣고 싶으면 광고를 볼 거라고 생각했다.

위젯 때문에 앱을 안 켜니까 위젯을 하나 더 만들어서 그걸 열려면 앱에 들어오게 한 셈이기도 하다.

그렇게 3주가 들어갔다. 그 달 커밋은 거의 다 새벽에 찍혔고, 같은 달 구글플레이에서 앱을 새로 깐 사람은 열한 명이었다.

제일 성가신 건 잠금 만료였다. 광고를 한 번 보면 24시간 열리는 구조인데, 위젯은 내가 원할 때 깨어나 주지 않는다. 시스템이 그리고 싶을 때 그린다. 그래서 위젯이 스스로 시간을 재게 만들 수가 없고, 만료 시각을 따로 저장해뒀다가 다음에 깨어날 때 비교하는 식으로 돌아가야 했다.

다 만들었고, 아무도 안 왔다

위젯은 최종 4종이다. 스몰, 미디움, 라지, 4x4. Z 플립 커버 화면도 된다. 크래시는 없다.

포토 위젯 슬롯을 열려고 본 광고까지 전부 합쳐서, 넉 달 동안 광고가 317번 떴다. 수입은 2.78달러다. 설치 다음 날 앱에 남아 있는 사람은 10.96%고 열흘 뒤엔 0%다.

기능이 부족해서 이렇게 된 건 아니다. 위젯 네 종류에 포토월, 감성 패턴, 할 일, 한 줄 일기, 알림, 백업, 3개 국어까지 들어 있다.

그 40일 동안 이 앱을 어떻게 알릴지 적어둔 문서는 한 장도 없다.