지난 여름 iOS 27 개발자 베타가 출시되었을 때, ViviDiary 팀은 알림 오픈율이 급격히 떨어지는 것을 목격했습니다. 일주일 만에 일일 알림과의 상호작용이 42%만큼 감소했습니다.
버그는 아니었습니다. 서버도 정상이었죠. 문제는 Apple이 사용자 주의를 다루는 방식에 근본적인 변화가 있었다는 점이었습니다.
Apple Intelligence의 진화는 푸시 알림에 대한 개발자 UX를 근본적으로 바꾸어 놓았습니다. 이제 Apple의 OS는 엄격한 편집 게이트키퍼 역할을 하며, LLM을 활용해 중요도에 따라 알림을 분류, 요약하고 종종 숨기기도 합니다. 새로운 '알림 요약'이나 공격적인 '방해 금지 모드' 같은 기능은 일반적이고 반복적인 알림을 적극적으로 하향 조정합니다.
많은 습관 추적 앱과 웰니스 앱들에게 이는 위기였습니다. 하지만 우리에게는 제품 철학에 대한 궁극적인 검증이었습니다.
AI 필터에서 살아남기 위해 클라우드 저장 푸시 아키텍처를 어떻게 조정했는지, 무엇을 구축하기를 단호히 거부했는지, 그리고 Apple Intelligence를 위한 마음챙김 알림 설계가 어떻게 우리를 더 나은, 더 조용한 제품을 만들도록 강제했는지에 대한 솔직한 이야기를 전합니다.
Apple Intelligence 요약 문제
ViviDiary는 가볍게 설계되었습니다. 핵심 상호작용은 3초짜리 체크인입니다. 5단계의 기분 선택(최고, 좋음, 괜찮음, 낮음, 나쁨)과 몇 개의 이모지를 선택하면 끝납니다. 그 외의 모든 것(메모, 음성 메모, 사진, 루틴 및 할 일 모듈)은 철저히 선택 사항입니다. 신규 사용자는 기분 기록을 제외한 모든 기능이 꺼진 상태로 시작합니다.
우리는 심리적 고통을 겪는 사용자의 인지 부하를 줄이는 것을 우선시하기 때문에, 알림 전략은 항상 부드러웠습니다. 우리는 단 하나의 '따뜻한' 어조를 사용합니다. 강압적인 연속 기록, 공포를 조장하는 알림, '오늘 놓쳤어요'와 같은 죄책감을 유발하는 알림은 하지 않습니다.
하지만 Apple Intelligence는 우리 앱의 철학을 본질적으로 알지 못합니다. 그저 텍스트를 읽을 뿐이죠.
iOS 27가 알림 요약 기능을 도입했을 때, 부드러운 알림들이 통합되기 시작했습니다. 사용자가 일일 루틴 알림과 주간 미러(패턴 발견) 통찰을 모두 가지고 있다면, Apple의 AI는 우리가 정성껏 다듬은 따뜻한 어조를 제거하고 로봇 같은 요약으로 평탄화해 버렸습니다: "기분 기록 및 주간 패턴에 관한 2개의 알림."
더 나쁜 점은, 사용자가 iOS 27 방해 금지 모드를 활성화하면 우리의 알림이 종종 '비필수'로 간주되어 알림 센터에 묻히고, 잠금 화면을 완전히 우회하게 된다는 것이었습니다.
우리에게는 선택지가 있었습니다. 새로운 시스템을 속이는 방법을 찾거나, AI와 협력하여 진정한 가치를 전달하는 방법을 찾는 것이었죠.
우리가 거부한 것: '시간 민감성' API 악용
참여 지표가 급락했을 때, 성장 팀의 즉각적인 반응은 예상대로였습니다: "그냥 알림을 '시간 민감성'으로 표시하세요."
Apple은 APNs(Apple Push Notification service) 페이로드에 `Time Sensitive`단계의 중단 수준을 제공합니다. 이는 차량 공유 도착, 캘린더 이벤트 또는 보안 알림과 같은 것들을 위해 설계되었습니다. 이러한 알림은 '방해 금지 모드'를 우회하고 요약 상단에 표시되기 때문에, 많은 앱이 일일 참여 유도 알림을 위해 이 플래그를 즉시 남용하기 시작했습니다.
우리는 TestFlight 빌드에서 이를 내부적으로 테스트했습니다. 효과는 있었고, 알림이 AI 필터를 뚫고 나갔습니다. 하지만 우리는 그것이 싫었습니다.
우리가 이 아이디어를 프로덕션에 적용하기 전에 폐기한 이유는 다음과 같습니다:
- 적대적인 UX: 저녁 기분 기록 알림은 자기 인식을 위해 중요하지만, 긴급 상황은 아닙니다. 사용자가 명시적으로 방해 금지를 요청했을 때 주의를 가로채는 것은 우리의 핵심 주의 분산 방지 설계 철학을 위반하는 것입니다.
- Apple의 제재: Apple의 문서에 따르면 사용자가 특정 앱의 '시간 민감성' 알림을 자주 무시하면, OS가 해당 앱의 '시간 민감성' 권한을 완전히 끄도록 사용자에게 제안할 것임을 분명히 하고 있습니다. 이는 단기적인 성과일 뿐 장기적으로는 차단으로 이어집니다.
- 신뢰 파괴: 우리는 신호등 방식의 진행 상황 UI나 연속 기록이 깨졌다는 죄책감을 유발하지 않습니다. 잠금 화면에 강제로 표시되는 것은 우리가 적극적으로 피하는 처방적이고 코치 같은 행동처럼 느껴졌습니다.
우리는 iOS 27 잠금 화면에 자리를 얻고 싶다면 속임수를 써서는 안 된다고 결론지었습니다. 우리는 기분 추적 푸시 알림을 부정할 수 없을 만큼 관련성 있게 만들어야 했습니다.
클라우드 저장 푸시 아키텍처 재설계
알림을 더 스마트하게 만들기 위해 알림을 트리거하는 방식을 재고해야 했습니다.
본론으로 들어가기 전 아키텍처에 대한 짧은 메모: ViviDiary는 Supabase와 Firebase Auth를 사용하여 클라우드에 저장됩니다. 최적의 알림 시간을 찾기 위해 데이터를 처리한다고 할 때, 이는 백엔드에서 발생합니다. 일기 텍스트는 외부 또는 AI 처리가 발생하기 전에 엄격하게 비식별화됩니다. 우리의 개인정보 보호는 데이터 최소화와 비식별화에서 나옵니다. 우리는 클라우드 기반 스택에 대해 완전히 투명하며, 투명성이 신뢰의 기초라고 믿습니다.
이전에는 사용자가 루틴 모듈을 선택하고 '일일 루틴'을 설정하면, 푸시 알림을 위한 고정 시간(예: 8:00 PM)을 선택할 수 있게 했습니다.
하지만 고정 시간은 어리석은 방식입니다. 평소 8:00 PM에 기분을 기록하던 사람이 목요일에는 늦은 수업 때문에 10:00 PM까지 앱을 열지 않는다면, 8:00 PM 알림은 소음에 불과합니다. iOS 27 환경에서 그런 소음은 필터링 대상이 됩니다.
우리는 사용자가 실제로 루틴을 완료하는 시점의 비식별화된 타임스탬프를 분석하도록 Supabase 백엔드를 업데이트했습니다. (ViviDiary는 일치하는 이모지 체크인을 자동으로 계산하여 기분 패턴과 연결하며, 수동 습관 기록은 없습니다.)
우리는 사용자의 체크인 시간의 7일 이동 평균을 요일별로 계산하는 가벼운 크론 작업을 구축했습니다. 고정된 8:00 PM 알림 대신, 서버는 이제 사용자가 역사적으로 가장 수용적인 특정 요일의 정확한 15분 창에 푸시를 예약합니다.
또한 이를 iOS 27 Apple Health 연동과 연결했습니다. 백엔드가 사용자가 이미 일일 루틴과 일치하는 자동 카테고리(수면 또는 걸음 수 등)를 동기화했음을 감지하면, 알림을 완전히 취소합니다. 이미 한 일을 기록하라고 알림을 보낼 이유가 있을까요?
사용자가 무료 티어(무제한 기분 및 이모지 기록, 3개월 캘린더 아카이브, 최대 3개의 루틴 포함)를 사용하든, 월 2.99달러의 프리미엄 플랜을 사용하든, 이 동적 아키텍처는 사용자의 주의를 동일하게 존중합니다.
AI에 강한 알림 페이로드 제작
시간을 맞추는 것은 절반의 성공일 뿐이었습니다. 우리는 여전히 알림 요약 개발자 UX 문제를 해결해야 했습니다.
Apple Intelligence는 AI 모델을 사용하여 알림 페이로드를 읽고 요약을 생성합니다. 우리는 광범위한 A/B 테스트를 통해 우리가 보낸 텍스트의 구조가 AI가 이를 다시 쓰는 방식에 직접적인 영향을 미친다는 것을 발견했습니다.
다음은 iOS 27 이전의 초기 페이로드입니다:
> 제목: 저녁 체크인
> 본문: Clayee가 여기 있어요! 30초를 투자해 기분을 기록하고 하루가 어땠는지 확인해보세요. 부담 갖지 마세요, 준비되었을 때 언제든 좋아요.
Apple Intelligence가 이를 다른 앱과 함께 요약했을 때 출력 결과는 다음과 같았습니다:
> "ViviDiary가 기분을 기록하라고 알려줍니다."
차가웠습니다. 우리의 조력자 캐릭터인 Clayee의 따뜻함이 사라졌습니다. 마치 숙제처럼 들렸죠.
우리는 Apple Intelligence 글쓰기 도구에 적응할 때 했던 작업과 유사하게, 3주 동안 다양한 의미 구조를 테스트했습니다. Apple의 요약 모델은 본문 텍스트의 첫 몇 단어에 큰 가중치를 두며, 유용성 대 마케팅에 대한 문맥적 단서를 찾는다는 것을 알게 되었습니다.
우리는 매우 구체적이고 사용자 중심적인 문맥을 제공하는 것이 AI가 어조를 평탄화하는 것을 방지한다는 사실을 발견했습니다. 우리는 일반적인 프롬프트에서 관찰 기반의 동적 페이로드로 전환했습니다.
다음은 오늘날 우리가 사용하는 성공적인 페이로드 구조입니다:
> 제목: 준비되셨을 때
> 본문: 보통 이맘때 '독서' 루틴을 마무리하시네요. 원하신다면 Clayee가 저녁 이모지를 남길 자리를 마련해 둘게요.
이 페이로드에는 구체적인 변수(사용자의 실제 루틴 이름, 문맥적 시간 인식, 저압박 언어)가 포함되어 있기 때문에, Apple Intelligence는 이를 그대로 통과시키거나 훨씬 부드럽게 요약하는 경향이 있습니다:
> "ViviDiary가 독서와 이모지 기록을 위한 평소 시간임을 알려줍니다."
이 접근 방식은 AI 슬롭(쓰레기 콘텐츠) 방지에 대한 우리의 입장과 완벽하게 일치합니다. 우리는 가짜 공감을 생성하기 위해 AI를 사용하지 않습니다. 정확한 데이터로 채워진 정밀한 인간 작성 템플릿을 사용하여, Apple의 AI가 이를 읽을 때 고신호, 저소음 알림으로 인식하도록 합니다.
결과: 더 높은 참여도, 더 적은 소음
새로운 푸시 아키텍처와 AI에 강한 페이로드를 iOS 사용자 기반에 배포했을 때, 지표는 명확한 이야기를 들려주었습니다.
총 푸시 알림 전달량은 38% 감소했습니다. 서버가 중복 알림을 취소하고 최적의 시간을 기다렸기 때문에 단순히 알림을 적게 보낸 것입니다.
하지만 상호작용률(알림을 탭하거나 전달 후 10분 이내에 기분을 기록한 사용자)은 iOS 27 이전 기준 대비 28% 증가했습니다.
더 중요한 것은, 사용자가 짜증을 느껴 알림을 완전히 끄는 지표인 알림 수신 거부율이 주당 0.4%라는 역대 최저치로 떨어졌다는 점입니다.
'시간 민감성' 악용을 거부하고, 대신 비식별화된 데이터를 분석하여 적절한 순간을 찾는 힘든 작업을 수행함으로써, 우리는 Apple Intelligence가 달성하고자 하는 목표인 '사용자의 집중력 보호'와 완벽하게 일치하게 되었습니다.
다음 단계
현재 우리는 주간 미러 기능을 위한 알림을 개선하는 방법을 모색 중입니다. 현재 미러는 매주 일요일 아침에 패턴 통찰을 전달합니다. 성찰하기 좋은 시간이지만, 우리는 클라우드 백엔드가 이러한 통찰을 위해 더 개인화된 최적의 시간을 식별할 수 있는지 탐색하고 있습니다. 예를 들어, 사용자가 주간 요약을 검토할 정서적 여유가 있도록 '최고' 또는 '좋음' 기분 기록이 감지될 때까지 기다리는 방식입니다.
Apple Intelligence는 개발자의 적이 아닙니다. 게으른 개발의 적입니다. 모든 픽셀과 알림을 정당화하도록 강제함으로써, iOS 27은 ViviDiary를 더 나은, 더 조용하고 더 존중하는 동반자로 만들었습니다.
다음 시간에,
Ethan



