SwiftUI:Admob非页内广告未在rootViewController上呈现

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

在SWIFTUI中编码

我已经在我的SwiftUI应用程序中实现了一个设置页面,该页面在单击视图中的按钮时显示。该视图被包装在一张纸中。您可以看到以下代码:

TabsBar(showOptionsTab: $showOptionsTab)
    .sheet(isPresented: $showOptionsTab)
    {
        OptionsTab(showOptionsTab: self.$showOptionsTab)
    }

我已经在此“ OptionsTab”中实现了一个非页内广告,当在.onAppear()调用中加载选项标签时创建了插页式广告,并在选择后退按钮时显示了插页式广告。您可以从下面的OptionsTab中选择代码:

@State private var interstitial : GADInterstitial!

VStack
{
    ... other code

    Button(action:
    {
        if ( self.interstitial.isReady)
        { 
            let root = UIApplication.shared.windows.first?.rootViewController
            self.interstitial.present(fromRootViewController: root!)               
        }

        self.showOptionsTab.toggle()
    })
    {
        Image(systemName: "xmark")
            .font(.largeTitle)
    }
}
.onAppear
{
    self.interstitial = GADInterstitial(adUnitID: "addID")
    let req = GADRequest()
    self.interstitial.load(req) 
}

我在按钮内有其他代码,记录了插页式广告的状态,并显示其为READY(就绪)状态,当前代码正在被执行中……但从未显示过。

我已经在ContentView中实现了此确切的代码,并且插页式广告加载也很好。工作表中存在与此代码有关的内容,导致插页式广告无法显示。

rootViewController是在工作表中显示的视图中加载插页式广告的不正确视图吗?否则,我还做错了什么?

谢谢您的帮助!

swift swiftui interstitial googlemobileads gadinterstitial
1个回答
1
投票

尝试一下

TabsBar(showOptionsTab: $showOptionsTab)
    .sheet(isPresented: $showOptionsTab)
    {
        OptionsTab(showOptionsTab: self.$showOptionsTab)
            .OnDisapear 
            {    
                if ( self.interstitial.isReady)
                { 
                    let root = UIApplication.shared.windows.first?.rootViewController
                    self.interstitial.present(fromRootViewController: root!)               
                }
            } 
        }
    }

然后在此视图中添加状态插页式变量,然后在ContextView的onAppear上创建插页式。

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