首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么添加iOS AdMobs GADBannerView会导致AppDelegate (Swift)中的sigabrt?

为什么添加iOS AdMobs GADBannerView会导致AppDelegate (Swift)中的sigabrt?
EN

Stack Overflow用户
提问于 2016-12-04 20:28:16
回答 2查看 1K关注 0票数 2

我很难让AdMob广告在我的iOS应用程序中工作。我得到了一个具体的错误,我将在下面向你们展示,但首先是我尝试过的。

,这是我尝试过的,

  1. 一旦我在我的主应用程序中得到错误,我就检索到了正式的BannerExample,并成功地运行了它。BannerView示例应用程序运行,当它在我的iPhone 5s模拟器上运行时,我看到广告出现在应用程序中。
  2. 我已经做了各种方式的pod更新,以确保我有所有需要的软件包的确切新版本,并记住,应用程序的构建没有任何问题。
    1. 我已经调试了一行代码,下面我将向您展示。

现在你知道我已经做了很多工作了,看看发生了什么。

应用程序崩溃

确切的错误是:

CYaPass13155:433036从私有有效用户设置读取。Google移动Ads SDK版本: afma-sdk-i-v7.15.0 2016-12-04 14:37:26.046 CYaPass13155:432944 -UIView loadRequest::未识别的选择器发送给实例 0x7f8bf4546090 2016-12-04 14:37:26.055 CYaPass13155:432944 *

这不是AppDelegate错误上的标准大小。我已经尝试过与StoryBoard相关的所有正常的东西,这是一张图片,它向您展示了我没有任何未定义的项目来破坏它。另外,我将向您展示,当我删除一行AdMob代码时,应用程序将正常运行。

您可以看到,我确实在UIView上定义了两个出口,我正试图将其用于BannerView。这样我就可以在删除一行AdMob代码时对其进行测试。

您还可以在SettingsController上看到这些网点。

您可以在我的实际控制器代码中看到它们,如下所示:

代码语言:javascript
运行
复制
    @IBOutlet weak var AdMobs: GADBannerView!

    @IBOutlet weak var SuperView: UIView!
    func loadAd(){
        AdMobs.adUnitID = "ca-app-pub-3940256099942544/2934735716"
        AdMobs.rootViewController = self
        AdMobs.load(GADRequest())
        SuperView.backgroundColor = UIColor.black;
    }

我将这些行分隔到loadAd() func中,以便可以从不同的位置测试它们,但这是BannerExample在viewDidLoad() func中使用和调用的相同代码。

小型测试在UIView上的应用

然后,您可以看到,我还在完全相同的UIView (SuperView)上做了一些工作,其中将backgroundColor设置为黑色。

这是为了让我自己相信,这不仅仅是因为我在那个UIView上附加了一个出口。但是,如果我简单地注释掉前面的三行代码,代码就能正常工作了。

在这里,我将运行它并向您展示输出。在我这样做之前,这里是我的AppDelegate应用程序构造函数,它不会改变。它实际上是官方BannerExample的一个副本:

代码语言:javascript
运行
复制
import Firebase
import UIKit

@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate{
    var window: UIWindow?

    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
        // Override point for customization after application launch.
        FIRApp.configure()
        GADMobileAds.configure(withApplicationID: "ca-app-pub-myapp-hiddenforpublicConsumption")
        return true
    }

现在,我将更改loadAd()如下所示,并再次运行:

代码语言:javascript
运行
复制
func loadAd(){
        //AdMobs.adUnitID = "ca-app-pub-3940256099942544/2934735716"
        //AdMobs.rootViewController = self
        //AdMobs.load(GADRequest())
        SuperView.backgroundColor = UIColor.black;
    }

显然,唯一的变化是我评论了这三行。这是它运行时的样子。

选项卡视图应用程序

顺便说一句,这是一个标签应用程序。于是,应用程序出现了,我点击了Settings选项卡,您可以看到loadAd()中修改过的代码运行并将UIView的背景变为黑色。

要点:特定代码导致问题

现在,让我向您展示,如果我只取消注释第一行条幅广告代码,那么应用程序就会在AppDelegate.中崩溃。

以下是修改后的loadAd()

代码语言:javascript
运行
复制
func loadAd(){
        AdMobs.adUnitID = "ca-app-pub-3940256099942544/2934735716"
        //AdMobs.rootViewController = self
        //AdMobs.load(GADRequest())
        SuperView.backgroundColor = UIColor.black;
    }

同样,您可以看到,我只取消了在GADBannerView上设置GADBannerView的一行注释。这是BannerExample使用的完全相同的代码。它甚至使用相同的测试unitId,对每个人的测试都是免费的。而且,即使你将unitId更改为无效值,应用程序也不会崩溃,广告也不会出现。

,这是结果

调试显示了代码的精确行

我可以进入代码,这正是在发生此错误时添加的loadAd()行(如下所示,以供明确参考):

代码语言:javascript
运行
复制
 AdMobs.adUnitID = "ca-app-pub-3940256099942544/2934735716"

唯一的区别:选项卡式视图--这是问题所在吗?

唯一有效的区别是我的应用程序是基于选项卡视图的。有人知道为什么会发生这种事吗?

我已经试了差不多两天了。任何帮助都是非常感谢的。

EN

Stack Overflow用户

发布于 2018-04-12 13:26:11

如果其他人也有同样的问题,并且不知道发生了什么,我就会遇到一个类似的错误。

去查看广告,然后下到上面写着Label的地方。把它改成你的名字,这对我有用。

还要确保module是空的,并且取消了inherit module from target

票数 0
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40963280

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档