代码之家  ›  专栏  ›  技术社区  ›  Pablo

有时无法加载奖励视频广告

  •  0
  • Pablo  · 技术社区  · 7 年前

    我已经推出了一个iOS应用程序,但是我在使用谷歌移动广告SDK加载有奖视频广告时遇到了问题。

    当一个播放器点击按钮看视频广告时,该播放器会显示几次视频。大多数情况下,用户会显示一个admob无法填充请求的错误:

    Error Domain=com.google.ads Code=1 "Request Error: No ad to show."
    

    有时候,他们需要点击几下才能得到一个,有时候,不管点击多少次,他们都无法得到一个。这个问题更多的发生在我的奖励视频上,但也发生在我的横幅广告上。有时谷歌无法为我提供横幅广告。有人知道为什么这不起作用吗?

    我的广告代码:

    override func viewDidLoad() {
        super.viewDidLoad()
        if let view = self.view as! SKView? {
            // Load the SKScene from 'GameScene.sks'
            let scene = MainMenu(view.bounds.size, self, nil)
    
            scene.scaleMode = .aspectFill
    
            // Present the scene
            view.presentScene(scene)
    
    
            view.ignoresSiblingOrder = true
    
            view.showsFPS = false
            view.showsNodeCount = false
            view.showsPhysics = false
    
            GADRewardBasedVideoAd.sharedInstance().delegate = self
            GADRewardBasedVideoAd.sharedInstance().load(getRequest(),
                                                        withAdUnitID: rewardAdId)
    
            // In this case, we instantiate the banner with desired ad size.
            if GameViewController.bannerView == nil {
                GameViewController.bannerView = GADBannerView(adSize: kGADAdSizeBanner)
                GameViewController.bannerView.adUnitID = bannerId
                GameViewController.bannerView.rootViewController = self
                GameViewController.bannerView.load(getRequest())
                GameViewController.bannerView.isHidden = true
    
                addBannerViewToView(GameViewController.bannerView)
            }
            authenticateLocalPlayer()
            QuestManager().checkForRefresh()
        }
    }
    
    public func getRequest() -> GADRequest {
        let request = GADRequest()
        return request
    }
    
    public func displayRewardedVideo() {
        if GADRewardBasedVideoAd.sharedInstance().isReady {
            GADRewardBasedVideoAd.sharedInstance().present(fromRootViewController: self)
        } else {
            GameViewController.loadVideo()
        }
    }
    
    public static func loadVideo(){
        if !GADRewardBasedVideoAd.sharedInstance().isReady {
        GADRewardBasedVideoAd.sharedInstance().load(GADRequest(),
                                                    withAdUnitID: rewardAdId)
        }
    }
    
    func rewardBasedVideoAdDidClose(_ rewardBasedVideoAd: GADRewardBasedVideoAd) {
        GADRewardBasedVideoAd.sharedInstance().load(getRequest(),
                                                    withAdUnitID: rewardAdId)
        if let scene = gameScene {
            scene.audioManager.unmmute()
        }
    
        print("Video did close")
    }
    
    1 回复  |  直到 7 年前
        1
  •  0
  •   Glenn Posadas    7 年前

    我目前在一家提供大量免费移动应用程序的公司工作,AdMob是一名自由职业者,所以我非常擅长这项工作。

    不管怎样,我从我公司的经理那里学到的(他们在那里也有一个谷歌AdMob顾问),就是要在应用程序中显示的广告可以依赖于用户所在的国家。例如,我在东南亚,他们在欧洲。我有时不收到横幅广告,但在他们那里,他们总是收到各种类型的广告。

    只要你的项目符合谷歌AdMob的规则( 例如,在短时间间隔内,不要在另一个间隔后显示间隙广告) 你至少会偶尔收到一些广告,我相信你做得很好。

    我希望这有帮助。