Reputation: 1829
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!
Upvotes: 2
Views: 2404
Reputation: 27383
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:
pod 'Firebase/AdMob'
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 resolve GADRequest
etc.
It will work, until one of them change the way to integrate, again.
Upvotes: 0
Reputation: 913
The solution is very simple, just import both Firebase & GoogleMobileAds :
import Firebase
import GoogleMobileAds
Upvotes: 7
Reputation: 4889
You do not need to import Firebase
.
I solved all problems as unpredictable error, compile error and import error using this way. I am using Xcode8.x with Swift3.
Uninstall cocoapod if you installed in your iOS project. (Delete all pod folders, pod frameworks and workspace made by pod). Does not matter Podfile
.
Edit Podfile
as below
source 'https://github.com/CocoaPods/Specs.git' platform :ios, '9.0' target 'YourTargetName' do use_frameworks! pod 'Firebase/Core' pod 'Firebase/AdMob' end
In terminal, type pod update
pod install
Open project through yourproject.workspace
made by cocoapod
import GoogleMobileAds
and do anything you want.
Booooooom!
I hope it help you guys. And you can download examples by google here.
Upvotes: 2
Reputation: 123
When you use Pod to install, Don't forget to unmark 'use_framework!'
I reinstall pods again with 'use_framework' , it's work! And you don't need to import Firebase when you try to use GADBannerview.
Upvotes: 0
Reputation: 2857
I may be late to the Party but along side GoogleMobileAds. We have to import Firebase. Dont know the reason but that solve my problem. I have ran into same kind of problem on different occasions.
Upvotes: 0
Reputation: 4737
Is you cocoapods the newest version?
I had a similar issue with old version of cocoapods after adding firebase to my project which has GoogleMobileAds implemented already.
I got 3 build errors after I import Firebase:
"Use of unresolved identifier GADRequest"
"Use of unresolved identifier GADBannerViewDelegate"
"Use of unresolved identifier GADBannerView"
I commented import Firebase
and those errors gone.
I decided to update my cocoapods and delete my old podfile.
Then use pod init
to create a new podfile and add dependencies.
Of course install pods again.
This works for me.
Not sure it works in your case or not, but I hope it helps.
Upvotes: 8
Reputation: 11
I solved it updating cocoapods to the latest version, installing all pods again and clean the project
Upvotes: 1