Hacktoberfest 2026: the issues maintainers tagged for October, open and beginner-friendly. Browse Hacktoberfest issues

Xamarin.GooglePlayServices.Ads Library Unusable Since 2021 - Callbacks Not Properly Adapted

Open
#1,102 3 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Assessment

Difficulty
5/5
Estimated time
Over a week
Newbie friendliness
35/100
Issue type
Bug
Clarity
Mostly clear
Activity status
Quiet
Tech stack
android, csharp
Domain
mobile-dev

Research direction

Start by reproducing the callback issue with Xamarin.GooglePlayServices.Ads and inspect the affected callback classes listed in the issue, including InterstitialAdLoadCallback and RewardedAdLoadCallback. Compare the exposed callback signatures with the Android types described in the report. Done means the affected callbacks expose usable typed overrides and the reported compilation and JNI collision problems no longer occur.

Written by the indexing model from the issue text.

Description

Android framework version

net9.0-android

Affected platform version
Description

I find it surprising that there is no unified issue addressing this, despite numerous reports scattered across the internet and users creating their own plugins to workaround this problem.

This issue has been present since 2021, making the Xamarin.GooglePlayServices.Ads library completely unusable. I am currently testing with the latest version 123.6.0.1, released on January 22, 2025.

Despite new versions being released, the issue has persisted for four years. There are multiple workarounds available, such as the one proposed here:
https://gist.github.com/dtaylorus/63fef408cec34999a1e566bd5fac27e5

However, in all related issues that get opened, people spam their own NuGet packages (mostly paid) that merely implement the same workaround.

But... how is it possible that no official issue exists here, and no serious fix is being considered?
Am I the only one using MAUI and AdMob? I am not deeply familiar with the inner workings of these libraries or how official they are in MAUI, but it is unfortunate that they remain broken, given MAUI's potential.

The Problem:

AdMob callbacks are implemented in classes where methods are overridden. However, many of these callbacks are not properly adapted in the C# bindings.

Example:

For implementing an Interstitial Ad (Android.Gms.Ads.Interstitial.InterstitialAd), an instance of the Android.Gms.Ads.Interstitial.InterstitialAdLoadCallback class must be passed to handle the callbacks.

Before the library broke five years ago, the correct implementation was:

public class InterstitialCallbackImplementation : Android.Gms.Ads.Interstitial.InterstitialAdLoadCallback {
    public override void OnInterstitialAdLoaded(InterstitialAd interstitialAd) {
        base.OnInterstitialAdLoaded(interstitialAd);
        // Ok
    }

    public override void OnAdFailedToLoad(LoadAdError e) {
        base.OnAdFailedToLoad(e);
        // Fail
    }
}

However, now the method OnInterstitialAdLoaded(InterstitialAd interstitialAd) does not exist for override.
Instead, there is another method:

public override void OnAdLoaded(Java.Lang.Object p0)

The binding does not correctly identify p0 as its corresponding type, InterstitialAd.

At first glance, this might seem like a minor issue—one could cast p0 as Android.Gms.Ads.Interstitial.InterstitialAd.

However, this does not work. Trying to do so results in compilation failures, JNI collisions, and a host of other issues.

With all the effort behind these libraries, it's baffling that a few improperly adapted parameters have rendered them completely unusable for five years.

Affected Classes:

com/google/android/gms/ads/admanager/AdManagerInterstitialAdLoadCallback

com/google/android/gms/ads/appopen/AppOpenAd$AppOpenAdLoadCallback

com/google/android/gms/ads/interstitial/InterstitialAdLoadCallback

com/google/android/gms/ads/rewarded/RewardedAdLoadCallback

com/google/android/gms/ads/rewardedinterstitial/RewardedInterstitialAdLoadCallback

Android.Gms.Ads.NativeAd.NativeAd.IOnNativeAdLoadedListener

Questions:

What is the current status of these libraries?

How is it possible that such a critical issue remains unresolved for so long?

Thank you.

Steps to Reproduce

Install Xamarin.GooglePlayServices.Ads and try to use it.

Did you find any workaround?

https://gist.github.com/dtaylorus/63fef408cec34999a1e566bd5fac27e5

Relevant log output

Dominant language
C#
Stars
318
Forks
73
Avg merge
1d 16h
Merged PRs (30d)
8

Getting set up

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from dotnet/android-libraries

All issues in dotnet/android-libraries

Similar issues

More C# issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.