【问题标题】:Swift 3 - AdMob not showing on existing View ControllersSwift 3 - AdMob 未在现有视图控制器上显示
【发布时间】:2018-03-29 11:32:57
【问题描述】:

我正在尝试将 AdMob 集成到我的基于 Swift 的应用程序中,但无论我尝试什么代码,它都不起作用。

我创建了一个新的视图控制器并使用了与我的“主页”控制器完全相同相同的代码,这似乎可以正常工作,但它不适用于我拥有的任何现有视图控制器。

我当前的故事板如下所示:

我当前的广告代码如下所示:

import UIKit
import GoogleMobileAds
import AudioToolbox

class AdTest: UIViewController, GADBannerViewDelegate {
    // Ad banner
    var adMobBannerView = GADBannerView()
    let ADMOB_BANNER_UNIT_ID = "ca-app-pub-9999999999"




    override func viewDidLoad() {
        super.viewDidLoad()


        // Init AdMob banner
        initAdMobBanner()
    }





    // MARK: -  ADMOB BANNER
    func initAdMobBanner() {

        if UIDevice.current.userInterfaceIdiom == .phone {
            // iPhone
            adMobBannerView.adSize =  GADAdSizeFromCGSize(CGSize(width: 320, height: 50))
            adMobBannerView.frame = CGRect(x: 0, y: view.frame.size.height, width: 320, height: 50)
        } else  {
            // iPad
            adMobBannerView.adSize =  GADAdSizeFromCGSize(CGSize(width: 468, height: 60))
            adMobBannerView.frame = CGRect(x: 0, y: view.frame.size.height, width: 468, height: 60)
        }

        adMobBannerView.adUnitID = ADMOB_BANNER_UNIT_ID
        adMobBannerView.rootViewController = self
        adMobBannerView.delegate = self
        view.addSubview(adMobBannerView)

        let request = GADRequest()
        adMobBannerView.load(request)
    }


    // Hide the banner
    func hideBanner(_ banner: UIView) {
        UIView.beginAnimations("hideBanner", context: nil)
        banner.frame = CGRect(x: view.frame.size.width/2 - banner.frame.size.width/2, y: view.frame.size.height - banner.frame.size.height, width: banner.frame.size.width, height: banner.frame.size.height)
        UIView.commitAnimations()
        banner.isHidden = true
    }

    // Show the banner
    func showBanner(_ banner: UIView) {
        UIView.beginAnimations("showBanner", context: nil)
        banner.frame = CGRect(x: view.frame.size.width/2 - banner.frame.size.width/2, y: view.frame.size.height - banner.frame.size.height, width: banner.frame.size.width, height: banner.frame.size.height)
        UIView.commitAnimations()
        banner.isHidden = false
    }





    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
    }

}

我的 AdTest ViewController 显示如下:

而我的 Home ViewController 根本不显示广告:

【问题讨论】:

  • 你不应该显示ADMOB_BANNER_UNIT_ID的真实值:)
  • 尝试执行func adView(_ bannerView: GADBannerView, didFailToReceiveAdWithError error: GADRequestError) { print("adView:didFailToReceiveAdWithError: \(error.localizedDescription)") }并检查是否有错误...
  • ^ 返回“请求错误:没有广告可展示”。 - 但即使我在谷歌网站上使用测试 ID,也不会显示广告。

标签: ios swift xcode swift3 uiviewcontroller


【解决方案1】:

所以我发现了问题,如果您更改全局用户默认值,AdMob 将无法正常工作。

作为临时修复,我在广告显示之前添加了这个。

//MARK : - Load table data
UserDefaults.standard.register(defaults: ["UserAgent": "AB-" + UIDevice.current.identifierForVendor!.uuidString])
////////////
//GET CODE//
////////////

//MARK : - Load AdMob
UserDefaults.standard.register(defaults: ["UserAgent": "Mozilla/5.0 (iPhone;         CPU iPhone OS 11_0 like Mac OS X) AppleWebKit/604.1.38 (KHTML, like Gecko) Mobile/15A372"])
initAdMobBanner()

//Set browser back so the app works
UserDefaults.standard.register(defaults: ["UserAgent": "AB-" + UIDevice.current.identifierForVendor!.uuidString])

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多