【问题标题】:Admob banner for app with iPad Multitasking / Split View enabled (Swift)启用 iPad 多任务/拆分视图 (Swift) 的应用程序的 Admob 横幅
【发布时间】:2020-03-31 17:30:06
【问题描述】:

我正在为启用了多任务处理的 iPad 制作应用程序,现在我正在尝试实现 Admob 横幅。

有一篇关于在启用多任务的情况下执行此操作的文章 (https://developers.google.com/admob/ios/multiscene?hl=ru),但是当我使用 Swift 时,那里的所有代码都是用 Objective-C 编写的。

我试图翻译它,但我不知道如何对下面的代码进行翻译。什么是“请求初始化”?它应该做什么以及如何用 Swift 编写它?

如果有人有在多任务应用程序中成功实现 Admob 横幅的完整代码,请帮助我

- (void)viewDidAppear:(BOOL)animated {
  [super viewDidAppear:animated];
  if (!_requestInitialized) {
    [self loadInterstitial];
    _requestInitialized = YES;
  }
}

【问题讨论】:

  • 实例变量,按照惯例,用下划线命名。这是直接访问布尔变量的存储。与self.requestInitialized 或仅initialized 相同,具体取决于范围。
  • bshirley,谢谢!可惜 Admob 指南没有提供有关何时何地实施此变量的信息...
  • 默认情况下,属性将使用这些约定自动为它合成一个 ivar。除非在课堂内,否则您应该无法访问它。通常抑制这种合成的一件事是提供了访问器。当你这样做时,你要对它的存储方式负责。如果你想合成它,你可以使用@synthesize 编译器指令。 (我使用 Objective-C 已经近 30 年了,但如果可以的话,我建议你使用 Swift,就像 @DrewG 的回复一样。)

标签: ios objective-c swift xcode admob


【解决方案1】:

对于 SwiftUI,您可以添加:

request.scene = UIApplication.shared.connectedScenes.first as? UIWindowScene

【讨论】:

    【解决方案2】:

    GoogleAdmob 确实提供了一个快速入门 here,它确实向您展示了 Swift。我还将提供一些说明。

    确保您已将 GoogleMobileAds pod 添加到您的项目中,并具有正确的 plist 设置。

    在您的didFinishLaunchingWithOptions 在您的AppDelegate.swift 中添加以下内容:

    GADMobileAds.sharedInstance().start(completionHandler: nil)

    将一个普通的 UIView 拖放到您的故事板中,将其宽度设置为 320,高度设置为 50。然后您可以将视图的类更改为 GADBannerView。然后使用下面的代码并确保您的 IBOutlet 已连接。

    import UIKit
    import GoogleMobileAds
    
    class ViewController: UIViewController, GADBannerViewDelegate {
    
        @IBOutlet weak var bannerView: GADBannerView!
    
        override func viewDidLoad() {
            super.viewDidLoad()
    
            bannerView.adUnitID = "ca-app-pub-3940256099942544/6300978111" // Test Banner ID, replace with your ID here.
            bannerView.rootViewController = self
            bannerView.load(GADRequest())
    
            bannerView.delegate = self
        }
    
    
        // MARK: - GADBannerViewDelegate
    
        func adViewDidReceiveAd(_ bannerView: GADBannerView) {
            print("Received Ad")
        }
    
        func adView(_ bannerView: GADBannerView, didFailToReceiveAdWithError error: GADRequestError) {
            print(error)
        }
    
    }
    

    【讨论】:

    • 谢谢!我已经添加了此代码,但问题是我收到此错误“ 无效请求。应为支持多场景的应用程序设置 GADRequest 场景属性。在测试模式下将未设置的属性视为错误。”启用多任务时
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-10
    • 1970-01-01
    • 2013-11-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多