Xamarin.GooglePlayServices.Ads Library Unusable Since 2021 - Callbacks Not Properly Adapted
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 5/5
- Tempo stimato
- Più di una settimana
- Idoneità per principianti
- 35/100
- Tipo di issue
- Bug
- Chiarezza
- Abbastanza chiara
- Stato di attività
- Tranquilla
- Stack tecnologico
- android, csharp
- Ambito
- mobile-dev
Direzione di ricerca
Inizia riproducendo il problema dei callback con Xamarin.GooglePlayServices.Ads e ispeziona le classi callback interessate elencate nell’issue, incluse InterstitialAdLoadCallback e RewardedAdLoadCallback. Confronta le firme dei callback esposte con i tipi Android descritti nel report. Il lavoro è completato quando i callback interessati espongono override tipizzati utilizzabili e i problemi di compilazione e collisione JNI segnalati non si verificano più.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
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
- Lingua principale
- C#
- Stelle
- 318
- Fork
- 73
- Merge medio
- 1g 16h
- PR unite (30g)
- 8
Preparare l'ambiente
- Nessun Dockerfile né file Docker Compose
- Nessun modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di dotnet/android-libraries
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 68/100
dotnet/android-libraries#1549 ·
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 55/100
dotnet/android-libraries#1503 ·
-
Compose UI.Graphics: SolidColor(long) constructor stripped due to Kotlin @JvmInline value class param (sibling of java-interop#1440 for ctors)Forse di nuovo libera @jonathanpeppers l’ha presa 115 giorni fa e non c’è nessuna pull request aperta. Aperta
dotnet/android-libraries#1470 · 1 reazione · 2 assegnatari ·
-
Kotlin `object` companion field not surfaced on outer class binding (KeyboardOptions.Companion, TextStyle.Companion, ...)Forse già presa @jonathanpeppers l’ha presa 116 giorni fa. Aperta
dotnet/android-libraries#1467 · 1 reazione · 2 assegnatari ·
-
Difficoltà 5/5 Più di una settimana Idoneità per principianti 45/100
dotnet/android-libraries#1456 · 2 commenti · 1 reazione ·
Tutte le issue di dotnet/android-libraries
Issue simili
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 65/100
-
[Bug]: Missing extensions in Agent Card capabilities in v0.3 compat modeForse già presa @hwanders l’ha presa oggi. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 84/100
a2aproject/a2a-dotnet#514 · 1 commento ·
I maintainer di solito rispondono entro 2 giorni
-
agentic-workflows untriaged
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
I maintainer di solito rispondono entro 1 giorno
-
VS Code
Difficoltà 2/5 1-3 ore Idoneità per principianti 65/100
AlamoEngine-Tools/pg-starwarsgame-lsp#207 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
elsa-workflows/elsa-core#8593 ·
I maintainer di solito rispondono entro 1 giorno