개발 slecs

성경 앱에 음성읽기 전면 무료 개방하고 광고 추적 게이팅 도입

목차

매일 사용하는 성경 읽기 앱에서 텍스트-투-스피치 기능을 한국어 전체에 무료로 개방하고, 동시에 Apple의 개인정보보호 정책(ATT)에 따라 광고 추적을 제어하는 게이팅 로직을 추가했다. 한 번의 커밋으로 세 가지 레이어(프론트, UI, 백엔드)가 함께 움직여야 하는 변경이었는데, 이 과정에서 성장과 규정 준수 사이의 균형을 맞추는 경험을 했다.

TTS 무료 개방의 의도

처음엔 TTS(텍스트 음성 변환)를 프리미엄 기능으로 두거나 제한적으로만 제공하려 했을 수도 있다. 음성 합성 서비스는 클라우드 API 비용이 꽤 크기 때문이다. 그런데 장애인 사용자 접근성, 운전 중 사용 시나리오, 그리고 앱 대중화 관점에서 봤을 때 TTS는 단순 편의 기능을 넘어 핵심 가치 제공이라는 판단이 있었던 것 같다.

무료로 전면 개방하기로 결정한 건 사용자 기반을 빠르게 확대하고 싶다는 전략과 맞닿아 있다. 일부 제한된 사용자만 접근 가능한 기능보다는, 모두가 사용할 수 있는 기능이 더 빠르게 평가받고 입소문 난다. 특히 종교 관련 앱처럼 사용자 신뢰가 중요한 서비스에서 "가능한 한 많은 분들과 함께하려 한다"는 메시지는 긍정적이다.

다만 이 결정은 비용 최적화와 별개의 문제가 된다. TTS 비용을 어디서 흡수할 것인가—광고 수익 증대, 구독 모델 변경, 또는 성장 초기 투자 비용으로 감수할 것인가. 이런 고민들이 다음 변경인 ATT 게이팅과 엮여 있다.

App Store 2.1과 개인정보보호: 광고 게이팅의 필요성

Apple의 App Store Review Guidelines 2.1은 건강, 의료, 피트니스 관련 앱에 엄격한 기준을 적용한다. 일일 성경 읽기 앱은 영적 가이던스를 제공하는 앱으로 분류되는데, Apple은 이런 앱들의 개인정보보호와 광고 정책에 특히 주목한다.

ATT(App Tracking Transparency)는 iOS 14.5 이후 Apple이 강제한 시스템이다. 앱이 사용자의 IDFA(광고 추적 ID)를 사용하려면 반드시 추적 동의를 명시적으로 요청해야 한다. 만약 사용자가 거부하면, 앱은 그 사용자의 데이터로 개인화된 광고 타게팅을 할 수 없다.

우리는 이 정책에 맞춰 광고 게이팅 로직을 추가했다. 즉, ATT 동의 여부에 따라 어떤 광고 포맷이나 서드파티 광고 네트워크를 노출할지를 제어한다는 뜻이다. 동의하지 않은 사용자에게는 비개인화 광고만 보여주거나, 혹은 광고 노출 자체를 조정하는 식이다.

이것은 규정 준수 관점에서는 필수지만, 수익 관점에서는 고민이 된다. 추적 동의 거부율이 높을수록 광고 효율이 떨어지는데, 개인정보보호를 강조할수록 거부율이 높아진다. 그래서 결국 TTS 무료화 → 광고 수익 감소 → 다른 수익원 또는 비용 절감 필요의 순환이 생긴다.

기술 변경의 스코프

변경 파일을 보면 세 개의 주요 영역이 관여했다:

영역 파일 역할
광고 추적 로직 tracking_gate.dart ATT 동의 여부 판단 및 게이팅 결정
앱 전역 설정 app.dart TTS 무료 플래그, 광고 정책 초기화
UI 계층 banner_ad_mobile.dart, banner_ad_widget.dart 게이팅된 광고만 조건부 렌더링
백엔드 controller/내부 클래스 사용자의 광고 설정, TTS 권한 검증

