리워드 광고 아이디 만들기
Admob 사이트로 이동해서 리워드 광고 아이디를 만들겠습니다.
Google AdMob: 모바일 앱 수익 창출
인앱 광고를 사용하여 모바일 앱에서 더 많은 수익을 창출하고, 사용이 간편한 도구를 통해 유용한 분석 정보를 얻고 앱을 성장시켜 보세요.
admob.google.com
시작하기를 클릭합니다.

앱 클릭 > TestBannerAdApp 클릭
(AdMod 배너 광고를 구현할 때 만들 앱이 있어서 이 앱을 선택하겠습니다. 앱이 없으신 분들은 앱 추가를 클릭하셔서 앱을 생성하시면 됩니다. 앱 추가 방법은 AdMob배너 광고 구현을 참고하시면 됩니다.)

광고 단위 클릭 > 광고 단위 추가 클릭

보상형 전면 광고 선택 클릭

광고 단위 이름을 입력 > 광고 단위 만들기 클릭
(리워드 수량은 보상형 광고 시청시 지급할 수치를 설정하는 란입니다.)

완료를 클릭합니다.
(1과 2에 있는 아이디는 기능 구현시 필요하므로 잘 보관합니다. 메모하지 않아도 나중에 확인하는 것도 가능합니다.)

xcode에서 프로젝트 생성하기
App 선택 > Next 클릭

Product Name 입력 > Next 클릭

터미널을 열어 RewardedAd 폴더로 이동 > 아래 명령어로 코코팟을 초기화합니다.
pod init

Podfile을 열어 수정합니다.
open Podfile

다음 코드를 추가하고 저장합니다.
pod 'Google-Mobile-Ads-SDK'

파일을 저장했다면 터미널로 돌아와 아래 명령어를 입력합니다.
// Macbook
pod install
// Macbook M1
arch -x86_64 pod install --repo-update


.xcworkspace로 된 파일을 xcode로 엽니다.

AppDelegate.swift 파일을 열어 아래 코드를 추가합니다.
import GoogleMobileAds
...
GADMobileAds.sharedInstance().start(completionHandler: nil)

Main으로 이동후 ViewController에 버튼을 추가합니다.


버튼의 클릭 이벤트를 생성합니다.

아래 코드를 입력합니다.
import UIKit
import GoogleMobileAds
class ViewController: UIViewController, GADFullScreenContentDelegate {
// The rewarded video ad
var rewardedAd: GADRewardedAd?
override func viewDidLoad() {
super.viewDidLoad()
}
fileprivate func loadRewardVideoAd() {
GADRewardedAd.load(withAdUnitID: "ca-app-pub-3940256099942544/1712485313", request: GADRequest()) { (ad, error) in
if let error = error {
print("오류로 인해 보상광고를 로드하지 못했습니다 : \(error.localizedDescription)")
return
}
print("보상광고가 로드되었습니다.")
self.rewardedAd = ad
self.rewardedAd?.fullScreenContentDelegate = self
}
}
func presentRewardVideo() {
DispatchQueue.background(background: {
// do something in background
self.loadRewardVideoAd()
}, completion:{
// when background job finished, do something in main thread
if let ad = self.rewardedAd {
// reward the user
ad.present(fromRootViewController: self) {
print("보상 지급 : \(ad)")
}
} else {
// the Ad failed to present .. show alert message
let alert = UIAlertController(title: "알림", message: "보상광고 정보를 불러오고 있습니다.\n잠시 후에 다시 시도해 주세요.",preferredStyle: .alert)
let alertAction = UIAlertAction(title: "OK", style: .cancel, handler: { [weak self] action in
self?.loadRewardVideoAd()
})
alert.addAction(alertAction)
self.present(alert, animated: true, completion: nil)
}
})
}
@IBAction func playRewardedAdBtn(_ sender: Any) {
presentRewardVideo()
}
}
extension DispatchQueue {
static func background(delay: Double = 0.0, background: (()->Void)? = nil, completion: (() -> Void)? = nil) {
DispatchQueue.global(qos: .background).async {
background?()
if let completion = completion {
DispatchQueue.main.asyncAfter(deadline: .now() + delay, execute: {
completion()
})
}
}
}
}
결과물

'iOS > swift' 카테고리의 다른 글
| 27. [iOS/Swift] Launch Screen(=Splash Screen) 만들기 (0) | 2021.12.17 |
|---|---|
| 26. [iOS/Swift] AdMob Rewarded (보상형) 광고 구현하기 (Google-Mobile-Ads-SDK 7.69.0) (0) | 2021.12.10 |
| 24. [iOS/Swift] AdMob banner(배너) 광고 구현하기 (스마트배너) (0) | 2021.12.10 |
| 23. [iOS/Swift] AdMob banner(배너) 광고 구현하기 (0) | 2021.12.03 |
| 22. [iOS/Swift] 네비게이션에 있는 뒤로가기 버튼 숨기기 (0) | 2021.12.02 |