为什么GADBannerView未声明?

时间:2016-07-15 03:20:49

标签: ios swift firebase admob

我只是想在我的新应用中添加广告。

在我的其他应用中,我通过手动将框架复制到项目中来添加广告。但这一次,我决定使用pod 'Firebase/Core' pod 'Firebase/AdMob' cocoapod。所以我添加了以下几行:

FIRApp.configure()

我添加了核心,因为我也想要Firebase分析。

通常,在我添加一个pod之后,我会转到项目设置并在" Linked Frameworks and Libraries"中链接新添加的pod。部分。但是当我按下+按钮时,我无法找到框架。所以我没有做到。

然后我只需在App Delegate中设置Firebase:

@IBOutlet var ad: GADBannerView!

该应用运行完美,我可以看到启用了" Firebase分析"控制台中的消息。

之后,我在故事板中添加了广告横幅,就像the guide所说的那样。

然后我控制 - 将广告横幅视图拖到控制器并添加了一个插座:

GADBannerView

现在它说import GoogleMobileAds 未声明。我意识到我忘了导入模块,所以我补充说:

import Firebase

就像导游那样。但仍然说这种类型是未申报的!我清理并重建,但仍然没有运气。

然后我想也许指南犯了一个错误,也许我应该导入Firebase:

GADBannerView

GADBannerView仍未声明。

然后发生了最奇怪的事情:我命令+点击GADBannerView.h查看其定义。然后Xcode成功跳转到@interface GADBannerView : UIView 中的定义并突出显示:

GADBannerView

如果GADMobileAds.configureWithApplicationID是未声明的类型,我是如何找到定义的?

旁注:

编译器也找不到指南告诉我打电话的方法{{1}}。

5 个答案:

答案 0 :(得分:4)

您应该检查几件事:

  1. 如果您使用CocoaPods安装SDK,请确保打开.xcworkspace而不是.xcodeproj
  2. 尝试删除派生数据(窗口 - >项目 - >删除...),清除(Cmd + Shift + K)和重建项目。
  3. 您无需导入“Firebase”即可使BannerAd正常运行。您只想在AppDelegate中导入它以获得此平台的其他好处。

答案 1 :(得分:1)

您需要将GoogleMobileAds导入您的插座所在的视图控制器。 欢呼声

答案 2 :(得分:0)

我能够通过将use_frameworks!添加到Podfile来解决此问题。它支持快速动态框架(see blogpost).

作为参考,我使用了Podfile from the sample project:

use_frameworks!
platform :ios, '7.0'
pod 'Firebase/AdMob'

target 'AdMobExample' do
end
target 'AdMobExampleSwift' do
end
target 'AdMobExampleTests' do
end
target 'AdMobExampleSwiftTests' do
end

答案 3 :(得分:0)

我在未声明的GADAdLoader上遇到了问题。

尝试过FlySoFast的答案,不幸的是,它对我没有用。

需要导入Firebase才能解决我的问题。

我正在使用Google-Mobile-Ads-SDK 7.29.0

答案 4 :(得分:0)

快捷键4:

我必须在视图控制器中导入GoogleMobileAds

import GoogleMobileAds

和在AppDelegate中

import UIKit
import Firebase
import GoogleMobileAds