在应用内购买时删除 RevMob 广告横幅

Removing RevMob Ad banner upon in-App purchase

问题是 Apple 拒绝了我的应用程序,因为当单击按钮购买 "no ads" 升级时,它不会让横幅消失,直到您关闭应用程序并重新打开它。这是因为我在 viewController.swift 文件中初始化了所有 RevMob 代码。我有一个布尔值,一旦在这个 viewController.swift 文件中购买升级,它就会变成 false。因此,下次您打开应用程序并加载 viewController 时,布尔值将设置为 false,并且不允许显示广告。

有人知道这是不是错误的处理方式?或者有没有一种简单的方法可以让它们在按下无广告按钮后立即消失,而无需关闭应用程序并重新打开它?

//BANNER AD =======================================
let bannerBlock: () -> Void = {
    //Custom method defined below
    if UserDefaults.standard.object(forKey: "adsBool") as! Bool == true
    {
        self.showBannerWithCustomFrame()
    }
        else
    {
        //don't show ads because user purchased
    }
}
let bannerFailBlock: ((Error?) -> Void) = {error in
    NSLog("[RevMob Sample App] Session failed to start with error: \(error!.localizedDescription)")
}
RevMobAds.startSession(withAppID: "00000000000000000000",
    withSuccessHandler: bannerBlock,
    andFailHandler: bannerFailBlock)

我的 bannerView 在我的 GameViewController 中是这样设置的

class GameViewController: UIViewController, RevMobAdsDelegate {
    var bannerView:RevMobBannerView?

    override func viewDidLoad() {
    super.viewDidLoad()

RevMob's banner documentation开始,有一个方法叫做hideAd。在 IAP 回调中调用该方法可以解决您的问题,对吗?

To hide the banner: banner!.hideAd()

让我看看我是否正确理解了你的问题,你想在购买后立即隐藏你的横幅。

首先,您需要将 bannerView 设置为 viewController 的 属性。

然后您必须在购买成功的回调中添加此代码:
viewController.bannerView.removeFromSuperview();

我修好了!谢谢你的帮助。我必须将代码从 GameViewController 移至 bannerAd 的 GameScene,以便我可以在购买后立即将其删除。完美运行。