Jc.GMA.iOS
13.5.0
dotnet add package Jc.GMA.iOS --version 13.5.0
NuGet\Install-Package Jc.GMA.iOS -Version 13.5.0
<PackageReference Include="Jc.GMA.iOS" Version="13.5.0" />
<PackageVersion Include="Jc.GMA.iOS" Version="13.5.0" />
<PackageReference Include="Jc.GMA.iOS" />
paket add Jc.GMA.iOS --version 13.5.0
#r "nuget: Jc.GMA.iOS, 13.5.0"
#:package Jc.GMA.iOS@13.5.0
#addin nuget:?package=Jc.GMA.iOS&version=13.5.0
#tool nuget:?package=Jc.GMA.iOS&version=13.5.0
Jc.GoogleMobileAds.iOS
Google Mobile Ads SDK iOS Bindings
Package Showcase
- marius-bughiu - Plugin.AdMob - AdMob plugin for .NET MAUI
- jcsawyer - Jc.AdMob.Avalonia - AdMob plugin for Avalonia mobile projects
Breaking Changes
Each major version contains breaking changes according to the Google AdMob SDK. Please refer to the Google AdMob SDK for more information. The headline changes relevant will be listed here.
UMP v3.1.0
Jc.UMP.iOS now binds Google User Messaging Platform SDK 3.1.0, upgrading from SDK 3.0.0. .NET 9/10 support and the iOS 15 minimum are unchanged. Building requires Xcode 16 or later.
- Added nullable
RequestParameters.ConsentSyncIdfor apps configured for consent syncing. IDs must be UUID strings or meet the format documented in Google's consent syncing guide.
See Google's UMP release notes.
UMP v3.0.0
Jc.UMP.iOS now binds Google User Messaging Platform SDK 3.0.0, upgrading from native SDK 2.7.0 (package 2.7.5). .NET 9/10 support and the iOS 15 minimum are unchanged. Building requires Xcode 16 or later.
- UMP 3.0 changed Swift API names; the Objective-C selectors and existing C# names are unchanged.
- The native SDK adds internal support for Firebase consent APIs when consent mode is configured through Privacy & messaging.
See Google's UMP release notes.
v13.5.0
This package binds Google Mobile Ads SDK 13.5.0, upgrading from SDK 13.4.0. Xcode 26.2 or later, .NET 9/10 support, and the iOS 15 minimum are unchanged. Jc.UMP.iOS remains at 3.1.0.
- Added private-beta
SwipeableInterstitialAd,SwipeableInterstitialAdOptions, andSwipeableInterstitialAdDelegatebindings. Request access from your Google account manager. Apps must enforce the loaded ad'sMinScreenHoldDurationbefore allowing dismissal. - Added
GetAdResponseInfoto all four beta preloaders to inspect the next ad's response info without removing it from the queue. - Updated the native crash reporter to chain with previously attached signal handlers.
See Google's GMA release notes.
v13.4.0
This package binds Google Mobile Ads SDK 13.4.0, upgrading from SDK 13.3.0. Building now requires Xcode 26.2 or later. .NET 9/10 support and the iOS 15 minimum are unchanged. Jc.UMP.iOS remains at 3.1.0.
- Added beta
Request.ShouldSkipUninitializedAdapters, which defaults tofalse. Set it totrueto skip ad loading from mediation adapters that have not been initialized. - Improved native rendering thread safety by accessing media views on the main thread.
See Google's GMA release notes.
v13.3.0
This package binds Google Mobile Ads SDK 13.3.0, upgrading from SDK 13.2.0. .NET 9/10 support and the iOS 15 minimum are unchanged. Jc.UMP.iOS remains at 3.1.0.
- Added
RequestConfiguration.AgeRestrictedTreatmentwithUnspecified,Child, andTeenvalues. The olderTagForChildDirectedTreatmentandTagForUnderAgeOfConsentproperties are now obsolete and remain available for compatibility. - Added beta ad preloading bindings:
PreloadConfigurationV2,PreloadDelegate, and preloaders for app open, interstitial, rewarded, and rewarded interstitial ads. - Added beta
MediationInitializationConfigurationand the correspondingMobileAds.Startoverload. Beta APIs may change in future native releases. - Updated the native Open Measurement SDK to 1.6.5.
See Google's GMA release notes.
v13.2.0
This package binds Google Mobile Ads SDK 13.2.0, upgrading from SDK 13.1.0. This release includes native bug fixes and performance improvements; the public headers are unchanged. .NET 9/10 support and the iOS 15 minimum are unchanged. Jc.UMP.iOS remains at 3.1.0.
See Google's GMA release notes.
v13.1.0
This package binds Google Mobile Ads SDK 13.1.0. .NET 9/10 support and the iOS 15 minimum are unchanged. Jc.UMP.iOS remains at 2.7.5.
ErrorCode.OSVersionTooLowis now obsolete, matching the native SDK. There is no replacement; the SDK deployment target already matches the minimum OS version that can receive ads. The enum member remains available with its existing value.
v13.0.0
This package binds Google Mobile Ads SDK 13.0.0. It continues to support .NET 9/10 and requires iOS 15 or later. Jc.UMP.iOS remains at 2.7.5.
NativeAd.RegisterAdView(both overloads) andNativeAd.UnregisterAdViewhave been removed with the native SDK. UseNativeAdViewto render native ads.The existing anchored adaptive banner sizing functions are obsolete but retain their original behavior. Use these replacements on the main thread:
Existing AdSizeConsmethodReplacement GetCurrentOrientationAnchoredAdaptiveBannerAdSizeGetLargeAnchoredAdaptiveBannerAdSizeGetPortraitAnchoredAdaptiveBannerAdSizeGetLargePortraitAnchoredAdaptiveBannerAdSizeGetLandscapeAnchoredAdaptiveBannerAdSizeGetLargeLandscapeAnchoredAdaptiveBannerAdSizeLarge anchored adaptive banners can be taller; size the banner container from the returned
AdSize.Request.NeighboringContentUrlStringsremains astring[]. The native SDK now raises an exception for non-string array elements; avoid null elements or passing other object types through native interop.
See Google's v12 to v13 migration guide.
v12.13.0
Both NativeAd.RegisterAdView overloads and NativeAd.UnregisterAdView are obsolete, matching the native SDK deprecations. Use NativeAdView to render native ads instead. These methods remain available but are no longer supported by Google and will be removed in a future SDK version.
v12.2.2
AdSizeCons constants were changed to be hardcoded while I try to find a better approach to access the true values.
This means that values will be the same for both iPhone and iPad.
SmartBannerPortrait, SmartBannerLandscape, and Fluid have been removed until a workaround is discovered as these are entirely dependent on the framework or the calling framework (MAUI/Avalonia/etc.)
v9.x.x to v11.x.x
- The minimum supported version of iOS is now 13.
- Note: SDK 11.0.0 still builds on iOS 12 devices, but ads will not serve.
- armv7 support has been removed from the SDK
From v11.13.0 and beyond, you must add this target to your csproj file to support linking with Swift system libraries
<Target Name="LinkWithSwift" DependsOnTargets="_ParseBundlerArguments;_DetectSdkLocations" BeforeTargets="_LinkNativeExecutable">
<PropertyGroup>
<_SwiftPlatform Condition="$(RuntimeIdentifier.StartsWith('iossimulator-'))">iphonesimulator</_SwiftPlatform>
<_SwiftPlatform Condition="$(RuntimeIdentifier.StartsWith('ios-'))">iphoneos</_SwiftPlatform>
</PropertyGroup>
<ItemGroup>
<_CustomLinkFlags Include="-L" />
<_CustomLinkFlags Include="/usr/lib/swift" />
<_CustomLinkFlags Include="-L" />
<_CustomLinkFlags Include="$(_SdkDevPath)/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/$(_SwiftPlatform)" />
<_CustomLinkFlags Include="-Wl,-rpath" />
<_CustomLinkFlags Include="-Wl,/usr/lib/swift" />
</ItemGroup>
</Target>
More info can be found here
Usage
To use Jc.GoogleMobileAds.iOS, you can add the required packages to your project:
dotnet add package Jc.GMA.iOS
dotnet add package Jc.UMP.iOS
Ensure that the SupportedOSPlatformVersion attribute in your project file is set to 15.0 or higher:
<SupportedOSPlatformVersion>15.0</SupportedOSPlatformVersion>
along with setting it in the Info.plist file:
<key>MinimumOSVersion</key>
<string>15.0</string>
Failing to set the minimum version will result in the compiler warning:
Jc.*.iOS requires a minimum SupportedOSPlatformVersion of 15.0. Update your project to target iOS 15 or later.
Smoke Tests
The smoke tests verify the locally built NuGet packages inside an iOS simulator. The iOS test app references exactly GMA 13.5.0 and UMP 3.1.0 from the local package feed. An empty temporary NuGet cache ensures the run uses those packages.
There are two projects:
tests/Tests.Google.MobileAds: an iOS app that runs the binding tests using NUnitLite on UIKit's main thread.tests/Tests.Google.MobileAds.Host: a desktop NUnit project that provides thedotnet testentry point. It builds the app, installs and launches it with Apple'ssimctl, collects the results, and checks that the run passed. The binding tests themselves run in the simulator.
The twenty-three iOS cases check the native GMA and UMP SDK versions, consent sync ID marshalling, skipping uninitialized adapters, age treatment, beta preload and mediation configuration, empty preloader and response-info queries, swipeable interstitial options, all three new large adaptive banner sizing functions, all three deprecated sizing functions, neighboring-content URL array marshalling, and removal of the native-ad registration methods. The app uses Google's sample application ID and makes no live ad requests. An additional intentional failure probe is skipped during normal runs.
Run locally
Requires macOS, .NET 10 with the iOS workloads needed by the .NET 9/10 binding targets, Xcode 26.2 or later, and an available iPhone simulator running iOS 18 or later. The binding packages still support iOS 15+.
Run from the repository root:
dotnet workload restore src/jc-google-mobile-ads-ios.sln
dotnet build src/jc-google-mobile-ads-ios.sln -c Release
dotnet pack src/jc-google-mobile-ads-ios.sln -c Release --no-build -o artifacts/smoke-packages
dotnet test tests/Tests.Google.MobileAds.Host/Tests.Google.MobileAds.Host.csproj -c Release --logger trx --results-directory artifacts/dotnet-test
Clean the binding projects before rebuilding if you replaced the native frameworks locally.
The flow is: pack bindings → build iOS test app → launch in simulator → collect and validate NUnit results. Build errors, crashes, timeouts, missing results, and failed assertions fail the run. Afterward, the host uninstalls the app and shuts down the simulator only if it started it.
Results and CI
artifacts/dotnet-test: desktop TRX results containing one aggregate test for the complete simulator run.artifacts/simulator/test-results.xml: NUnit results containing the individual iOS binding cases, also attached to the desktop test result.
CI runs the smoke tests after packaging, publishes the individual iOS cases and aggregate runner result in the job summary and a GitHub check, and uploads both result directories. Fork and Dependabot pull requests receive the job summary without a separate check because their tokens have restricted permissions. The release workflow publishes the same packages only after the smoke tests pass.
See the smoke-test README for diagnostic options.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net9.0-ios18.0 is compatible. net10.0-ios was computed. net10.0-ios26.0 is compatible. |
-
net10.0-ios26.0
- No dependencies.
-
net9.0-ios18.0
- No dependencies.
NuGet packages (2)
Showing the top 2 NuGet packages that depend on Jc.GMA.iOS:
| Package | Downloads |
|---|---|
|
Plugin.AdMob
Google AdMob ads for .NET MAUI on Android and iOS. Supports every ad format — banner, interstitial, rewarded, rewarded interstitial, app open, and native ads including native video — plus automatic GDPR consent via Google's User Messaging Platform (UMP). Free and open source. |
|
|
Jc.AdMob.Avalonia.iOS
Google AdMob for Avalonia on iOS. |
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 13.5.0 | 123 | 11/6/2026 |
| 13.4.0 | 63 | 11/6/2026 |
| 13.3.0 | 137 | 11/4/2026 |
| 13.2.0 | 92 | 11/4/2026 |
| 13.1.0 | 188 | 10/29/2026 |
| 13.0.0 | 220 | 10/16/2026 |
| 12.14.0 | 143 | 10/13/2026 |
| 12.13.0 | 96 | 10/13/2026 |
| 12.12.0 | 113 | 10/13/2026 |
| 12.11.0 | 124 | 10/13/2026 |
| 12.10.0 | 13,756 | 7/8/2026 |
| 12.7.1 | 2,136 | 2/8/2026 |
| 12.7.1-preview100 | 166 | 2/5/2026 |
| 12.7.0 | 1,963 | 12/9/2025 |
| 12.7.0-preview100 | 5,367 | 7/27/2025 |
| 12.2.3-preview100 | 590 | 7/24/2025 |
| 12.2.2 | 3,334 | 4/20/2025 |
| 12.2.2-preview100 | 1,181 | 4/5/2025 |
| 12.2.1 | 48,325 | 3/22/2025 |
| 12.2.0 | 312 | 3/18/2025 |