ssk@tech:~$ cat ios-review-objectionable-keywords.md

iOS 심사 탈락: 키워드의 roleplay 가 불쾌한 콘텐츠 마케팅으로 읽혔다

AI 채팅 앱의 키워드·설명에 roleplay 를 넣으면 가이드라인 1.1(불쾌한 콘텐츠) 마케팅으로 읽힐 수 있다. 직전 버전이 같은 키워드로 통과했어도 다음 심사에서 걸린다.

왜 탈락했나

AI 채팅 앱 <App> 의 2026년 10월 8일 업데이트 심사 사례다. 지적은 Guideline 1.1 - Safety - Objectionable Content 였고, 문제 필드로 keywords 를 콕 집었다. 요지는 “앱 마케팅에 불쾌한 콘텐츠나 그것을 만들 수 있는 기능을 가리키는 용어가 있다” 였다.

눈여겨볼 점은 둘이다.

  • 바로 앞 버전은 같은 키워드로 승인됐다. API 로 두 버전의 로컬라이제이션을 비교해 보니 키워드가 한 글자도 다르지 않았다. 승인 이력은 다음 심사의 보증이 아니다.
  • 메시지에 “Extended Review” 경고가 붙었다. 같은 문제로 다시 내면 심사가 길어지고, 반복되면 계정 제재까지 언급한다. 고치지 않고 재제출하는 선택지는 없다.

키워드는 이랬다 (영어·한국어).

ai chat,private,secret,encrypted,gpt,claude,grok,deepseek,chatbot,roleplay,assistant,offline history
AI 채팅,비밀 대화,암호화,GPT,클로드,그록,딥시크,챗봇,롤플레이,어시스턴트,프라이버시

AI 채팅 맥락에서 roleplay 는 성인용 AI 컴패니언 앱이 쓰는 대표 단어다. 메시지가 키워드만 짚었지만 “including, but not limited to” 라고 했으므로 설명문과 앱 안 문구까지 같은 단어를 찾아봤다. 영어 설명문과 구독 화면에 long fiction and roleplay 가 있었다.

어떻게 고쳤나

  • 키워드에서 roleplay / 롤플레이 를 뺐다. 모호한 secret 은 기능을 그대로 설명하는 password lock 으로 바꿨다.
  • 설명문(App Store·Play 영어)과 구독 화면 문구의 long fiction and roleplay 를 long-form writing 으로 바꿨다.
  • 앱 안 문구가 바뀌었으므로 메타데이터만 고치지 않고 같은 버전 문자열에 새 빌드 번호를 붙여 다시 올렸다. 거절된 버전은 버전 문자열을 그대로 두고 빌드만 바꿔 재제출할 수 있다.

키워드를 손볼 때는 길이도 다시 잰다. 한 단어를 두 단어로 바꾸다 100자 상한을 넘기기 쉽다 (이번에도 106자가 돼서 한 항목을 더 뺐다).

어디까지 확인했나

새 빌드로 재제출해 App Store Connect API 에서 버전 상태가 WAITING_FOR_REVIEW 로 바뀐 것까지 확인했다. 최종 승인 여부는 아직 확인되지 않았다.

재제출 과정에서 하나 더 걸렸다. 배포 도구(fastlane deliver)로 새 빌드를 붙이고 메타데이터를 올리는 데까지는 됐지만, 제출 단계에서 A review submission is already in progress 로 멈췄다. 거절된 제출이 “해결되지 않은 문제” 상태로 열려 있으면 새 제출을 만들 수 없다. 웹에서 버전 페이지의 심사 업데이트를 눌러 고친 버전을 그 제출에 반영하자, 항목이 “심사 준비됨” 으로 바뀌고 앱 심사에 다시 제출 버튼이 살아났다. 그 전에는 버튼이 보이기만 하고 눌리지 않는다.

다음에 확인할 점

  • 키워드·부제·설명·프로모션 문구·스크린샷·앱 안 문구를 한 번에 훑는다. 지적은 필드 하나를 짚어도 기준은 마케팅 전체다.
  • AI 채팅 앱이라면 roleplay, companion, uncensored, NSFW, girlfriend 처럼 성인 콘텐츠 생성으로 읽힐 단어를 넣지 않는다. 기능이 정말 그런 쪽이라면 마케팅 단어보다 기능 자체가 1.1 대상이다.
  • 거절된 버전을 고쳐 다시 낼 때는 새 제출을 만들지 말고 열린 제출에 반영한다 (버전 페이지 심사 업데이트 → 제출 화면 앱 심사에 다시 제출). 자동화 도구의 제출 단계가 “already in progress” 로 멈추면 이 경우다.
  • 메타데이터를 저장소에서 관리하고 배포 도구로 덮어쓰는 구조라면, 고친 값이 저장소 원본에 들어갔는지 확인한다. 콘솔에서만 고치면 다음 배포가 원래 값으로 되돌린다.

AI 앱의 연령 등급 지적(2.3.6)은 iOS 심사 탈락: AI 답변과 연령 등급이 달랐다 를 본다.

이 글은 작업 기록에 남은 심사 메시지와 수정·제출 결과를 정리한 사례다. 상태는 해당 작업의 마지막 확인 기준이다.