<!--
{
  "documentType" : "article",
  "framework" : "marketplacekit",
  "identifier" : "/documentation/marketplacekit/providing-age-rating-appropriate-content",
  "metadataVersion" : "0.1.0",
  "role" : "article",
  "title" : "Providing age-rating appropriate content"
}
-->

# Providing age-rating appropriate content

Check for age-rating based content restrictions and enable people to request approval for apps with a rating beyond the maximum allowed for the device.

## Overview

You can help create a browsing experience consistent with the device’s maximum allowed age rating. When a person tries to install an app that has an age rating beyond the maximum allowed for the device, present a framework-provided sheet that enables the person to request the approval of a parent or guardian to install the app. The sheet contains an Ask for Exception button, which when tapped, sends a message to the parent or guardian.



![An iPhone device body that features a modal sheet for the Ask for Exception workflow. Text notifies the person that a parent or guardian needs to approve the installation of an app that's rated 13+ named Social Media by Tapland, Inc. from the Megabyte Mart marketplace. Two buttons follow the text. The top button's label is Ask for Exception, the bottom button's label is Cancel.](images/com.apple.MarketplaceKit/providing-age-rating-appropriate-content-1~dark@2x.png)



![An iPhone device body that features the Messages app with a unsent message that reads Request from Child. The message contains additional text that describes the app, its age rating, and the marketplace that distributes the app.](images/com.apple.MarketplaceKit/providing-age-rating-appropriate-content-2~dark@2x.png)

When the parent or guardian taps the message, a sheet displays with buttons to approve or decline the request.



![An iPhone device body that features the Messages app with a recieved message that reads Request from Child. The message describes the app installation exception request and names the app, its age rating, and the marketplace that distributes the app.](images/com.apple.MarketplaceKit/providing-age-rating-appropriate-content-3@2x.png)



![An iPhone device body that features a modal sheet for the Ask for Exception workflow. Text notifies the person that a child needs approval to download an app that's rated 13+ named Social Media by Tapland, Inc. from the Megabyte Mart marketplace. Two buttons follow the text. The top button's label is Approve, the bottom button's label is Decline.](images/com.apple.MarketplaceKit/providing-age-rating-appropriate-content-4@2x.png)

Alternatively, if the request recipient is in the vicinity of the device, a follow-on pane for the request flow contains an Approve in Person button, which when tapped, approves the request after the parent or guardian authenticates with their Apple Account.

![An iPhone device body that features a modal sheet for the Ask for Exception workflow. Text notifies the person that the request message is sent and pending approval, and that a parent or guardian can approve the request in person if they're in the vicinity of the device. Two buttons follow the text that read Approve in Person and Close.](images/com.apple.MarketplaceKit/providing-age-rating-appropriate-content-5~dark@2x.png)

## Check for age-rating based content restrictions

When people browse apps on your alternative app marketplace, you can check the [`maximumAllowedAgeRating`](/documentation/MarketplaceKit/AppLibrary/maximumAllowedAgeRating) property for any age-rating based restrictions set for the device. By adjusting your presentation of content that’s rated higher than the maximum allowed for the device, you can create a more age-rating appropriate browsing experience. For example, you can omit articles or featured content for rating-restricted apps but still return rating-restricted apps in search results to allow someone to request an exception to install one.

When a person tries to install an app that has an age rating beyond the maximum allowed for the device, set the [`requestAgeException`](/documentation/MarketplaceKit/InstallMetadata/requestAgeException) property to `true`, such as through the [`init(account:appleItemID:alternativeDistributionPackage:isUpdate:appShareURL:requestAgeException:)`](/documentation/MarketplaceKit/InstallMetadata/init(account:appleItemID:alternativeDistributionPackage:isUpdate:appShareURL:requestAgeException:)) initializer. This presents the Ask for Exception sheet and queues the app as a pending age-rating exception request in the [`currentAgeExceptionRequests()`](/documentation/MarketplaceKit/AppLibrary/currentAgeExceptionRequests()) list. The framework also throws [`MarketplaceKitError.cancelled`](/documentation/MarketplaceKit/MarketplaceKitError/cancelled), because it doesn’t install the app at this time.

If the app to install has an age rating beyond the maximum allowed for the device and your app fails to request an age-rating exception, the framework throws [`MarketplaceKitError.ratingRestricted`](/documentation/MarketplaceKit/MarketplaceKitError/ratingRestricted). Conversely, if your app requests an age-rating exception by setting [`requestAgeException`](/documentation/MarketplaceKit/InstallMetadata/requestAgeException) to `true` when it’s not needed, the framework throws [`MarketplaceKitError.ageRatingExceptionNotNeeded`](/documentation/MarketplaceKit/MarketplaceKitError/ageRatingExceptionNotNeeded).

## Show exception status and enable in-person approval

While an exception is pending, check the request status in the [`currentAgeExceptionRequests()`](/documentation/MarketplaceKit/AppLibrary/currentAgeExceptionRequests()) property of the [`AppLibrary`](/documentation/MarketplaceKit/AppLibrary) class. For apps that are pending an exception, you can show a Pending button rather than an Install button.

If a parent or guardian is present, enable a person to present the exception sheet again by calling the [`presentAgeExceptionApproveInPersonSheet()`](/documentation/MarketplaceKit/AppLibrary/App/presentAgeExceptionApproveInPersonSheet()) method of the [`AppLibrary.App`](/documentation/MarketplaceKit/AppLibrary/App) class. For example, you can display an Approve Now button next to the pending app. The sheet contains an Approve in Person button which, when tapped, requires the parent or guardian to authenticate with their Apple Account before the system installs the app.

If your app calls [`presentAgeExceptionApproveInPersonSheet()`](/documentation/MarketplaceKit/AppLibrary/App/presentAgeExceptionApproveInPersonSheet()) when there’s no age-rating exception requests for the app in [`currentAgeExceptionRequests()`](/documentation/MarketplaceKit/AppLibrary/currentAgeExceptionRequests()), the framework throws [`MarketplaceKitError.missingAgeRatingExceptionRequest`](/documentation/MarketplaceKit/MarketplaceKitError/missingAgeRatingExceptionRequest).

---

Copyright &copy; 2026 Apple Inc. All rights reserved. | [Terms of Use](https://www.apple.com/legal/internet-services/terms/site.html) | [Privacy Policy](https://www.apple.com/privacy/privacy-policy)