为什么 GADBannerView 未声明?
Why GADBannerView is undeclared?
我只是想在我的新应用中添加广告。
在我的其他应用中,我通过手动将框架复制到项目中来添加广告。但是这一次,我决定使用 Firebase/AdMob
cocoapod。所以我添加了这些行:
pod 'Firebase/Core'
pod 'Firebase/AdMob'
我添加了核心,因为我也想要 Firebase 分析。
通常,我添加一个pod后,我会去项目设置和link新添加的pod在"Linked Frameworks and Libraries"部分。但是当我按下 + 按钮时,我找不到框架。所以我没有做。
然后我就在 App Delegate 中设置了 Firebase:
FIRApp.configure()
应用程序运行完美,我可以在控制台中看到 "Firebase analytics enabled" 消息。
之后,我在故事板中添加了广告横幅,就像 the guide 所说的那样。
然后我控制拖动广告横幅视图到控制器并添加了一个出口:
@IBOutlet var ad: GADBannerView!
现在它说 GADBannerView
未申报。我意识到我忘记导入模块,所以我添加:
import GoogleMobileAds
就像指南一样。但是它仍然说类型未声明!我清理并重建了,仍然没有成功。
然后我想也许是指南弄错了,也许我应该导入 Firebase:
import Firebase
但 GADBannerView
仍未申报。
然后最奇怪的事情发生了:我命令 + 单击 GADBannerView
来查看它的定义。然后Xcode成功跳转到GADBannerView.h
中的定义并高亮:
@interface GADBannerView : UIView
如果 GADBannerView
是未声明的类型,我是如何找到定义的?
旁注:
编译器也找不到向导告诉我调用的方法GADMobileAds.configureWithApplicationID
。
您应该检查几件事:
- 如果您使用 CocoaPods 安装 SDK,请确保您打开的是 .xcworkspace 而不是 .xcodeproj
- 尝试删除派生数据(Window -> 项目 -> 删除...),清理 (Cmd+Shift+K) 并重建项目。
- 您实际上不必导入 "Firebase" 即可使 BannerAd 正常工作。您只想将其导入 AppDelegate 以获得该平台的其他好处。
我可以通过将 use_frameworks!
添加到 Podfile 来解决这个问题。它启用 swift 动态框架 (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
您需要将 GoogleMobileAds 导入到您的出口所在的视图控制器中。
干杯
我对未声明的 GADAdLoader
有疑问。
试过 FlySoFast 的答案,不幸的是它对我不起作用。
需要导入 Firebase 来解决我的问题。
我正在使用 Google-Mobile-Ads-SDK 7.29.0
Swift 4:
我必须在视图控制器中导入 GoogleMobileAds
import GoogleMobileAds
并在 AppDelegate
import UIKit
import Firebase
import GoogleMobileAds
我只是想在我的新应用中添加广告。
在我的其他应用中,我通过手动将框架复制到项目中来添加广告。但是这一次,我决定使用 Firebase/AdMob
cocoapod。所以我添加了这些行:
pod 'Firebase/Core'
pod 'Firebase/AdMob'
我添加了核心,因为我也想要 Firebase 分析。
通常,我添加一个pod后,我会去项目设置和link新添加的pod在"Linked Frameworks and Libraries"部分。但是当我按下 + 按钮时,我找不到框架。所以我没有做。
然后我就在 App Delegate 中设置了 Firebase:
FIRApp.configure()
应用程序运行完美,我可以在控制台中看到 "Firebase analytics enabled" 消息。
之后,我在故事板中添加了广告横幅,就像 the guide 所说的那样。
然后我控制拖动广告横幅视图到控制器并添加了一个出口:
@IBOutlet var ad: GADBannerView!
现在它说 GADBannerView
未申报。我意识到我忘记导入模块,所以我添加:
import GoogleMobileAds
就像指南一样。但是它仍然说类型未声明!我清理并重建了,仍然没有成功。
然后我想也许是指南弄错了,也许我应该导入 Firebase:
import Firebase
但 GADBannerView
仍未申报。
然后最奇怪的事情发生了:我命令 + 单击 GADBannerView
来查看它的定义。然后Xcode成功跳转到GADBannerView.h
中的定义并高亮:
@interface GADBannerView : UIView
如果 GADBannerView
是未声明的类型,我是如何找到定义的?
旁注:
编译器也找不到向导告诉我调用的方法GADMobileAds.configureWithApplicationID
。
您应该检查几件事:
- 如果您使用 CocoaPods 安装 SDK,请确保您打开的是 .xcworkspace 而不是 .xcodeproj
- 尝试删除派生数据(Window -> 项目 -> 删除...),清理 (Cmd+Shift+K) 并重建项目。
- 您实际上不必导入 "Firebase" 即可使 BannerAd 正常工作。您只想将其导入 AppDelegate 以获得该平台的其他好处。
我可以通过将 use_frameworks!
添加到 Podfile 来解决这个问题。它启用 swift 动态框架 (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
您需要将 GoogleMobileAds 导入到您的出口所在的视图控制器中。 干杯
我对未声明的 GADAdLoader
有疑问。
试过 FlySoFast 的答案,不幸的是它对我不起作用。
需要导入 Firebase 来解决我的问题。
我正在使用 Google-Mobile-Ads-SDK 7.29.0
Swift 4:
我必须在视图控制器中导入 GoogleMobileAds
import GoogleMobileAds
并在 AppDelegate
import UIKit
import Firebase
import GoogleMobileAds