14

当我在模拟器中测试 Admob 时,它会抛出以下错误

要在此设备上获取测试广告,请调用:request.testDevices = [NSArray arrayWithObjects:GAD_SIMULATOR_ID, nil];

我的代码

bannerView_ = [[GADBannerView alloc] initWithAdSize:kGADAdSizeBanner];
bannerView_.adUnitID = @"8de66ecc3525495d";

bannerView_.rootViewController = self;
[self.view addSubview:bannerView_];

GADRequest *request = [[GADRequest alloc] init];
request.testing = YES;
[bannerView_ loadRequest:request];

指导我存档。提前致谢..

4

6 回答 6

26

您必须添加测试设备。使用 Swift,只需替换

bannerView.load(GADRequest())

let request: GADRequest = GADRequest()
request.testDevices = [kGADSimulatorID]
bannerView.load(request)

如果您有 iPhone,那么也运行该应用程序,它会告诉您 ID。

要在此设备上获取测试广告,请致电:request.testDevices = @[@"HERE IS THE ID"];

添加的标识:

let request: GADRequest = GADRequest()
request.testDevices = ["PUT HERE THE ID", kGADSimulatorID]
bannerView.load(request)
于 2016-09-11T21:08:17.577 回答
5

终于修复bug啦。。

我错误地生成了adUnitID。所以只有我无法获得广告浏览量。

现在从 xxxx 站点获取一个adUnitID进行测试。而且它工作正常..

adUnitID = @"a14dccd0fb24d45";

感谢所有支持者。

于 2013-10-23T20:26:55.917 回答
4

自最新更新以来,request.testDevices已替换为:

GADMobileAds.sharedInstance().requestConfiguration.testDeviceIdentifiers

我已经让它与这个一起工作:

GADMobileAds.sharedInstance().requestConfiguration.testDeviceIdentifiers = [(kGADSimulatorID as! String)]

[编辑]

在我的应用程序委托中,我正在使用以下代码:

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
        
    // use this for production 
    GADMobileAds.sharedInstance().start(completionHandler: nil)
    // use this for testing 
    GADMobileAds.sharedInstance.requestConfiguration.testDeviceIdentifiers = [ kGADSimulatorID ]
        
    return true
}

这适用于 Swift 5、iOS 13 和 Google-Mobile-Ads-SDK (7.58.0)

于 2020-04-26T05:59:13.933 回答
2

这对我有用:

(GADRequest *)request {
  GADRequest *request = [GADRequest request];
  // Make the request for a test ad. Put in an identifier for the simulator as well as any devices
  // you want to receive test ads.
  request.testDevices = @[
    // TODO: Add your device/simulator test identifiers here. Your device identifier is printed to
    // the console when the app is launched.
    GAD_SIMULATOR_ID
  ];
  return request;//thanks
}  
于 2014-07-24T06:22:10.643 回答
0

我目前正在使用这个。即使在模拟器中也对我有用。我收到了错误,但这不是错误,我进行了广泛搜索,发现它更多的是一条信息性消息。

要点是,当测试模式设置为 NO 时,会显示真实的广告,而当测试模式设置为 YES 时,会显示“成功,您现在已准备好穿越广告星系”消息。因此,如果您在应用程序中有任何一个结果,那应该没问题。:)

我的代码如下:

GADBannerView *bannerView_ = [[GADBannerView alloc] initWithAdSize:kGADAdSizeBanner];

bannerView_.adUnitID = GOOGLE_UNIT_ID;

GADRequest *request = [GADRequest request];

bannerView_.delegate = self;

bannerView_.rootViewController = self;

// Make the request for a test ad. Put in an identifier for
// the simulator as well as any devices you want to receive test ads.
request.testDevices = [NSArray arrayWithObjects:
                       GAD_SIMULATOR_ID,
                       nil];

// Initiate a generic request to load it with an ad.
[bannerView_ loadRequest:request];

我没有将测试设置为“是”。我的 Google AdMobs SDK 版本是 6.5.1

由于您提到您需要生产帮助,因此无论如何都不应该将其设置为测试模式,因此您可能应该在没有测试模式的情况下运行它。

看看在模拟器上运行还是在真机上运行无所谓的问题,它应该在两种设备上运行。我在我的代码中将委托设置为 self ,因此如果您这样做,您可以使用以下方法:

- (void) adView: (GADBannerView*) view didFailToReceiveAdWithError: (GADRequestError*) error
- (void) adViewDidReceiveAd: (GADBannerView*) view

这些可以帮助您检查是否收到了广告,即使在模拟器中运行也是如此。

希望这可以帮助!:)

于 2013-10-23T02:30:43.967 回答
0

我曾经这样做:

GADRequest *request = [GADRequest request];

// Make the request for a test ad. Put in an identifier for
// the simulator as well as any devices you want to receive test ads.
request.testDevices = [NSArray arrayWithObjects:GAD_SIMULATOR_ID, nil];
[gAdBannerView loadRequest:request];

我在哪里定义

// Constant for getting test ads on the simulator using the testDevices method.
#define GAD_SIMULATOR_ID @"Simulator"
于 2013-10-22T20:47:12.023 回答