iOS/swift

26. [iOS/Swift] AdMob Rewarded (보상형) 광고 구현하기 (Google-Mobile-Ads-SDK 7.69.0)

drizzle0925 2021. 12. 10. 17:13
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