Utilizo Managed Expo SDK 45. Sé que expo-ads-admob quedará obsoleto en SDK 46, pero aún lo considero un paquete muy bueno y me gustaría usarlo.
En primer lugar, tengo el código ejecutándose en otro SDK (38) y funciona perfectamente y ahora este problema solo está en IOS: Android también funciona bien en dispositivos físicos, por lo que no es un problema con el código, sino con expo-ads- paquete admob o expo.
El problema es que en el dispositivo físico, los anuncios intersticiales solo se mostrarán una vez, digamos que tengo un botón y cuando hago clic en él por primera vez, se muestra el anuncio, pero cuando cierro el anuncio intersticial y trato de hacer clic en el botón de nuevo - no hará nada.
Revisé los registros y vi esto:
"code":"E_AD_CANNOT_PRESENT", "message":"Add cannot be prestnted", "domain":"com.google.admob", "userInfo": { "NSLocalizedDescription":"Presntation on Error: Will not present ad because ad object has been used." }Estaba buscando la respuesta en todas partes, pero no puedo encontrar una solución para esto; esto sucede solo en dispositivos físicos iOS y creo que le sucede a todos los que usan el nuevo SDK.
Miré dentro de node_modules/expo-ads-admob/ios/EXAdsAdMobInterstitial.m y vi esto:
EX_EXPORT_METHOD_AS(requestAd, requestAdWithAdditionalRequestParams:(NSDictionary *)additionalRequestParams resolver:(EXPromiseResolveBlock)resolve rejecter:(EXPromiseRejectBlock)reject) { EX_WEAKIFY(self) if (_ad) { dispatch_async(dispatch_get_main_queue(), ^{ EX_ENSURE_STRONGIFY(self); NSError *error; if ([self.ad canPresentFromRootViewController:self.utilities.currentViewController error:&error]) { [self requestAdWithParams:additionalRequestParams resolver:resolve rejecter:reject]; } else { reject(@"E_AD_CANNOT_PRESENT", @"Add cannot be presented", error); } }); } else { [self requestAdWithParams:additionalRequestParams resolver:resolve rejecter:reject]; } }Pero no sé qué significa y cómo puedo solucionarlo desde este archivo. ¿Existe alguna solucion para esto?
Gracias por adelantado