6
votes

Erreur "Aucune annonce à afficher" lors de la mise en œuvre d'AdMob dans l'application Swift

J'essaie de faire la tâche (apparemment) simple d'intégrer des annonces natives AdMob dans mon application iOS exécutée sur Swift. Permettez-moi d'abord de vous montrer mes storyboards et mon code d'intégration, puis nous passerons aux choses que j'ai essayé de résoudre.

Configuration: storyboards et code

Dans mon App Delegate, je configure Firebase sur Google Mobile Ads ...

NATIVE AD - didFailToReceiveAdWithError: Error Domain=com.google.admob Code=1 "Request Error: No ad to show." UserInfo={NSLocalizedDescription=Request Error: No ad to show., gad_response_info=  ** Response Info **
    Response ID: ymbzXou2CcrohQb16bzgBA
    Network: (null)

  ** Mediation line items **
    Entry (1)
    Network: GADMAdapterGoogleAdMobAds
    Credentials:
{
}
    Error: Error Domain=com.google.admob Code=1 "Request Error: No ad to show." UserInfo={NSLocalizedDescription=Request Error: No ad to show.}
    Latency: 0.095
}

J'ai également ajouté mon GADApplicationIdentifier à mon Info.plist. Dans mon storyboard, j'ai un ViewController qui contient un UICollectionViewCell qui contient un GADUnifiedNativeAdView et les éléments natifs sont liés via des points de vente.

Capture d'écran de Storyboard

Dans mon ViewController, dans le viewDidLoad, je charge 5 annonces natives.

NATIVE AD - didReceive: <GADUnifiedNativeAd: 0x283bbdc00>
NATIVE AD - didReceive: <GADUnifiedNativeAd: 0x283bbd7a0>
NATIVE AD - didReceive: <GADUnifiedNativeAd: 0x283bc73a0>
NATIVE AD - didReceive: <GADUnifiedNativeAd: 0x283ba9880>
NATIVE AD - didReceive: <GADUnifiedNativeAd: 0x283ba9810>
NATIVE AD - adLoaderDidFinishLoading

Dans le GADUnifiedNativeAdLoaderDelegate , je reçois l'annonce et je les GADUnifiedNativeAdLoaderDelegate à un tableau.

import Firebase

class AdCollectionViewCell: UICollectionViewCell {

     @IBOutlet var adView: GADUnifiedNativeAdView
     var nativeAd = GADUnifiedNativeAd()

     func setAdData() {
          adView.nativeAd = nativeAd
          (adView.headlineView as! UILabel).text = nativeAd.headline
          adView.callToActionView?.isUserInteractionEnabled = false
          (adView.callToActionView as! UILabel).text = nativeAd.callToAction
          adView.mediaView?.mediaContent = nativeAd.mediaContent
          adView.mediaView?.contentMode = .scaleAspectFill
        
    }

}

Dans UICollectionView's délégué de mon UICollectionView's , dans cellForItemAt j'ai défini la classe de la cellule

func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {

     if isAdCell {
        let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "adCell", for: indexPath) as! AdCollectionViewCell
        if nativeAds.count == 5 {
        cell.nativeAd = nativeAds[0]
        cell.nativeAd.rootViewController = self
                    
        }
        cell.setAdData()
        return cell
}

Enfin, dans UICollectionViewCell's classe de mon UICollectionViewCell's , j'ai défini les données de l'annonce

    var nativeAds = [GADUnifiedNativeAd]()

    extension ViewController: GADUnifiedNativeAdLoaderDelegate {
            
        
        func adLoader(_ adLoader: GADAdLoader,
                      didFailToReceiveAdWithError error: GADRequestError) {
          print("NATIVE AD - didFailToReceiveAdWithError: \(error)")
    
        }
    
        func adLoader(_ adLoader: GADAdLoader, didReceive nativeAd: GADUnifiedNativeAd) {
          print("NATIVE AD - didReceive: \(nativeAd)")
    
          nativeAds.append(nativeAd)
        }
        
        func adLoaderDidFinishLoading(_ adLoader: GADAdLoader) {
          print("NATIVE AD - adLoaderDidFinishLoading")
            libraryCollection.reloadData()
        }
    }

