Guideline 3.2.2
Guideline 3.2.2(x) - Unacceptable Business Model: Forced Ratings Gating Functionality
Our Take
Apple is rejecting your app because it forces, incentivizes, or manipulates users into leaving App Store ratings or reviews as a condition for accessing app functionality, content, or rewards. This includes gating features behind a rating prompt, offering in-app currency for reviews, requiring a review before advancing in a game, or repeatedly showing rating prompts that cannot be easily dismissed. Apple draws a clear line between asking for ratings (acceptable, using SKStoreReviewController) and requiring, coercing, or incentivizing them (unacceptable). The standard rating prompt from SKStoreReviewController is Apple's approved mechanism -- it can be shown up to three times per 365-day period, and the user can easily dismiss it. Custom rating prompts that mimic the system dialog, rating gates that block progression, and reward-for-review schemes all violate this guideline. Apple considers these practices manipulative because they inflate ratings artificially and mislead other users.
Resolution Guide
Remove all rating gates
Delete any logic that checks whether a user has rated the app before granting access to features, content, or levels.
Remove incentives for reviews
Delete any reward mechanisms tied to ratings or reviews. No coins, no unlocks, no premium time for reviewing.
Replace custom rating prompts
If you built a custom rating dialog, replace it with SKStoreReviewController.requestReview(). This is Apple's approved mechanism and handles all the UI appropriately.
Follow SKStoreReviewController best practices
Call it at moments of user delight (after completing a task, achieving a milestone), not at moments of frustration. Do not call it more than a few times per year -- the system limits it to 3 displays per 365 days.
Remove rating manipulation
Delete any logic that shows a pre-screen (e.g., 'Are you enjoying the app?') and only shows the App Store rating prompt if the user says yes.
Prevention
Example Rejection Email
Before & After
After completing level 5, a modal appears: 'Rate us 5 stars to unlock Level 6!' with the level locked until the user taps a star rating
Level 6 unlocks automatically after completing level 5; SKStoreReviewController.requestReview() called after the user's 10th completed level as a non-blocking prompt
What changed: App functionality must never be gated behind ratings. Use SKStoreReviewController at natural, positive moments without blocking access.
Community Solutions · 0
Sign in to share your solution.
More Guideline 3 (Business) rejections
- Guideline 3.0 - Business: Irrationally High Pricing
- Guideline 3.1.1 - In-App Purchase: Expiring Virtual Currency
- Guideline 3.1.1 - In-App Purchase: External Link for Digital Content in Reader App Without Entitlement
- Guideline 3.1.1 - In-App Purchase: License Key or Serial Number Unlocks
- Guideline 3.1.1 - In-App Purchase: Loot Boxes Without Disclosed Odds
- Guideline 3.1.1 - In-App Purchase: Missing Restore Purchases Button