December 1st, 2025
0 reactions

Cross-Platform Age Verification in .NET MAUI Applications

Gerald Versluis
Senior Software Engineer

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.
Let’s walk through how you can implement age verification that works seamlessly across all three platforms.

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:

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 Signals
  • AgeSignalService.iOS.cs – Uses Apple’s Declared Age Range API
  • AgeSignalService.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:

  1. Head over to the .NET MAUI Samples repository and grab the code
  2. Check out the README for platform-specific setup (iOS needs a few extra steps)
  3. 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.Signals NuGet 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-range entitlement
  • Family Sharing configured on the device
  • XCFramework binding for the Swift API

Windows:

  • Windows 11 Build 22000 or later
  • UserAccountInformation capability 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:

  1. Know your jurisdictions: Not every region requires age verification. Make sure you understand where your app needs it.
  2. Explain to users: Be clear about why you’re asking for age verification. Users are more cooperative when they understand the reason.
  3. Handle failures gracefully: Age verification might not be available everywhere. Your app should still work when it fails.
  4. Respect privacy: Use this data only for compliance. It’s not for targeting ads or analytics.
  5. 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:

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!

Author

Gerald Versluis
Senior Software Engineer

Gerald Versluis is a software engineer at Microsoft on the .NET MAUI team.

0 comments