L'erreur

Désormais, chaque fois que j'utilise l'identifiant de bloc d'annonces natif de test fourni par Google AdMob, ca-app-pub-3940256099942544/3986624511 , tout fonctionne très bien! Je n'obtiens aucune erreur et le système imprime

override func viewDidLoad() {
        super.viewDidLoad()
        // Load Ads
        let adUnitID = "ca-app-pub-{adUnitId}"
        let numAdsToLoad = 5
        let options = GADMultipleAdsAdLoaderOptions()
        options.numberOfAds = numAdsToLoad
        
        let imageOptions = GADNativeAdImageAdLoaderOptions()
        imageOptions.disableImageLoading = false

        let mediaOptions = GADNativeAdMediaAdLoaderOptions()
        mediaOptions.mediaAspectRatio = .square
        
        let adOptions = GADNativeAdViewAdOptions()
        adOptions.preferredAdChoicesPosition = .topLeftCorner
        
        adLoader = GADAdLoader(adUnitID: adUnitID, rootViewController: self, adTypes: [.unifiedNative], options: [options, imageOptions, mediaOptions])
        adLoader.delegate = self
        adLoader.load(GADRequest())
}

Mais le problème survient lorsque j'essaie d'utiliser mon propre identifiant de bloc d'annonces natif. Lors du chargement, le système imprime l'erreur

import Firebase

class AppDelegate:  UIResponder, UIApplicationDelegate {

    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
            // Override point for customization after application launch.
            FirebaseApp.configure()
            GADMobileAds.configure(withApplicationID: "ca-app-pub-8482280186158418~7106629637")
            GADMobileAds.sharedInstance().start(completionHandler: nil)
    }
}

pour chaque annonce que je charge. Et j'ai essayé BEAUCOUP de choses pour résoudre ce problème que j'ai trouvées partout sur Internet ...

Dépannage

Comme je l'ai mentionné, j'ai parcouru Internet pour obtenir de l'aide et des options de dépannage. Voici ce que j'ai fait.

  • Création d'un nouvel identifiant de bloc d'annonces natif
  • Attendu plus d'une semaine pour confirmer l'erreur avec l'identifiant de l'unité
  • J'ai vérifié les informations de mon compte AdMob et AdSense
  • J'ai vérifié mes informations de paiement AdMob et AdSense
  • Assurez-vous que le GADApplicationIdentifier dans Info.plist est correct
  • Ajout de toutes les exigences aux App Transport Security Settings dans le fichier Info.plist, comme indiqué par AdMob . (Autoriser les chargements arbitraires, Autoriser les chargements arbitraires pour les médias, Autoriser les chargements arbitraires dans le contenu Web)
  • Double, triple, quadruple, quintuple a vérifié le code et suivi la documentation fournie par AdMob
  • A suivi le CodeLab fourni par AdMob


4 commentaires

Avez-vous réussi à le résoudre?


Salut, je suis également confronté au même problème, l'avez-vous résolu?


@Daniel Avez-vous réussi à le résoudre?


@RohitKanade Non, je reçois toujours des demandes chez Admob mais aucune impression sur mon application: /


3 Réponses :


-1
votes

J'ai eu le même problème avec le code d'erreur 1. Aussi après avoir publié mon application dans l'Appstore. Les annonces de test ont bien fonctionné. Après avoir pu associer mon application à l'App Store (8 jours après la publication), cela a fonctionné.


0 commentaires

0
votes

Il semble que vous n'obtenez tout simplement pas l'annonce. Cela dépend de nombreux facteurs tels que votre pays, votre appareil, votre IDFA ou tout autre type d'informations qu'AdMob a pu collecter. Du point de vue de l'annonceur, vous n'êtes pas un public attrayant.

Si vous souhaitez augmenter vos chances d'obtenir une annonce, vous pouvez utiliser un VPN pour les zones à forte demande, par exemple aux États-Unis.


0 commentaires

0
votes

Si vous recevez un message "Aucune annonce à afficher" lorsque vous utilisez des bannières Google (AdMob), vous pouvez résoudre le problème en fixant la largeur de vue 320.


0 commentaires