问题
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!
回答1:
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.
回答2:
import Firebase
in ViewController
回答3:
The solution is very simple, just import both Firebase & GoogleMobileAds :
import Firebase
import GoogleMobileAds
回答4:
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 bycocoapod
import GoogleMobileAds
and do anything you want.
Booooooom!
I hope it help you guys. And you can download examples by google here.
回答5:
I solved it updating cocoapods to the latest version, installing all pods again and clean the project
回答6:
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.
回答7:
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.
回答8:
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.
来源:https://stackoverflow.com/questions/37834509/issues-implementing-admob-with-firebase-ios