Google AdMob干扰SwiftUI中的Shake Gesture

问题描述 投票:0回答:1

我有一个使用SwiftUI内置的应用程序,该应用程序使用了摇动手势,在整个开发过程中都运行良好。今天,我成功使用AdMob添加了横幅广告。但是,这样做似乎会阻止“摇动手势”起作用。单独工作的AdMob和“摇动手势”代码如下所示。

使用以下内容调用AdMob横幅广告:

final private class BannerVC: UIViewControllerRepresentable  {

    let bannerID = “my-BannerAd-Unit-ID-here“

    func makeUIViewController(context: Context) -> UIViewController {
        let view = GADBannerView(adSize: kGADAdSizeBanner)

        let viewController = UIViewController()
        view.adUnitID = bannerID
        view.rootViewController = viewController
        viewController.view.addSubview(view)
        viewController.view.frame = CGRect(origin: .zero, size: kGADAdSizeBanner.size)
        view.load(GADRequest())

        return viewController
    }

    func updateUIViewController(_ uiViewController: UIViewController, context: Context) {}
}



struct BannerAdView: View {
    var body: some View {
//        Text("Hello, World!")

        HStack{
            Spacer()
            BannerVC().frame(width: 320, height: 50, alignment: .center)
            Spacer()
        }

    }
}

[在BannerAdView中,如果我注释掉BannerVC调用并将其替换为“ Hello World”文本,则“摇动手势”效果很好。当我注释掉“ Hello World”并替换为BannerVC调用时(如上所示),“摇动手势”将不再起作用。因此,干扰似乎来自BannerVC类代码。

知道为什么吗?以下是“摇动手势”的工作代码:

struct ShakableViewRepresentable: UIViewControllerRepresentable {

    class Coordinator: NSObject {
        var parent: ShakableViewRepresentable
        init(_ parent: ShakableViewRepresentable) {
            self.parent = parent
        }
    }

    func makeCoordinator() -> ShakableViewRepresentable.Coordinator {
        Coordinator(self)
    }

    func makeUIViewController(context: Context) -> ShakableViewController {
        ShakableViewController()
    }

    func updateUIViewController(_ uiViewController: ShakableViewController, context: Context) {}
}

class ShakableViewController: UIViewController {

    override func motionBegan(_ motion: UIEvent.EventSubtype, with event: UIEvent?) {
        guard motion == .motionShake else { return }
        shuffleItems(newGame: false)
    }
}
admob gesture shake
1个回答
0
投票

因此,该问题与AdMob无关。相反,该错误是由于我的堆栈中有两个UIViewControllers(一个用于振动器,一个用于AdMob)而引起的。一旦我修复了它,它就可以完美运行。

© www.soinside.com 2019 - 2024. All rights reserved.