Ahad Sheriff
Ahad Sheriff

Reputation: 1829

Issues implementing AdMob with Firebase iOS

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

Answers (8)

samwize
samwize

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

user1592811
user1592811

Reputation: 913

The solution is very simple, just import both Firebase & GoogleMobileAds :

import Firebase
import GoogleMobileAds

Upvotes: 7

Jeff Gu Kang
Jeff Gu Kang

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.

  1. Uninstall cocoapod if you installed in your iOS project. (Delete all pod folders, pod frameworks and workspace made by pod). Does not matter Podfile.

  2. 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
  1. In terminal, type pod update

  2. pod install

  3. 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

Nick Hung
Nick Hung

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

Alok C
Alok C

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

wei
wei

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

ShabeebHasan
ShabeebHasan

Reputation: 101

import Firebase

in ViewController

Upvotes: 10

iOS
iOS

Reputation: 11

I solved it updating cocoapods to the latest version, installing all pods again and clean the project

Upvotes: 1

Related Questions