AdColony的AdReward出于某种原因没有使用Swift 2.0

我想在我的游戏中实施奖励插页式广告,但我收到了很多AdColony错误,例如:“无法填写广告请求”或我的区域ID无效。

首先,这将是我配置AdColony区域的方式:

Zone is active? Yes Zone Type: Preroll/Interstitial (Gives me "No fill for ad request error") Value Exchange/V4VC (Gives me "Zone ID invalid, please check config error") House Ads: Back Fill Options: 0 0 1 Development: Show Test Ads Only (Although my app is currently Live) 

他们为您提供的SDK下载示例适用于非游戏应用,因此我尝试将其翻译为游戏,尽管它没有那么不同,但我的当前代码可能存在问题。 所以这就是我在GameViewController.swift中的方式。

 // Outside I declare a struct struct Constants { static let adColonyAppID = "app5aab6bb6aaf3xxxxxx" static let adColonyZoneID = "vz19959f95bd62xxxxxx" static let currencyBalance = "coinAmount" } // Inside GameViewController var ad: AdColonyInterstitial?! var spinner: UIActivityIndicatorView! override func viewDidLoad() { super.viewDidLoad() self.setupAdRewardBanner() } func setupAdRewardBanner() { AdColony.configureWithAppID(Constants.adColonyAppID, zoneIDs: [Constants.adColonyZoneID], options: nil, completion: {(zones) in let zone = zones.first zone?.setReward({ (success, name, amount) in if (success) { let storage = NSUserDefaults.standardUserDefaults() let wrappedBalance = storage.objectForKey(Constants.currencyBalance) var balance = 0 if let nonNilNumWrappedBalance = wrappedBalance as? NSNumber { balance = Int(nonNilNumWrappedBalance.integerValue) } balance = balance + Int(amount) let newBalance: NSNumber = NSNumber(integerLiteral: balance) storage.setValue(newBalance, forKey: Constants.currencyBalance) storage.synchronize() self.updateCurrencyBalance() } }) //If the application has been inactive for a while, our ad might have expired so let's add a check for a nil ad object NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(GameViewController.onBecameActive), name: "onBecameActive", object: nil) //AdColony has finished configuring, so let's request an interstitial ad self.requestInterstitial() }) NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(GameViewController.triggerAdReward), name: "triggerAdReward", object: nil) self.updateCurrencyBalance() } func requestInterstitial() { //Request an interstitial ad from AdColony AdColony.requestInterstitialInZone(Constants.adColonyZoneID, options:nil, //Handler for successful ad requests success:{(newAd) in //Once the ad has finished, set the loading state and request a new interstitial newAd.setClose({ self.requestInterstitial() }) //Interstitials can expire, so we need to handle that event also newAd.setExpire( { self.ad = nil self.requestInterstitial() }) //Store a reference to the returned interstitial object self.ad = newAd }, //Handler for failed ad requests failure:{(error) in NSLog("SAMPLE_APP: Request failed with error: " + error.localizedDescription + " and suggestion: " + error.localizedRecoverySuggestion!) } ) } func triggerAdReward(sender: AnyObject) { if let ad = self.ad { if (!ad!.expired) { ad?.showWithPresentingViewController(self) } } } func updateCurrencyBalance() { //Get currency balance from persistent storage and display it let storage = NSUserDefaults.standardUserDefaults() let wrappedBalance = storage.objectForKey(Constants.currencyBalance) var balance: Int = 0 if let nonNilNumWrappedBalance = wrappedBalance as? NSNumber { balance = Int(nonNilNumWrappedBalance.integerValue) } print("current balance ", balance) //XXX Run animation of giving user coins and update view } func onBecameActive() { //If our ad has expired, request a new interstitial if (self.ad == nil) { self.requestInterstitial() } } 

然后,在用户输入GameScene后按下按钮时,我会将此通知称为请求广告插页式广告。

 NSNotificationCenter.defaultCenter().postNotificationName("triggerAdReward", object: nil) 

我试过调试,我似乎无法看到代码进入if (success)块。 所以那里可能存在问题。

有谁知道我做错了什么?

经过多次调试后,我注意到它没有推进这种方法

 self.requestInterstitial() 

所以我的帐户可能存在问题? 为什么不通过成功并经历错误块?

控制台中的错误是:

SAMPLE_APP:请求失败并显示错误:无法填写广告请求和建议:确保您已在控制台中正确配置了区域: http : //clients.adcolony.com 。

提前致谢。

  • 看来你的代码应该正常工作。
  • 由于您要实施奖励插页式广告,因此您应将区域类型设置为V4VC。

  • 如果它说"Zone ID invalid, please check config error" ,您应该在源代码和Adcolony客户端面板页面中检查两次App ID和区域ID。

  • 更改区域类型后,等待一段时间(10分钟?)进行测试,服务器需要时间来同步状态。

  • 如果可能,在设备上测试而不是模拟器。

以下是v4vc的文档: https : //github.com/AdColony/AdColony-iOS-SDK-3/wiki/Rewarded-Interstitial-Ads-Quick-Start-Guide