iOS에서 Google AdMob (ex. AdMob)에서 Yandex Mediation으로 마이그레이션
iOS에서 Google AdMob (ex. AdMob) 광고를 Yandex Ads Mediation으로 교체하려면 코드에 다음 변경 사항을 적용하세요.
SDK 통합
프로젝트의 Podfile을 열고 앱의 대상에 아래 문자열을 추가합니다.
Google AdMob (ex. AdMob)
Yandex Ads
pod 'Google-Mobile-Ads-SDK'
pod 'YandexMobileAds'
Info.plist
을 업데이트합니다.
Google AdMob (ex. AdMob)
Yandex Ads
<key>GADApplicationIdentifier</key>
<string>ca-app-pub-3940256099942544~1458002511</string>
<key>SKAdNetworkItems</key>
<array>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>cstr6suwn9.skadnetwork</string>
</dict>
.....
<key>SKAdNetworkItems</key>
<array>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>zq492l623r.skadnetwork</string>
</dict>
</array>
광고를 로드하기 전에 라이브러리를 초기화하세요.
Google AdMob (ex. AdMob)
Yandex Ads
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
func application(_ application: UIApplication,
didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
GADMobileAds.sharedInstance().start(completionHandler: nil)
return true
}
}
// 필요하지 않음
광고 형식
전면 광고
광고 로드
Google AdMob (ex. AdMob)
Yandex Ads
class ViewController: UIViewController {
private var interstitial: GADInterstitialAd?
override func viewDidLoad() {
super.viewDidLoad()
let request = GADRequest()
GADInterstitialAd.load(withAdUnitID:"ca-app-pub-3940256099942544/4411468910",
request: request,
completionHandler: { [self] ad, error in
if let error = error {
print("Failed to load interstitial ad with error: \(error.localizedDescription)")
return
}
interstitial = ad
}
)
}
}
class ViewController: UIViewController {
var interstitialAd: YMAInterstitialAd?
override func viewDidLoad() {
super.viewDidLoad()
interstitialAd = YMAInterstitialAd(adUnitID: "demo-interstitial-yandex")
interstitialAd?.delegate = self;
let request = YMAAdRequest()
interstitialAd?.load(with: request)
}
}
광고 콜백 설정
Google AdMob (ex. AdMob)
Yandex Ads
interstitial?.fullScreenContentDelegate = self
...
/// 광고가 전체 화면 콘텐츠를 표시하지 못했음을 대리인에게 알립니다.
func ad(_ ad: GADFullScreenPresentingAd, didFailToPresentFullScreenContentWithError error: Error) {
print("Ad did fail to present full screen content.")
}
/// 광고가 전체 화면 콘텐츠를 표시할 것임을 대리인에게 알립니다.
func adWillPresentFullScreenContent(_ ad: GADFullScreenPresentingAd) {
print("Ad will present full screen content.")
}
/// 광고가 전체 화면 콘텐츠를 해제했음을 대리인에게 알립니다.
func adDidDismissFullScreenContent(_ ad: GADFullScreenPresentingAd) {
print("Ad did dismiss full screen content.")
}
self.interstitialAd?.delegate = self;
...
extension ViewController: YMAInterstitialAdDelegate {
func interstitialAdDidLoad(_ interstitialAd: YMAInterstitialAd) {
print("Ad loaded")
}
func interstitialAdDidFail(toLoad interstitialAd: YMAInterstitialAd, error: Error) {
print("Loading failed. Error: \(error)")
}
func interstitialAd(_ interstitialAd: YMAInterstitialAd, didTrackImpressionWith impressionData: YMAImpressionData?) {
print("Ad imprassion was tracked.")
}
func interstitialAdDidClick(_ interstitialAd: YMAInterstitialAd) {
print("Ad clicked")
}
func interstitialAdDidFail(toPresent interstitialAd: YMAInterstitialAd, error: Error) {
print("Failed to present interstitial. Error: \(error)")
}
func interstitialAdWillAppear(_ interstitialAd: YMAInterstitialAd) {
print("Interstitial ad will appear")
}
func interstitialAdDidDisappear(_ interstitialAd: YMAInterstitialAd) {
print("Interstitial ad did disappear")
}
}
광고 표시
Google AdMob (ex. AdMob)
Yandex Ads
@IBAction func doSomething(_ sender: Any) {
if interstitial != nil {
interstitial.present(fromRootViewController: self)
} else {
print("Ad wasn't ready")
}
}
@IBAction func doSomething(_ sender: Any) {
if interstitialAd?.loaded ?? false {
interstitialAd?.present(from: self)
} else {
print("Ad wasn't ready")
}
}
보상형
광고 로드
Google AdMob (ex. AdMob)
Yandex Ads
class ViewController: UIViewController {
private var rewardedAd: GADRewardedAd?
func loadRewardedAd() {
let request = GADRequest()
GADRewardedAd.load(withAdUnitID:"ca-app-pub-3940256099942544/1712485313",
request: request,
completionHandler: { [self] ad, error in
if let error = error {
print("Failed to load rewarded ad with error: \(error.localizedDescription)")
return
}
rewardedAd = ad
print("Rewarded ad loaded.")
}
)
}
}
class ViewController: UIViewController {
var rewardedAd: YMARewardedAd?
override func viewDidLoad() {
super.viewDidLoad()
rewardedAd = YMARewardedAd(adUnitID: "demo-rewarded-yandex")
rewardedAd?.delegate = self
let request = YMAAdRequest()
rewardedAd?.load(with: request)
}
}
광고 콜백 설정
Google AdMob (ex. AdMob)
Yandex Ads
rewardedAd?.fullScreenContentDelegate = self
...
/// 광고가 전체 화면 콘텐츠를 표시하지 못했음을 대리인에게 알립니다.
func ad(_ ad: GADFullScreenPresentingAd, didFailToPresentFullScreenContentWithError error: Error) {
print("Ad did fail to present full screen content.")
}
/// 광고가 전체 화면 콘텐츠를 표시할 것임을 대리인에게 알립니다.
func adWillPresentFullScreenContent(_ ad: GADFullScreenPresentingAd) {
print("Ad will present full screen content.")
}
/// 광고가 전체 화면 콘텐츠를 해제했음을 대리인에게 알립니다.
func adDidDismissFullScreenContent(_ ad: GADFullScreenPresentingAd) {
print("Ad did dismiss full screen content.")
}
rewardedAd?.delegate = self
...
extension ViewController: YMARewardedAdDelegate {
func rewardedAdDidLoad(_ rewardedAd: YMARewardedAd) {
print("Rewarded ad loaded")
}
func rewardedAdDidFail(toLoad rewardedAd: YMARewardedAd, error: Error) {
print("Loading failed. Error: %@", error)
}
func rewardedAd(_ rewardedAd: YMARewardedAd, didReward reward: YMAReward) {
print("The user earned the reward")
}
func rewardedAdDidFail(toPresent rewardedAd: YMARewardedAd, error: Error) {
print("Failed to present rewarded ad. Error: %@", error)
}
func rewardedAdDidClick(_ rewardedAd: YMARewardedAd) {
print("Ad clicked")
}
func rewardedAd(_ rewardedAd: YMARewardedAd, didTrackImpressionWith impressionData: YMAImpressionData?) {
print("Ad imprassion was tracked.")
}
func rewardedAdWillAppear(_ rewardedAd: YMARewardedAd) {
print("Rewarded ad will appear")
}
func rewardedAdDidDisappear(_ rewardedAd: YMARewardedAd) {
print("Rewarded ad did disappear")
}
}
광고 표시
Google AdMob (ex. AdMob)
Yandex Ads
@IBAction func doSomething(_ sender: Any) {
if interstitial != nil {
interstitial.present(fromRootViewController: self)
} else {
print("Ad wasn't ready")
}
}
@IBAction func doSomething(_ sender: Any) {
if rewardedAd?.loaded ?? false {
rewardedAd?.present(from: self)
} else {
print("Ad wasn't ready")
}
}
배너
구성
Google AdMob (ex. AdMob)
Yandex Ads
class ViewController: UIViewController {
var bannerView: GADBannerView!
override func viewDidLoad() {
super.viewDidLoad()
// 이 경우 원하는 광고 크기로 배너를 인스턴스화합니다.
bannerView = GADBannerView(adSize: GADAdSizeBanner)
bannerView.adUnitID = "ca-app-pub-3940256099942544/2934735716"
bannerView.rootViewController = self
}
}
class ViewController: UIViewController {
var bannerView: YMAAdView!
override func viewDidLoad() {
super.viewDidLoad()
// 데모 demo-banner-yandex0을 실제 광고 단위 ID로 교체합니다
let adSize = YMAAdSize.stickySize(withContainerWidth: view.frame.width)
bannerView = YMAAdView(adUnitID: "demo-banner-yandex", adSize: adSize)
}
}
광고 표시
Google AdMob (ex. AdMob)
Yandex Ads
bannerView.translatesAutoresizingMaskIntoConstraints = false
view.addSubview(bannerView)
view.addConstraints(
[NSLayoutConstraint(item: bannerView,
attribute: .bottom,
relatedBy: .equal,
toItem: bottomLayoutGuide,
attribute: .top,
multiplier: 1,
constant: 0),
NSLayoutConstraint(item: bannerView,
attribute: .centerX,
relatedBy: .equal,
toItem: view,
attribute: .centerX,
multiplier: 1,
constant: 0)
])
view.addSubview(bannerView)
bannerView.displayAtBottom(in: view)
// 일반적인 자동 레이아웃을 사용하는 것도 가능합니다
광고 콜백 설정
Google AdMob (ex. AdMob)
Yandex Ads
bannerView.delegate = self
...
func bannerViewDidReceiveAd(_ bannerView: GADBannerView) {
print("bannerViewDidReceiveAd")
}
func bannerView(_ bannerView: GADBannerView, didFailToReceiveAdWithError error: Error) {
print("bannerView:didFailToReceiveAdWithError: \(error.localizedDescription)")
}
func bannerViewDidRecordImpression(_ bannerView: GADBannerView) {
print("bannerViewDidRecordImpression")
}
func bannerViewWillPresentScreen(_ bannerView: GADBannerView) {
print("bannerViewWillPresentScreen")
}
func bannerViewWillDismissScreen(_ bannerView: GADBannerView) {
print("bannerViewWillDIsmissScreen")
}
func bannerViewDidDismissScreen(_ bannerView: GADBannerView) {
print("bannerViewDidDismissScreen")
}
bannerView.delegate = self
...
extension BannerViewController: YMAAdViewDelegate {
func adViewDidLoad(_ adView: YMAAdView) {
print("Ad loaded")
}
func adViewDidFailLoading(_ adView: YMAAdView, error: Error) {
print("Ad failed loading. Error: \(error)")
}
func adViewDidClick(_ adView: YMAAdView) {
print("Ad clicked")
}
func adView(_ adView: YMAAdView, didTrackImpressionWith impressionData: YMAImpressionData?) {
print("Ad imprassion was tracked")
}
}
광고 로드
Google AdMob (ex. AdMob)
Yandex Ads
bannerView.load(GADRequest())
bannerView.loadAd(with: YMAAdRequest())
Was the article helpful?
Previous
Next