728x90
구글 애드몹에서 제공하는 공식 문서를 보면 보상형 광고를 구현하는 방법이 2가지 나와있습니다.
구글 공식 문서 : https://developers.google.com/admob/ios/quick-start?hl=ko
둘 다 눌러서 들어가 보면 Objective-C의 구현밖에 안 나와있습니다. 이전 게시물에서 Google-Mobile-Ads-SDK 8 버전으로 기능을 구현해 놓은 것이 있는데 생각보다 구현이 잘되지 않아 한참을 헤매다가 이전 버전을 기능을 구현해봤는데 정상적으로 움직여서 정리해둡니다.(참가로 구현이 잘되지 않은 부분은 에뮬레이터에서 동작이 잘 되지 않은 문제로 실기에 넣어서 확인했다니 잘 구동되었다는 후문....)
xcode에서 프로젝트를 생성합니다.
프로젝트에서 터미널을 실행시켜 아래 명령어로 코코아팟을 초기화시킵니다.
pod init
아래 코드를 입력합니다.
pod 'Firebase/Admob'
아래 명령어를 입력합니다.
// 일반
pod install --repo-update
// M1 칩셋
arch -x86_64 pod install --repo-update
Info.plist에 아래 코드를 추가합니다.
<key>GADApplicationIdentifier</key>
<string>ca-app-pub-3940256099942544~1458002511</string>
stotyboard에 UIButton을 배치하고 testButtonTapped이라는 액션을 추가합니다.
확장자가 [.xcoworkspace]인 파일을 xcode로 엽니다.
ViewController를 열어 아래 코드를 입력합니다.
import UIKit
import GoogleMobileAds
class ViewController: UIViewController,GADRewardedAdDelegate {
var rewardedAd: GADRewardedAd?
var adRequestInProgress = false
var testUnitId = "ca-app-pub-3940256099942544/1712485313"
override func viewDidLoad() {
super.viewDidLoad()
rewardedAd = createAndLoadRewardedAd()
}
func createAndLoadRewardedAd() -> GADRewardedAd{
rewardedAd = GADRewardedAd(adUnitID: testUnitId)
rewardedAd?.load(GADRequest()) { error in
if let error = error {
print("광고 로드 실패 : \(error)")
} else {
print("광로 로드 성공")
}
}
return rewardedAd!
}
func rewardedAd(_ rewardedAd: GADRewardedAd, userDidEarn reward: GADAdReward) {
print("재생종료. 보상지급")
print("Reward received with currency: \(reward.type), amount \(reward.amount).")
}
func rewardedAdDidPresent(_ rewardedAd: GADRewardedAd) {
print("보상형 광고 표시중")
}
// 이전 보상형 광고의 표시가 종료되만 바로 다음 보상형 광고를 시청할 수 있도록 준비
func rewardedAdDidDismiss(_ rewardedAd: GADRewardedAd) {
print("보상형 광고 종료")
adRequestInProgress = false
var rewardedAd = createAndLoadRewardedAd()
}
func rewardedAd(_ rewardedAd: GADRewardedAd, didFailToPresentWithError error: Error) {
print("보상형 광고 표시 실패")
adRequestInProgress = false
}
@IBAction func testButtonTapped(_ sender: Any) {
if rewardedAd!.isReady == true {
rewardedAd!.present(fromRootViewController: self, delegate: self)
}
}
}
디버그 창에서 광고 로드 성공이라고 표시된 후 UIButton을 누르면 테스트 광고가 재생됩니다.
결과물
728x90
'iOS > swift' 카테고리의 다른 글
28. [iOS/Swift] FCM token 값 얻기 (0) | 2022.01.16 |
---|---|
27. [iOS/Swift] Launch Screen(=Splash Screen) 만들기 (0) | 2021.12.17 |
25. [iOS/Swift] AdMob Rewarded (보상형) 광고 구현하기 (Google-Mobile-Ads-SDK 8.13.0) (0) | 2021.12.10 |
24. [iOS/Swift] AdMob banner(배너) 광고 구현하기 (스마트배너) (0) | 2021.12.10 |
23. [iOS/Swift] AdMob banner(배너) 광고 구현하기 (0) | 2021.12.03 |