2015-08-25 61 views
1

我的應用程序底部有一個iAd橫幅廣告。橫幅在測試設備上顯示正常,並且委託方法似乎被適當地調用。點按時iAd橫幅未加載

我的問題是。當我點擊「您已連接到iAd」橫幅時,不會加載任何內容。通常情況下,我希望看到另一個全屏iAd視圖彈出。當我點擊它時,看到橫幅變黑,然後當我移開手指時它會恢復正常。

bannerViewActionShouldBegin(banner: ADBannerView!, willLeaveApplication willLeave: Bool)確實失火,willLeave = == false。

class ViewController: UIViewController, UIGestureRecognizerDelegate, ADBannerViewDelegate, GADBannerViewDelegate { 
var bannerView: ADBannerView! 

override func viewDidLoad() { 
    super.viewDidLoad() 
    self.bannerView = ADBannerView() 
    self.bannerView.frame = CGRectMake(0, view.frame.height-50, view.frame.width, 50) 
    self.bannerView.delegate = self 
    self.view.addSubview(bannerView) 
    } 
} 

回答

2

添加此 - ADBannerViewDelegate

創建變量 - var adBanner = ADBannerView()

在viewDidLoad中()

 adBanner = iADManager.sharedInstance 
     adBanner.delegate = self 
     if DeviceType.IS_IPAD { 
      adBanner.frame = CGRectMake(0, 20, self.view.frame.width, 65); 
     } 
     else { 
      adBanner.frame = CGRectMake(0, 20, self.view.frame.width, 50); 
     } 

委託方法[如果獲取成功的廣告,那麼這將添加子視圖以其它方式去除查看]

func bannerViewDidLoadAd(banner: ADBannerView!) { 
     self.view.addSubview(banner) 
    } 

    func bannerView(banner: ADBannerView!, didFailToReceiveAdWithError error: NSError!) { 
     banner.removeFromSuperview() 
    } 

func bannerViewActionShouldBegin(banner: ADBannerView!, willLeaveApplication willLeave: Bool) -> Bool { 
    return true 
} 

以下是我的shareInstance類。這將對內存管理和加載廣告更有幫助。

class iADManager{ 

    class var sharedInstance: ADBannerView { 
     struct Static { 
      static var onceToken: dispatch_once_t = 0 
      static var instance: ADBannerView? = nil 
     } 
     dispatch_once(&Static.onceToken) { 
      Static.instance = ADBannerView(adType: ADAdType.Banner) 
     } 
     return Static.instance! 
    } 
} 
+0

Hi @Bob這對你有幫助嗎?或任何疑問? –

+0

沒有運氣,結果相同。 bannerViewDidLoadAd會觸發,但全屏廣告從不顯示。在這種情況下,iAd測試廣告。我寫信給控制檯,所以我知道這些方法被調用並且敲擊被識別。 – Bob

+0

請仔細檢查您是否在隱藏全屏iad的屏幕上添加了任何uiview。通過點擊橫幅的方式,這是默認行爲,這是一個全屏iad。並關閉這之後有一個正常的視圖控制器和橫幅是存在的。 –

1

的問題是我實現......

func bannerViewActionShouldBegin(banner: ADBannerView!, willLeaveApplication willLeave: Bool) -> Bool {NSLog("Banner Leaving... \(willLeave)") 
    return willLeave 
} 

willLeave設置爲false,所以我要麼不得不返回true或無法實現的方法。我選擇只返回true

+0

樂施會@Bob,謝謝,但是你真的需要上述方法嗎?這是返回willLeave –

+0

我真的不需要的方法,所以我決定刪除它。謝謝你的幫助。我將繼續使用您的iAdManger課程 – Bob