带有自定义GADRewardBasedVideoAd类的iOS崩溃

时间:2018-10-09 18:17:17

标签: ios swift google-admob

我在我的应用中使用Google Ads。由于我的目的,我创建了自定义。

GADRewardBasedVideoAd 类。所以我的代码看起来像这样:

enum AdState {
    case rewarded
    case loaded
    case unknown
    case error
}

class VideoAd: GADRewardBasedVideoAd {
    var adState: AdState = .unknown
}

还有一些ViewController:

class ViewController: UIViewController {
  let rewardAddNewsAd = VideoAd()

 ...

  rewardAddNewsAd.delegate = self
}

在我设置代表应用因

而崩溃的代码行中
  

[App.VideoAd setDelegate:]:无法识别的选择器已发送到实例0x281c7fd20

如果我在类 GADRewardBasedVideoAd 上更改了 rewardAddNewsAd 而不是我的自定义子类,则一切正常。

该代码在Google将GAD更新到最新版本之前一直有效。


我正在使用Swift 4.1

2 个答案:

答案 0 :(得分:1)

也许这是一个错误,但正如official site中所述,GADRewardBasedVideoAd具有单例设计,因此您不应创建自己的子类。使用GADRewardBasedVideoAd.shared访问GADRewardBasedVideoAd类的实例。

作为一种选择,您可以将AdState存储在VideoAd之外的某个地方。例如,在ViewController中。

答案 1 :(得分:0)

我再一次没有使用单例,但没有将子类用于GADRewardBasedVideoAd。目前,它正在工作。我的意思是我为每个对象获取了不同的“硬币”。