Wednesday, October 4, 2017

Chèn quảng cáo Admob vào ứng dụng ios

Admob là mạng quảng cáo phổ biến nhất trên các ứng dụng di động.
Vào trang web tải gói framework của nó về, giải nén ra, kéo vào cây thư mục bên trái ứng dụng. Màn hình bật ra nhớ tích chọn Copy items if needed.


Một số cách hướng dẫn khác không dùng kéo thả, không có cửa sổ bật ra để xác nhận Copy if needed sẽ dẫn đến lỗi không truy xuất được thư viện quảng cáo.
Nháy vào gốc cây thư mục màu xanh ở trên, chọn Build phases, kiểm tra Link Binary with Libraries đã có gói framework.

Tiếp theo nháy vào Build Settings, ở ô tìm kiếm, gõ vào bitcode. Trong Build Options, để dòng Enable BitcodeNo.

Nhập thư viện quảng cáo vào
import GoogleMobileAds
Thêm dòng sau vào mở đầu class
GADBannerViewDelegate
Khai báo banner sẽ để trên cùng của ứng dụng.
var adMobBannerView = GADBannerView()
let ADMOB_BANNER_UNIT_ID = "ca-app-pub-3940256099942544/2934735716"


Banner cao 50dp nên các nội dung ứng dụng khi định vị bạn để xuống dưới, tức y >50.
Thêm dòng sau vào trong viewDidLoad
initAdMobBanner()
Copy các hàm cần dùng xuống trên ngoặc đóng cuối cùng.
func initAdMobBanner() {
ifUIDevice.currentDevice().userInterfaceIdiom == .Phone {
// iPhone
adMobBannerView.adSize=GADAdSizeFromCGSize(CGSize(width: 320, height: 50))
adMobBannerView.frame = CGRect(x: 0, y: 0, width: 320, height: 50)
        }
else{
// iPad
adMobBannerView.adSize=GADAdSizeFromCGSize(CGSize(width: 468, height: 60))
adMobBannerView.frame = CGRect(x: 0, y: 0, width: 468, height: 60)
        }
//view.frame.size.height
adMobBannerView.adUnitID = ADMOB_BANNER_UNIT_ID
adMobBannerView.rootViewController = self
adMobBannerView.delegate = self
view.addSubview(adMobBannerView)
let request = GADRequest()
adMobBannerView.loadRequest(request)
    }
// Hide the banner
func hideBanner(banner: UIView) {
UIView.beginAnimations("hideBanner", context: nil)
        banner.frame = CGRect(x: view.frame.size.width/2 - banner.frame.size.width/2, y: view.frame.size.height - banner.frame.size.height, width: banner.frame.size.width, height: banner.frame.size.height)
UIView.commitAnimations()
        banner.hidden = true
    }
// Show the banner
func showBanner(banner: UIView) {
UIView.beginAnimations("showBanner", context: nil)
        banner.frame = CGRect(x: view.frame.size.width/2 - banner.frame.size.width/2, y: 0, width: banner.frame.size.width, height: banner.frame.size.height)
//view.frame.size.height - banner.frame.size.height
UIView.commitAnimations()
        banner.hidden = false
    }
// AdMob banner available
func adViewDidReceiveAd(_view: GADBannerView!) {
showBanner(adMobBannerView)
    }
// NO AdMob banner available
func adView(_view: GADBannerView!, didFailToReceiveAdWithError error: GADRequestError!) {
hideBanner(adMobBannerView)
    }
Nếu bạn muốn banner ở dưới đáy, hãy sửa vào 2 dòng.
adMobBannerView.frame = CGRect(x: 0, y: 0, width: 320, height: 50)
adMobBannerView.frame = CGRect(x: 0, y: 0, width: 468, height: 60)
Để y là chiều cao màn hình trừ đi 50, y:c-50, c bạn lấy từ lệnh.
let c = UIScreen.mainScreen().bounds.size.height
Nếu muốn banner nó quay dọc ra vì game hay để màn hình ngang, hãy thêm vào trong viewDidLoad các dòng.
UIView.animateWithDuration(0.0, animations: {
self.adMobBannerView.transform = CGAffineTransformMakeRotation(CGFloat(90) * CGFloat(M_PI)/180)
        })
Chú ý set lại x, y bên trên cho đúng vị trí muốn có.
Chạy thử xem kết quả.

Nếu máy ảo có internet, nó cũng sẽ hiện quảng cáo như trên, đó là banner mẫu của Admob, bạn thay dòng.
let ADMOB_BANNER_UNIT_ID = "ca-app-pub-3940256099942544/2934735716"
bằng mã số của ứng dụng sẽ ra quảng cáo chuẩn.
Chú ý phải chắc chắn có quảng cáo mẫu chạy ra kẻo đến lúc submit có thể bị reject vì bạn khai có quảng cáo mà không thấy đâu !
Hiện nay iphone X có khoảng trên đầu bị che cao 30pt nên ta phải chỉnh giá trị y: 0 thành y: 30 để quảng cáo không bị che mất. Bạn có thể dùng lệnh if để lùi xuống 30pt với riêng iphone X thôi. Khi đó ta biết chiều cao iphone X là 812, rộng 375 nên lệnh if sẽ như sau.
if (cao==812){
le=30
}
Trong đó le là biến để set cho giá trị y: CGFloat(0+le)
Kinh nghiệm cho thấy nên để quảng cáo tối thiểu, nhiều quảng cáo sẽ khiến người dùng khó chịu, dễ gỡ app, hoặc không chịu click !

No comments:

Post a Comment