가이드라인 4.5.4: Apple 푸시 알림 리젝 해결법
글: Mehdi Azizi
게시, 9분
가이드라인 4.5.4에 따르면 홍보 알림은 앱 안에서 명시적 동의와 해제 방법이 필요하고, 앱은 알림 없이도 동작해야 해요.
가이드라인 4.5.4는 푸시 알림을 다루는 규칙이에요. 앱은 알림 없이도 동작해야 하고, 알림에 민감한 정보를 넣으면 안 되며, 동의 없이 홍보용으로 쓰면 안 돼요. 마케팅 알림은 iOS 권한과 별도로, 앱 안에 적힌 동의 문구와 이를 철회할 수 있는 스위치가 필요해요.
저는 Expo로 제 iOS 앱을 직접 출시하고 있어요. 트레이딩 시뮬레이터인 TradaZen에서 할인을 알리던 알림을 없애고, 할인 없는 리마인더로 바꾼 뒤 리뷰어에게 알렸어요. 이 가이드는 Apple의 가이드라인 원문, 개발자 라이선스, 공식 문서, 그리고 이 사례를 바탕으로 해요. 리젝 사유 전반은 Apple이 앱을 리젝하는 이유를 읽어 보세요.
가이드라인 4.5.4는 무슨 내용인가요?
이 규칙은 App Review Guidelines의 4장 "Design", 4.5 "Apple Sites and Services" 항목에 있어요. 그래서 리젝 제목이 "Guideline 4.5.4 - Design - Apple Sites and Services"예요. 원문은 세 가지 제한을 둬요.
- 알림을 필수로 만들면 안 돼요. "Push Notifications must not be required for the app to function." iOS 권한 창에서 거부해도 아무것도 막히면 안 돼요.
- 민감한 정보는 금지예요. 알림은 "should not be used to send sensitive personal or confidential information". 알림은 잠금 화면에 떠서 누구나 볼 수 있어요.
- 동의 없는 홍보는 금지예요. 마케팅은 "unless customers have explicitly opted in to receive them via consent language displayed in your app's UI"인 경우에만 허용되고, "a method in your app for a user to opt out"도 있어야 해요.
마지막 문장은 남용하면 서비스 이용 권한을 잃을 수 있다고 경고해요. 관련 규칙도 두 개 있어요. 4.5.3은 알림을 통한 스팸을 금지해요. 5.1.2(i)는 기능, 콘텐츠, 보상을 얻는 조건으로 알림 활성화를 요구하는 걸 금지해요.
개발자 라이선스가 추가하는 내용
가이드라인은 푸시 알림만 언급해요. 가입할 때 동의한 Apple Developer Program License Agreement 부록 1은 세 가지를 더 짚어요.
- 로컬 알림도 해당돼요. 2.2조는 "the APN or Local Notifications"를 대상으로 해요. 서버 없이 앱에서 예약한 리마인더도 같은 규칙을 따라요.
- 홍보의 범위가 넓어요. 추가 판매는 물론 "sending any messages to promote the use of Your Application or advertise the availability of new features or versions"도 포함해요.
- iOS 권한 창은 건드릴 수 없어요. 1.3조는 Apple의 동의 창을 우회하는 걸 금지해요. 동의를 거부하거나 철회하면 더 이상 아무것도 보내면 안 돼요.
제 해석은 이래요. "앱으로 돌아오세요" 같은 메시지는 가격이 없어도 홍보에 가까워요. Apple이 이 경우를 명확히 정하지 않았기 때문에, 저는 이런 리마인더를 리뷰어에게 알려요.
4.5.4 리젝 메시지는 무슨 뜻인가요?
가장 많이 알려진 리젝 사례는 알림 없이 동작하지 않는 앱이에요. 2018년 B4X 포럼 스레드에서 Apple은 이렇게 썼어요. "Push notifications must be optional and must obtain the user's consent to be used within the app." 개발자는 이후 권한을 거부하면 검은 화면이 뜬다고 밝혔어요. 스레드에서 나온 추정은 알림 토큰을 기다려야 화면이 뜨는 구조였다는 거예요.
리뷰어는 무슨 일이 일어나는지 보려고 권한을 거부한다고 생각하세요. 앱이 멈추거나, 계속 요청하거나, 기능을 빼앗으면 4.5.4나 5.1.2(i)에 걸려요. 동의 없는 마케팅에 대한 최근 공개 리젝 메시지는 찾지 못했어요.
어떤 알림에 어떤 동의가 필요한가요?
제 기준표는 Apple 가이드라인, 라이선스, 휴먼 인터페이스 가이드를 함께 본 결과예요. "체험 종료"와 "복귀 리마인더" 행은 제 해석이고, Apple이 문서로 밝힌 입장은 아니에요.
| 알림 유형 | 필요한 동의 | 적합한 예시 |
|---|---|---|
| 사용자 행동에 대한 응답 | iOS 권한 창 | "내보내기가 완료됐어요" |
| 사용자가 고른 리마인더 | iOS 권한 창 | 저녁 7시 오늘의 레슨 |
| 체험 종료, 갱신 | iOS 권한 창 | "체험이 12일에 끝나요" |
| 복귀 리마인더 | iOS 권한 창 + 신중함 | 가격 없이, 딱 한 번 |
| 할인, 프로모션 | iOS 권한 창 + 동의 | 앱 안에서 체크한 항목 |
| 앱 새 소식 | iOS 권한 창 + 동의 | 구독한 사람에게만 발송 |
| 개인 메시지, 건강 | 내용은 절대 금지 | "새 메시지가 있어요" |
| 임시 알림 | 처음엔 권한 창 없음 | 소리나 배너 없이 도착 |
"iOS 권한 창"은 시스템 권한을 말해요. "동의"는 앱 안의 별도 선택이에요. 무엇을 보낼지 설명하는 문구와 기본값이 꺼진 스위치가 필요해요.
구독 리마인더와 프로모션
Apple 휴먼 인터페이스 가이드의 Managing notifications 페이지는 구독을 예로 들어요. 마케팅 알림에 동의한 사람이라면 "an offer to become a subscriber"를 반길 수 있다고요. 여기에 두 가지 의무를 더해요. 마음을 바꿀 수 있는 앱 내 설정 화면이 있어야 하고, 마케팅에는 절대 "Time Sensitive" 수준을 쓰면 안 돼요.
제가 정한 경계는 이래요. 이미 한 구매에 대해 알려 주는 리마인더는 프로모션이 아니고, 구매를 유도하는 메시지는 프로모션이에요. "체험이 12일에 끝나요"는 알림이에요. "24시간 동안 50% 할인"은 판매예요. 알림이 여는 구매 화면은 여전히 가이드라인 3.1.2를 따라야 해요.
조용한 알림, 즉 임시 알림
Apple은 권한 관련 문서에서 "provisional authorization"을 설명해요. 앱이 iOS 권한 창을 띄우지 않고도 알림을 보낼 수 있어요. 알림은 소리나 배너 없이 알림 센터 기록에만 쌓이고, 유지하거나 끌 수 있는 버튼이 함께 표시돼요. Expo에서는 requestPermissionsAsync의 옵션이에요.
import * as Notifications from "expo-notifications";
await Notifications.requestPermissionsAsync({
ios: {
allowAlert: true,
allowBadge: true,
allowSound: true,
allowProvisional: true,
},
});
사용자가 선택하기 전까지 ios.status 값은 IosAuthorizationStatus.PROVISIONAL이에요. 임시 알림은 iOS 권한 창을 대신할 뿐, 마케팅 동의를 대신하지 않아요. 임시 알림으로 보낸 프로모션도 여전히 프로모션이에요.
용어에 주의하세요. TradaZen에서 제가 "조용한 알림"이라고 부르는 건 차분한 톤의 리마인더로, iOS 권한 창에서 허용한 경우에만 보내요. 임시 권한과는 다른 거예요.
Expo로 명시적 동의 구현하기
- iOS 권한은 맥락 안에서 요청하세요. Apple은 첫 실행이 아니라 알림의 쓸모를 보여 주는 행동 뒤에 요청하라고 권해요. TradaZen에서는 온보딩 보상이나 레슨 완료 뒤에 나와요. 평점 요청과 같은 논리예요.
- 마케팅 동의를 따로 추가하세요. 기본값이 꺼진 스위치와 명확한 문구가 필요해요. 예를 들면 "할인과 새 소식 받기, 최대 주 1회."
- 설정 화면을 제공하세요. 리마인더와 프로모션은 iOS 설정뿐 아니라 앱 안에서도 끌 수 있어야 해요.
- 보낼 때 걸러 내세요. 서버나 로컬 스케줄러는 동의한 사람에게만 프로모션을 보내야 해요.
- 알림 없이도 모두 동작하게 하세요. 거부해도 화면, 기능, 보상 어느 것도 막히면 안 돼요.
TradaZen: 제가 없앤 알림
2026년 10월 12일, TradaZen의 한 버전이 조작으로 얻는 구매를 다루는 가이드라인 5.6으로 리젝됐어요. Apple은 어떤 요소가 문제인지 짚어 주지 않았어요. 그래서 알림을 포함해 구매 흐름 전체를 다시 살펴봤어요.
문제가 되는 알림이 하나 있었어요. 온보딩이나 구독 화면에서 앱을 나가면 "너만을 위한 특별 할인이 있어요"라는 로컬 메시지가 예약됐어요. 별도 마케팅 동의 없이 iOS 권한만 확인했죠. 4.5.4와 라이선스가 말하는, 명시적 동의 없는 프로모션 그 자체였어요. 앱의 30개 언어 모두에서 삭제했어요.
대신 리마인더 하나를 넣었어요. "학습이 기다리고 있어요. 원할 때 이어 하세요, 서두를 필요 없어요." 제한은 이래요.
- 알림이 허용된 경우에만 보내요.
- 설치당 한 번만, 온보딩이나 구독 화면을 나가고 5분 뒤에 보내요.
- 그 전에 돌아오면 취소돼요.
- 가격, 할인, 타이머, 소리 모두 없어요.
이 리마인더는 앞서 말한 회색 지대에 있어요. 숨기지 않았어요. 심사 노트와 리뷰어 답변에 적어 뒀어요. 알린 리마인더는 논의할 수 있지만, 숨긴 리마인더는 꼼수처럼 보여요.
4.5.4 리젝에는 어떻게 답하나요?
대화는 App Store Connect에서 App Review 메시지에 답장하는 방식으로 이뤄져요. 먼저 고치세요. 필수 조건을 없애거나, 마케팅 동의를 추가하거나, 문구를 정리한 뒤 빌드를 다시 만드세요. 제가 쓸 만한 템플릿이에요. 상황에 맞게 바꿔 쓰세요.
Hello,
Thank you for your feedback on Guideline 4.5.4.
In the new build:
- The app works fully if notifications are denied.
- Promotional notifications are sent only to users
who turn on "[toggle name]" in [screen]. It is off
by default and can be turned off at any time.
- Notifications never include [sensitive data].
How to test:
1. Deny notifications at the first prompt.
2. Open [feature]: it works without them.
3. Open [screen] to see both toggles.
Best regards,
제출 전 4.5.4 체크리스트
- 권한을 거부해도 막힌 화면이나 빼앗긴 보상 없이 앱 전체를 쓸 수 있어요.
- iOS 권한 창은 유용한 행동 뒤에 나오고, 첫 화면에는 절대 안 나와요.
- 로컬이든 원격이든 모든 프로모션은 기본값이 꺼진 마케팅 동의를 따라요.
- 앱 안 설정 화면에서 리마인더와 프로모션을 끌 수 있어요.
- 어떤 알림 문구에도 건강 데이터, 금액, 개인 메시지가 보이지 않아요.
- "Time Sensitive" 수준의 프로모션은 없어요.
- 심사 노트에 처음 며칠 동안 보내는 알림 목록이 있어요.
- 모든 권한을 거부한 상태로 흐름을 테스트했어요. TestFlight 가이드에서 이 테스트용 빌드 설치 방법을 볼 수 있어요.
제출 전에 점검하기
Review Kit에는 제 제출 전 체크리스트, 테스터용 노트 템플릿, 프로젝트를 검토하는 Claude Code 스킬이 들어 있어요. 사람의 눈으로 보고 싶다면 저와 1시간 상담을 예약하세요. 화상으로 알림과 설정 화면을 함께 살펴봐요. 전체 과정은 Apple에 리젝된 앱 페이지에 있어요.
첫 출시를 준비 중인가요? 무료 진단을 받아 보세요. 단계를 순서대로 정리해 주고 제 Apple 리젝 방지 체크리스트를 보내 드려요.
자주 묻는 질문
"Guideline 4.5.4 - Design - Apple Sites and Services"는 무슨 뜻인가요?
Apple이 알림을 필수로 만들었거나, 너무 민감하거나, 동의 없이 홍보한다고 판단했을 때 붙는 리젝 제목이에요. 제목 다음 문장을 읽어 보세요. 리뷰어가 확인한 내용이 적혀 있어요.
온보딩 중에 알림 권한을 요청해도 되나요?
네, 거부해도 아무것도 막히지 않고 알림의 쓸모를 보여 주는 순간 뒤에 요청한다면 괜찮아요. 보상을 동의 조건으로 걸면 절대 안 돼요. 5.1.2(i)가 금지해요.
체험 종료 알림도 마케팅인가요?
제 해석으로는 진행 중인 체험만 알려 준다면 아니에요. 할인이나 다른 구독을 제안하면 프로모션이 되고 마케팅 동의가 필요해요.
로컬 알림도 4.5.4에 해당하나요?
가이드라인은 푸시 알림을 말하지만, 개발자 라이선스 부록 1은 홍보 규칙을 로컬 알림에도 적용해요. 똑같이 다루세요.
임시 알림이면 마케팅 동의가 필요 없나요?
아니요. 처음에 iOS 권한 창을 피할 수 있을 뿐, 프로모션은 여전히 프로모션이에요. 앱 안의 명시적 동의와 철회 방법이 필요해요.

