我正在使用AppDelegate来配置横幅视图及其代理。然后在两个VC上显示横幅:ViewController和SecondViewController。横幅显示正确,但有两个视觉不幸。
在应用程序打开时,测试横幅加载大约需要2-3秒的延迟。当我使用IB时,横幅立即出现。
从ViewController转换时 - > SecondViewController通过segue(当前模态/全屏/交叉解析/无动画),在横幅显示之前有大约1-2秒的延迟。
横幅加载完美,减去上面的两个延迟/延迟问题。我该如何解决这些问题?
class AppDelegate: UIResponder, UIApplicationDelegate, GADBannerViewDelegate {
var window: UIWindow?
var adBannerView = GADBannerView()
let myBannerRequest = GADRequest()
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
myBannerRequest.testDevices = [kGADSimulatorID]
adBannerView.delegate = self
adBannerView.isHidden = true
return true
}
func adViewDidReceiveAd(_ bannerView: GADBannerView!) {
adBannerView.isHidden = false
}
func adView(_ bannerView: GADBannerView!, didFailToReceiveAdWithError error: GADRequestError!) {
adBannerView.isHidden = true
}
}
的ViewController
let appDelegate = UIApplication.shared.delegate as! AppDelegate
override func viewDidLoad() {
super.viewDidLoad()
requestAds()
}
internal func requestAds() {
appDelegate.adBannerView = GADBannerView()
appDelegate.adBannerView.adUnitID = "ca-app-pub-3940256099942544/2934735716"
appDelegate.adBannerView.adSize = kGADAdSizeBanner
appDelegate.adBannerView.rootViewController = self
appDelegate.adBannerView.load(appDelegate.myBannerRequest)
appDelegate.adBannerView.center = CGPoint(x: view.frame.midX, y: view.frame.height - appDelegate.adBannerView.frame.height / 2)
view.addSubview(appDelegate.adBannerView)
}
SecondViewController
// Same as ViewController, with addition of IBAction for the button:
@IBAction func closeButtonPressed(_ sender: UIButton) {
self.dismiss(animated: true, completion: nil)
}
答案 0 :(得分:1)
您似乎正在尝试创建一个GADBannerView
以在整个应用程序中使用,这是一个好主意。您之所以没有这样做,是因为您在视图控制器的GADBannerView
功能requestAds
中创建了新的appDelegate.adBannerView = GADBannerView()
。requestAds
。删除它。
此外,请执行您的请求并在您的应用委托中设置广告单元ID,并将其从viewDidLoad
功能中删除。在您的View Controller GADBannerView
中,您应该只定位frame
并将其添加到视图中。
我想你也希望横幅能够填满屏幕的宽度,所以我改变了func addBannerToView() {
appDelegate.adBannerView.adSize = kGADAdSizeBanner
appDelegate.adBannerView.rootViewController = self
appDelegate.adBannerView.frame = CGRect(x: 0.0,
y: view.frame.height - appDelegate.adBannerView.frame.height,
width: view.frame.width,
height: appDelegate.adBannerView.frame.height)
view.addSubview(appDelegate.adBannerView)
}
属性。如果你想要一个函数,它最终会类似于:
public abstract class Myglobal
{
private int Type =0;
public void setType(int type) {
this.Type = type;
}
public int getType() {
return this.Type;
}
}
public class A extends Myglobal
{
public class A ()
{
this.setType(1);
}
}