프론트엔드에서 단순 UI 변경이 아니라, 앱의 라이프사이클 초기화(app.dart)부터 개별 위젯 수준의 조건부 렌더링, 그리고 백엔드의 사용자 권한 검증까지 일관되게 구현해야 했다.

예를 들어, 광고 위젯이 렌더링될 때마다:
1. tracking_gate에서 현재 사용자의 ATT 동의 상태 확인
2. 동의 여부에 따라 광고 네트워크 선택
3. 백엔드에서 사용자가 실제로 그 광고를 볼 수 있는 상태인지 검증
4. TTS 무료 사용 권한은 모든 사용자에게 동일하게 부여

이런 다층 검증이 필요한 이유는 보안과 일관성 때문이다. 클라이언트 로직만 믿으면 안 되고, 백엔드에서도 최종 검증해야 한다.

의사결정 관점: 성장과 신뢰의 트레이드오프

이 커밋이 흥미로운 이유는 상반된 두 가지 의사결정이 동시에 들어간다는 점이다:

  • TTS 무료화: 사용자 기반 확대, 접근성 개선 (단기 사용자 성장 극대화)
  • ATT 게이팅: 개인정보보호 강화, 규정 준수 (단기 광고 수익 감소, 장기 신뢰 확보)

겉보기에는 모순처럼 보인다. 무료로 TTS를 내놓으려고 광고 수익이 필요한데, 정작 광고는 게이팅하니까. 하지만 조직 레벨에서 보면:

  • 규정 준수는 선택이 아니다: App Store 리젝트를 피하거나 앱 삭제를 피하려면 ATT 게이팅은 필수다.
  • 신뢰는 장기 자산이다: "사용자 데이터를 소중히 여기는 앱"이라는 브랜드는 시간이 지날수록 가치를 갖는다.
  • 무료 기능 + 신뢰 = 다음 수익화 기회: TTS 무료 사용자층이 굳어지면, 나중에 프리미엄 기능(광고 제거, 오프라인 TTS 등)을 팔 수 있다.

결국 짧기는 광고 수익이 줄지만, 길게는 사용자 기반과 신뢰가 자산이 되는 계산이다.

팀 조율과 배운 점

프론트, UI, 백엔드가 모두 움직이는 변경이다 보니, 각 계층의 파일 변경이 일관되게 맞춰져야 했다. 한쪽에서 "이 사용자는 광고를 못 본다"고 게이팅했는데, 다른 쪽에서 여전히 광고를 렌더링한다면 안 된다. 특히 배너 광고 위젯이 두 가지(모바일, 일반)로 나뉘어 있으니, 둘 다 동일한 게이팅 로직을 따라야 한다.

이런 변경을 할 때 자주 실수하는 패턴:
- UI 계층에만 조건 추가하고 백엔드는 놓치기
- 모바일 위젯은 수정했는데 웹 위젯은 빠뜨리기
- TTS 권한과 광고 게이팅을 분리하지 못해 두 정책이 꼬이기

이 커밋이 깔끔하게 들어갔다면, 변경 파일들이 모두 일관된 의도 아래 움직였다는 뜻이다.

또 한 가지—규정 변경은 갑자기 온다. App Store의 정책이 업데이트되거나 새 iOS 버전의 요구사항이 추가되면, 우리는 그에 맞춰 빠르게 대응해야 한다. TTS 무료화처럼 "사용자 경험을 개선하자"는 주도적 결정도 중요하지만, ATT 게이팅처럼 "규정을 따라야 하니 빨리 구현하자"는 반응 속도도 똑같이 중요하다.


🛒 이 글과 어울리는 추천 상품

*위 링크는 쿠팡파트너스 활동의 일환이며, 일정액의 수수료를 제공받을 수 있습니다.

댓글 0

첫 댓글 달아줘.