So ever since the announcement came that iAD would be shutting down I started searching for an alternative way to monetize my app using advertisements. And with Google's May 18th updates to Firebase (integrating AdMob with it was very appealing), I decided to add a simple banner ad to my app. I followed all the instructions in the documentation (https://firebase.google.com/docs/admob/ios/quick-start#load_an_ad_into_gadbannerview) however I am unfortunately getting some critical errors.
Here is the code from the documentation, it nearly identical to my application code:
import UIKit
import GoogleMobileAds
class ViewController: UIViewController {
@IBOutlet weak var bannerView: GADBannerView!
override func viewDidLoad() {
super.viewDidLoad()
bannerView.adUnitID = "ca-app-pub-3940256099942544/2934735716"
bannerView.rootViewController = self
bannerView.loadRequest(GADRequest())
}
}
At @IBOutlet weak var bannerView: GADBannerView!
I am getting the error: weak may only be applied to class and class-bound protocol types, not '<<error type>>
Which is an error that I have never seen in my life!
I am also getting Use of unresolved identifier 'GADRequest
, which I do not understand because that is a built in method from GADBannerView...?
I installed all the necessary libraries using cocoapods so that shouldn't be a problem. Any help would be appreciated. Thank you!
I solved it updating cocoapods to the latest version, installing all pods again and clean the project
Firebase/Google Ads, Swift, Xcode, and Cocoapods are constantly updating. I have been changing how to declare the pods and importing them over the years.
Now (year 2018), your Podfile should be written like this:
That's all. It's consolidated under the subspec "AdMob", under the one big family of Firebase. You run a
pod install
and you will realize there is a dependency to the pod "Google-Mobile-Ads-SDK" (but you should not add the pod to the Podfile).You need to
import Firebase
, and the project should resolveGADRequest
etc.It will work, until one of them change the way to integrate, again.