광고가 안 뜨면 AI 분석도 막아야 할까: 무료 기능 앞에 광고를 넣었던 선택

인터넷은 되고 분석 서버도 정상인데, 광고를 가져오지 못해서 레시피 분석이 멈춘다면 사용자는 답답할 수 있습니다. 앱을 만드는 쪽에서도 결정하기 까다롭습니다. 요청을 허용하면 광고 수익 없이 분석 비용이 생길 수 있고, 막으면 광고 문제 때문에 멀쩡한 기능을 못 쓰게 됩니다.

VidDish의 이전 광고 구현에는 이 선택이 그대로 남아 있습니다. 광고를 가져오거나 표시하는 데 실패하면 AI 요청은 계속 진행했습니다. 사용자가 광고를 취소한 경우에는 요청을 멈췄습니다. 둘 다 광고 보상을 받지 못한 상황인데, 앱은 서로 다르게 처리했습니다.

지금 저장소에서는 광고·사용권 처리가 제거됐습니다. 아래는 그전에 사용하던 코드에서 어떤 처리를 택했는지 살펴본 기록입니다.

먼저 결과를 써보고, 그다음 광고를 만나게 했다

AI로 영상의 재료와 조리순서를 정리하려면 서버 작업과 모델 호출이 들어갑니다. 당시에는 로그인한 무료 사용자가 광고를 보고 분석을 이어가게 했습니다. 무료로 제공할 분석에 광고 수익을 연결한 방식입니다.

처음부터 분석 버튼 앞에 광고를 두지는 않았습니다. 익명으로 처음 체험하는 흐름에는 광고를 넣지 않았고, 로그인한 무료 사용자는 AI 결과 네 개를 받은 뒤 다음 요청에서 광고를 만났습니다. 어떤 결과를 얻는지도 모르는 상태에서 시청부터 요구하는 부담을 줄이려는 선택입니다.

횟수도 버튼을 누른 순간에 올리지 않았습니다. 결과를 받아야 한 번을 사용한 것으로 셌습니다. 분석이 실패해서 다시 누른 사람이 결과도 없이 광고부터 만나면, 분석 실패와 광고 요구를 한꺼번에 겪게 되기 때문입니다.

광고 한 번에 네 회를 제공했지만, 이 숫자만 보고 비용이 맞는다고 판단할 수는 없습니다. 캐시에서 돌려준 결과도 한 회로 셌기 때문입니다. 네 번 모두 모델을 새로 호출한 경우와 저장된 결과를 다시 보여준 경우의 비용은 다를 수 있습니다. 카운터와 실제 모델 사용량을 따로 봐야 합니다.

광고가 준비되지 않았을 때는 분석을 이어갔다

광고 로드 실패를 이유로 분석을 막으면 사용자에게는 분석 기능이 고장 난 것처럼 보일 수 있습니다. 이전 코드에서는 그 요청을 허용했습니다. 휴대폰 자체가 오프라인이면 앞선 연결 검사에서 멈추지만, 광고 실패만으로는 이번 요청을 중단하지 않는 방식입니다.

대신 무료 카운터를 충전하지는 않았습니다. 이미 네 회를 쓴 상태라면 그대로 남겨, 다음 요청에서도 광고 대상이 되게 했습니다. 광고 실패를 시청 완료로 기록해 버리지 않으면서 이번 분석만 이어가려는 처리였습니다.

문제는 다음 요청에서도 광고가 실패했을 때입니다. 코드대로라면 분석은 또 허용됩니다. 카운터가 남아 있다고 광고 없는 분석에 상한이 생기지는 않습니다.

실제 모델 호출까지 이어졌다면 광고 수익 없이 비용이 쌓일 수 있습니다. 이 방식을 운영하려면 광고 실패 후 허용된 요청도 따로 세어야 합니다. 사용자가 막히지 않는 쪽을 택했지만, 비용을 어디까지 받아들일지는 이 분기만으로 정해지지 않았습니다.

광고는 봤는데 분석이 실패했다면

광고를 다 봤는데 AI 분석이 실패할 수도 있습니다. 재시도할 때 광고를 또 보여주면, 사용자는 아직 결과 하나도 못 받았는데 두 번 시청하게 됩니다. 광고 시청과 분석 성공 중 어느 시점에 사용 횟수를 충전할지 정해야 하는 이유입니다.

이전 구현은 광고 SDK에서 보상 알림이 오면 카운터를 먼저 초기화했습니다. 이후 분석 결과를 받았을 때 한 회를 사용한 것으로 셌습니다. 분석이 실패해도 광고로 충전한 상태는 먼저 반영해 두는 순서였습니다.

테스트한다면 광고 뒤의 분석을 일부러 실패시키고 다시 요청해 볼 필요가 있습니다. 그때 충전분이 남아 있는지, 앱을 껐다 켜거나 서버 사용량을 다시 읽어도 사라지지 않는지까지 봐야 합니다. 코드에서 충전 순서를 읽은 것만으로 재시작과 동기화까지 확인한 것은 아닙니다.

취소하면 분석이 멈추는 경계는 다시 따져볼 부분이다

당시에는 보상형 전면 광고가 뜨기 전에 안내 화면을 보여줬습니다. AI 사용 네 회를 충전한다는 설명과 취소 버튼이 있었고, 세 초 뒤 광고가 시작되게 했습니다. Google도 이 형식에 보상 설명, 시작 전 거절 방법, 충분한 선택 시간을 요구합니다. 세 초로 모든 언어의 문구를 읽고 판단할 수 있는지는 화면에서 따로 볼 문제입니다. 보상형 전면 광고 안내

광고가 닫혔다고 곧바로 충전하지도 않았습니다. 광고 SDK의 보상 알림을 받은 경우에 카운터를 초기화하고 분석을 이어갔습니다. 안내에서 취소하거나 보상 전에 닫으면 충전하지 않았고, 그 AI 요청도 멈췄습니다.

이 취소 처리는 다시 따져볼 부분입니다. AI 분석은 이 앱의 주요 기능입니다. 몇 번 쓰고 난 뒤 광고를 거절하면 분석을 못 하게 되는 흐름이 사용자에게 추가 혜택으로 보일지, 기능이 잠긴 것으로 보일지 고민할 여지가 있습니다.

Google의 보상형 광고 정책은 거절하거나 건너뛰어도 앱의 정상 이용을 방해해서는 안 된다고 명시합니다. 그래서 ‘보상을 안 받았으니 이번 분석도 멈춘다’는 코드 논리만으로 이 설계를 정당화할 수는 없습니다. 추가 보상과 평소 이용할 기능의 경계를 제품 전체에서 따져야 합니다. 당시 구현을 정책에 승인된 사례로 볼 근거도 없습니다. 보상형 광고 정책

광고를 붙이는 일과 무료 기능을 운영하는 일

이 설계가 실제로 비용을 감당했는지, 사용하기 편해졌는지는 코드만 봐서는 알 수 없습니다. 광고를 제거한 이유도 그 사실만으로 짐작해서는 안 됩니다.

같은 흐름을 다시 설계한다면 취소한 뒤 돌아오는 화면부터 정할 것입니다. 광고를 거절해도 사용할 기능은 무엇인지, 시청하면 추가로 얻는 것은 무엇인지부터 구체적으로 잡아야 합니다. 그다음에야 로드 실패를 허용할 범위와 실패한 분석의 재시도 처리를 정할 수 있습니다.

위로 스크롤