2014-07-11 21 views
5

Xin chào các bạn đã cố gắng triển khai ADBannerView theo cách cũ như Objective C nhưng không thành công. Mọi thứ đều hoạt động nhưng các quảng cáo không hiển thị, nó vẫn là một trường trống.Swift - ADBannerView

func bannerViewDidLoadAd(banner: ADBannerView!) { 
    UIView.beginAnimations(nil, context: nil) 
    UIView.setAnimationDuration(1) 
    banner.alpha = 1 
    UIView.commitAnimations() 
} 

func bannerView(banner: ADBannerView!, didFailToReceiveAdWithError error: NSError!) { 
    UIView.beginAnimations(nil, context: nil) 
    UIView.setAnimationDuration(1) 
    banner.alpha = 0 
    UIView.commitAnimations() 
} 

Bất kỳ ai đã thử iAd on Swift?

+0

Xin chào, tôi cũng đang cố gắng sử dụng nó. Tôi đã tìm thấy những điều sau đây: https://developer.apple.com/library/prerelease/ios/documentation/UserExperience/Reference/ADBannerViewDelegate_Ref/ –

+0

thêm đại biểu vào đầu lớp học của bạn bằng cách ", ADBannerViewDelegate" thay vì cách cũ "" –

+0

Tôi khuyên bạn nên sử dụng các bao đóng cho hoạt ảnh UIView của bạn: 'UIView.animateWithDuration (1) {/ * animations ... * /}' –

Trả lời

17

Tôi đã tìm thấy giải pháp, cách triển khai. (Bạn có thể sử dụng bên trong mỗi phương pháp "banner.alpha 1.0" hoặc những thứ khác nữa.)

//import ... your normal imports as UIKit etc. 
import iAd 

class YourClassViewController: UIViewController, ADBannerViewDelegate { 

    @IBOutlet var adBannerView: ADBannerView //connect in IB connection inspector with your ADBannerView 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     self.canDisplayBannerAds = true 
     self.adBannerView.delegate = self 
     self.adBannerView.hidden = true //hide until ad loaded 
    } 

    func bannerViewWillLoadAd(banner: ADBannerView!) { 
     NSLog("bannerViewWillLoadAd") 
    } 

    func bannerViewDidLoadAd(banner: ADBannerView!) { 
     NSLog("bannerViewDidLoadAd") 
     self.adBannerView.hidden = false //now show banner as ad is loaded 
    } 

    func bannerViewActionDidFinish(banner: ADBannerView!) { 
     NSLog("bannerViewDidLoadAd") 

     //optional resume paused game code 

    } 

    func bannerViewActionShouldBegin(banner: ADBannerView!, willLeaveApplication willLeave: Bool) -> Bool { 
     NSLog("bannerViewActionShouldBegin") 

     //optional pause game code 

     return true 
    } 

    func bannerView(banner: ADBannerView!, didFailToReceiveAdWithError error: NSError!) { 
     NSLog("bannerView") 
    } 

    //... your class implementation code 

} 

See the following answer, on how to do it without IBBuilder!

+1

Nó hoạt động ngay cả khi không có giao thức @objc ... {} –

+0

Tôi không thể ẩn quảng cáo bằng cách sử dụng tính năng này. self.adBannerView.hidden = true Bất kỳ ý tưởng nào? –

+0

@RohitGoyal Tôi đã thử nghiệm nó một lần khác và nó vẫn đang làm việc hoàn hảo cho tôi với Xcode 6.0 (6A313). Bạn có thể kiểm tra xem self.adBannerView! = Null và gỡ lỗi nó.Không có bất kỳ mã nào, chúng tôi không thể không xin lỗi. –

1

Ông T Câu trả lời có chứa rất nhiều mã vô dụng.

Tất cả bạn cần là một phần này để hiển thị quảng cáo trong điều khiển của bạn:

override func viewDidLoad() { 
     super.viewDidLoad() 

     canDisplayBannerAds = true 
} 

Và khi bạn không cần phải quảng cáo, bạn canDisplayBannerAds = false.

Điều gì làm - gói bộ điều khiển của bạn vào bộ điều khiển khác với biểu ngữ quảng cáo ở dưới cùng. Tính năng này khả dụng từ iOS7.

Không thể nhận tin nhắn ủy nhiệm với nó, vì vậy nếu bạn cần - bạn nên thay thế bằng biến số ADBannerView.

+0

Không có phương thức đại biểu nào? Vâng, bạn có thể làm điều đó theo cách bạn đề xuất, nhưng sau đó bạn hiển thị quảng cáo mà không tải xong - không tốt cho người dùng. Và nếu người dùng chạm vào quảng cáo, bạn phải dừng thứ gì đó trong ứng dụng hoặc trò chơi của mình, điều đó chỉ có thể với các phương thức đại biểu. –

+0

@ Mr.T Nếu không tải xong? điều đó có chính xác? – Shmidt

+0

@ Mr.T Việc giảm giá của bạn cho thấy rằng bạn không hiểu '' 'canDisplayBannerAds''' là gì. – Shmidt

3

Nếu bạn đang sử dụng iOS 7, phương pháp khuyến nông và tài sản đã được thêm vào UIViewController để hỗ trợ xử lý iAd:

Xem

https://developer.apple.com/library/prerelease/ios/documentation/iAd/Reference/UIViewController_iAd_Additions/index.html

Để hiển thị một iAd đầu tiên bạn cần phải thêm iAd framework, đi đến các thuộc tính dự án, tab chung, thêm iAd.framework vào khung Liên kết và phần thư viện.

Trong trình điều khiển chế độ xem của bạn, hãy nhập iAd để truy cập tiện ích mở rộng iAd. Và cuối cùng trong viewDidLoad, hãy đặt self.canDisplayBannerAds = true.

Để xoá quảng cáo, thiết lập canDisplayBannerAds false

Lưu ý không có nhu cầu để tạo ra một AdBannerView trong hội đồng quản trị câu chuyện hay lập trình và không có nhu cầu điều khiển xem của bạn để thực hiện các AdViewDelegate.

import UIKit 
import iAd 

class ViewController : UIViewController 
{ 
    override func viewDidLoad() 
    { 
     super.viewDidLoad() 
     //That's it 
     self.canDisplayBannerAds = true 
    } 
} 
+0

Đang hoạt động! Đã bỏ phiếu – Zl3n