If you’re building apps that need to comply with upcoming age verification requirements in Texas (January 1, 2026), Utah (May 7, 2026), or Louisiana (July 1, 2026), you might be wondering how to handle age verification across Android, iOS, and Windows. The good news? Each platform provides its own age verification APIs, and we’ve put together a comprehensive sample showing you exactly how to use them in your .NET MAUI applications.
Time-Sensitive Compliance Requirements
Apps serving users in Texas, Utah, or Louisiana must implement age verification by their respective deadlines. Non-compliance can result in significant fines and potential app store removal. Texas requires compliance by January 1, 2026, Utah by May 7, 2026, and Louisiana by July 1, 2026.The .NET MAUI Age Verification Sample App
We’ve created a new Age Verification sample that shows you exactly how to integrate platform-specific age verification into your .NET MAUI apps. The sample covers all three major platforms:
- Android: using the Google Play Age Signals API
- iOS: using the Apple Declared Age Range API
- Windows: using the Windows Age Consent API
With this sample app you have everything you need to implement this functionality in your own .NET MAUI project should you need it.
Why This Matters Now
New regulations are coming fast. Texas law SB 2420 requires apps to verify user ages starting January 1, 2026, with Utah and Louisiana following shortly after. Google Play has responded with the Age Signals API to help developers comply, while Apple and Microsoft have their own age verification systems already in place.
Important Compliance Deadline
If your app serves users in Texas, you need to integrate age verification by January 1, 2026. Utah follows on May 7, and Louisiana on July 1. Learn more at Google Play’s Age Verification Guide.How It Works
The sample follows a straightforward pattern that will feel familiar if you’ve worked with platform-specific code in .NET MAUI before.
One Interface, Three Implementations
Everything starts with a simple IAgeSignalService interface that defines what age verification looks like, regardless of which platform you’re on:
public interface IAgeSignalService
{
Task<AgeVerificationResult> RequestAgeVerificationAsync(
int minimumAge = 13,
object? platformContext = null);
Task<AgeVerificationResult> RequestAgeVerificationAsync(
AgeVerificationRequest request);
string GetPlatformName();
}
Three Platform-Specific Files
Then we have three separate implementation files, one for each platform:
AgeSignalService.Android.cs– Talks to Google Play Age SignalsAgeSignalService.iOS.cs– Uses Apple’s Declared Age Range APIAgeSignalService.Windows.cs– Calls Windows Age Consent
The build system automatically picks the right one based on which platform you’re targeting.
Wire It Up Once
In MauiProgram.cs, register the service and you’re good to go:
builder.Services.AddSingleton<IAgeSignalService, AgeSignalService>();
builder.Services.AddSingleton<MainPage>();
What Each Platform Does Differently
Android: Google Play Age Signals
Google’s approach is interesting – their Age Signals API (currently in beta) only returns data in jurisdictions where it’s legally required. You’ll see one of five possible statuses:
- VERIFIED: User is 18 or older
- SUPERVISED: User has a supervised account with a specific age range
- SUPERVISED_APPROVAL_PENDING: Waiting for guardian approval
- SUPERVISED_APPROVAL_DENIED: Guardian said no
- UNKNOWN: Age information isn’t available
If your user is in California or France, for example, the API won’t return anything at this point in time. The API is specifically built for compliance in regions with age verification laws. As local laws change, Google will most likely implement this for other regions in the future as required.
For more information about the Google specifics, read the Google Play Age Signals documentation.
iOS: Apple Declared Age Range
Apple’s Declared Age Range API is Swift-only, which means we need to do some bridging work because we are busy getting the Swift interop work done. The sample includes an XCFramework that translates between Swift and Objective-C, which then gets bound to .NET. It’s a bit involved, but once it’s set up, it just works. And you can probably just lift the code from the sample repository and put that in your own project.
The API tells you an age range (like 13-17) and whether the user declared it themselves or if a guardian did. One thing to know: this only works on iOS 26.0+ and only on physical devices. The iOS Simulator won’t help you here unfortunately.
For more information about the Apple specifics, read the Apple Declared Age Range documentation.
Windows: Age Consent
Windows keeps it simple with an Age Consent API that puts users into one of three buckets: Child, Minor, or Adult. How strictly this is enforced depends on where your user is located – it works best in the EU, US, UK, and Korea.
For more information about the Windows specifics, read the Windows Age Consent API documentation.
Try It Yourself
Ready to see it in action? Here’s what you need to do:
- Head over to the .NET MAUI Samples repository and grab the code
- Check out the README for platform-specific setup (iOS needs a few extra steps)
- Build and run on whichever platform you’re targeting
The sample includes everything you need to know about setup, building, testing, and troubleshooting.
What You Need for Each Platform
Before you dive in, here’s what each platform requires:
Android:
- Google Play Store on your device
- Android 6.0 (API 23) or newer
- The
Xamarin.Google.Android.Play.Age.SignalsNuGet package (v0.0.1-beta02) - Remember: only works in jurisdictions where it’s required by law
iOS:
- iOS 26.0 or later
- A real device (Simulator won’t work)
- The
com.apple.developer.declared-age-rangeentitlement - Family Sharing configured on the device
- XCFramework binding for the Swift API
Windows:
- Windows 11 Build 22000 or later
UserAccountInformationcapability in your manifest- Note that enforcement varies by region
Things to Keep in Mind
A few important points as you build this into your app:
- Know your jurisdictions: Not every region requires age verification. Make sure you understand where your app needs it.
- Explain to users: Be clear about why you’re asking for age verification. Users are more cooperative when they understand the reason.
- Handle failures gracefully: Age verification might not be available everywhere. Your app should still work when it fails.
- Respect privacy: Use this data only for compliance. It’s not for targeting ads or analytics.
- Test on real devices: Especially for iOS, you need physical devices in the right regions to properly test.
Google Play Age Signals Beta
The Android Age Signals API is still in beta. It’s ready for production apps that need compliance, but Google might tweak things as they refine the implementation.More Resources
If you need more information on one of these topics, you can read up on these links here:
- Age Verification Sample – Full source code
- Google Play Age Signals API – Android docs
- Google Play Compliance Guide – State law details
- Apple Declared Age Range API – iOS docs
- WWDC 2024 Session – Apple’s presentation on Declared Age Range
- Windows Age Consent API – Windows docs
- .NET MAUI Documentation – Everything .NET MAUI
We hope this sample helps you get age verification working in your apps before those compliance deadlines hit. Questions? Drop them in the comments below!
0 comments
Be the first to start the discussion.