/광고

구글 AdMob 연동하기 - 작업 전 설정

아렉스_Arex 2023. 11. 9. 02:54
반응형

 

안녕하세요 아렉스입니다 !

 

AdMob을 사용하기 위해서는 계정이 필요합니다 !

 

https://admob.google.com/home/

 

Google AdMob: 모바일 앱 수익 창출

인앱 광고를 사용하여 모바일 앱에서 더 많은 수익을 창출하고, 사용이 간편한 도구를 통해 유용한 분석 정보를 얻고 앱을 성장시켜 보세요.

admob.google.com

 

 

앱 추가하기


최초로 만든 경우 홈 -> 시작하기 

추가하는 경우 앱 -> 앱 추가하기

 

 

앱 추가를 하게 되면 플랫폼과 등록 여부, 앱 이름 등 몇가지 기본 사항만 작성하고 앱 추가 버튼을 눌러주면 아주 쉽게 추가됩니다.

 

 

공식문서 따라서 iOS 프로젝트에 추가하기


SDK, 라이브러리와 같은 외부종속성을 추가할 때는 공식문서를 기반으로 보는게 가장 정확하다고 생각합니다.

 

https://developers.google.com/admob/ios/quick-start?hl=ko

 

시작하기  |  iOS  |  Google for Developers

기본 요건, 설정 세부정보, 광고 유형 개요 등 iOS용 SDK를 시작하는 방법을 알아보세요.

developers.google.com

 

 

Firebase도 함께 사용하는 경우의 공식문서

https://firebase.google.com/docs/admob/ios/quick-start?hl=ko

 

iOS 프로젝트에서 AdMob 시작하기  |  Firebase with Google AdMob

Demo Day를 위해 일정을 비워두고 Firebase의 새로운 소식과 기능들을 확인해 보세요. 자세히 알아보기 의견 보내기 iOS 프로젝트에서 AdMob 시작하기 컬렉션을 사용해 정리하기 내 환경설정을 기준으

firebase.google.com

 

 

구글 문서를 보다보면 ,, 한글화도 되어있고 정말 쉽고 간단하게 설명해주곤 합니다.

코드예시는 시간이 지남에 따라,
문서를 작성한 시점과 문서를 보는 시점 SDK 버전에 따라서 코드가 에러날 수 있습니다.

그럴 때는 공식문서로 가서 최신 가이드대로 따라하시면 해결될거에요

 

1. 종속성 추가

 

AdMob은 공식적으로, CocoaPods, SPM, 수동 다운로드를 지원합니다.

SPM은 미디에이션를 지원하지않는다고합니다.

 

pod 'Google-Mobile-Ads-SDK'

https://github.com/googleads/swift-package-manager-google-mobile-ads.git // Up to Next Major Version 권장

 

 

2. 타겟 빌드 설정에 Other Linker Flags에 -ObjC 추가

제가 -Objc라고 C를 소문자로 썻다가 에러를 만났어요 ..^^; 다들 조심 하세요 !!

 

3. info.plist 항목 추가

 

GADApplicationIdentifier 에 App ID 등록

*(필요시) SKAdNetworkItems 에 광고 추가

XML 예시 

더보기
<key>GADApplicationIdentifier</key>
<string>ca-app-pub-3940256099942544~1458002511</string>
<key>SKAdNetworkItems</key>
<array>
  <dict>
    <key>SKAdNetworkIdentifier</key>
    <string>cstr6suwn9.skadnetwork</string>
  </dict>
  <dict>
    <key>SKAdNetworkIdentifier</key>
    <string>4fzdc2evr5.skadnetwork</string>
  </dict>
  <dict>
    <key>SKAdNetworkIdentifier</key>
    <string>4pfyvq9l8r.skadnetwork</string>
  </dict>
  <dict>
    <key>SKAdNetworkIdentifier</key>
    <string>2fnua5tdw4.skadnetwork</string>
  </dict>
  <dict>
    <key>SKAdNetworkIdentifier</key>
    <string>ydx93a7ass.skadnetwork</string>
  </dict>
  <dict>
    <key>SKAdNetworkIdentifier</key>
    <string>5a6flpkh64.skadnetwork</string>
  </dict>
  <dict>
    <key>SKAdNetworkIdentifier</key>
    <string>p78axxw29g.skadnetwork</string>
  </dict>
  <dict>
    <key>SKAdNetworkIdentifier</key>
    <string>v72qych5uu.skadnetwork</string>
  </dict>
  <dict>
    <key>SKAdNetworkIdentifier</key>
    <string>ludvb6z3bs.skadnetwork</string>
  </dict>
  <dict>
    <key>SKAdNetworkIdentifier</key>
    <string>cp8zw746q7.skadnetwork</string>
  </dict>
  <dict>
    <key>SKAdNetworkIdentifier</key>
    <string>3sh42y64q3.skadnetwork</string>
  </dict>
  <dict>
    <key>SKAdNetworkIdentifier</key>
    <string>c6k4g5qg8m.skadnetwork</string>
  </dict>
  <dict>
    <key>SKAdNetworkIdentifier</key>
    <string>s39g8k73mm.skadnetwork</string>
  </dict>
  <dict>
    <key>SKAdNetworkIdentifier</key>
    <string>3qy4746246.skadnetwork</string>
  </dict>
  <dict>
    <key>SKAdNetworkIdentifier</key>
    <string>f38h382jlk.skadnetwork</string>
  </dict>
  <dict>
    <key>SKAdNetworkIdentifier</key>
    <string>hs6bdukanm.skadnetwork</string>
  </dict>
  <dict>
    <key>SKAdNetworkIdentifier</key>
    <string>v4nxqhlyqp.skadnetwork</string>
  </dict>
  <dict>
    <key>SKAdNetworkIdentifier</key>
    <string>wzmmz9fp6w.skadnetwork</string>
  </dict>
  <dict>
    <key>SKAdNetworkIdentifier</key>
    <string>yclnxrl5pm.skadnetwork</string>
  </dict>
  <dict>
    <key>SKAdNetworkIdentifier</key>
    <string>t38b2kh725.skadnetwork</string>
  </dict>
  <dict>
    <key>SKAdNetworkIdentifier</key>
    <string>7ug5zh24hu.skadnetwork</string>
  </dict>
  <dict>
    <key>SKAdNetworkIdentifier</key>
    <string>gta9lk7p23.skadnetwork</string>
  </dict>
  <dict>
    <key>SKAdNetworkIdentifier</key>
    <string>vutu7akeur.skadnetwork</string>
  </dict>
  <dict>
    <key>SKAdNetworkIdentifier</key>
    <string>y5ghdn5j9k.skadnetwork</string>
  </dict>
  <dict>
    <key>SKAdNetworkIdentifier</key>
    <string>n6fk4nfna4.skadnetwork</string>
  </dict>
  <dict>
    <key>SKAdNetworkIdentifier</key>
    <string>v9wttpbfk9.skadnetwork</string>
  </dict>
  <dict>
    <key>SKAdNetworkIdentifier</key>
    <string>n38lu8286q.skadnetwork</string>
  </dict>
  <dict>
    <key>SKAdNetworkIdentifier</key>
    <string>47vhws6wlr.skadnetwork</string>
  </dict>
  <dict>
    <key>SKAdNetworkIdentifier</key>
    <string>kbd757ywx3.skadnetwork</string>
  </dict>
  <dict>
    <key>SKAdNetworkIdentifier</key>
    <string>9t245vhmpl.skadnetwork</string>
  </dict>
  <dict>
    <key>SKAdNetworkIdentifier</key>
    <string>eh6m2bh4zr.skadnetwork</string>
  </dict>
  <dict>
    <key>SKAdNetworkIdentifier</key>
    <string>a2p9lx4jpn.skadnetwork</string>
  </dict>
  <dict>
    <key>SKAdNetworkIdentifier</key>
    <string>22mmun2rn5.skadnetwork</string>
  </dict>
  <dict>
    <key>SKAdNetworkIdentifier</key>
    <string>4468km3ulz.skadnetwork</string>
  </dict>
  <dict>
    <key>SKAdNetworkIdentifier</key>
    <string>2u9pt9hc89.skadnetwork</string>
  </dict>
  <dict>
    <key>SKAdNetworkIdentifier</key>
    <string>8s468mfl3y.skadnetwork</string>
  </dict>
  <dict>
    <key>SKAdNetworkIdentifier</key>
    <string>klf5c3l5u5.skadnetwork</string>
  </dict>
  <dict>
    <key>SKAdNetworkIdentifier</key>
    <string>ppxm28t8ap.skadnetwork</string>
  </dict>
  <dict>
    <key>SKAdNetworkIdentifier</key>
    <string>ecpz2srf59.skadnetwork</string>
  </dict>
  <dict>
    <key>SKAdNetworkIdentifier</key>
    <string>uw77j35x4d.skadnetwork</string>
  </dict>
  <dict>
    <key>SKAdNetworkIdentifier</key>
    <string>pwa73g5rt2.skadnetwork</string>
  </dict>
  <dict>
    <key>SKAdNetworkIdentifier</key>
    <string>mlmmfzh3r3.skadnetwork</string>
  </dict>
  <dict>
    <key>SKAdNetworkIdentifier</key>
    <string>578prtvx9j.skadnetwork</string>
  </dict>
  <dict>
    <key>SKAdNetworkIdentifier</key>
    <string>4dzt52r2t5.skadnetwork</string>
  </dict>
  <dict>
    <key>SKAdNetworkIdentifier</key>
    <string>e5fvkxwrpn.skadnetwork</string>
  </dict>
  <dict>
    <key>SKAdNetworkIdentifier</key>
    <string>8c4e2ghe7u.skadnetwork</string>
  </dict>
  <dict>
    <key>SKAdNetworkIdentifier</key>
    <string>zq492l623r.skadnetwork</string>
  </dict>
  <dict>
    <key>SKAdNetworkIdentifier</key>
    <string>3rd42ekr43.skadnetwork</string>
  </dict>
  <dict>
    <key>SKAdNetworkIdentifier</key>
    <string>3qcr597p9d.skadnetwork</string>
  </dict>
</array>

 

 

4. 앱 실행시 SDK 초기화

이 작업은 앱 실행 시 한 번만 처리하면 됩니다.

 startWithCompletionHandler:를 가능한 한 빨리 호출해야 합니다.

import GoogleMobileAds

@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {

  func application(_ application: UIApplication,
      didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {

    GADMobileAds.sharedInstance().start(completionHandler: nil)

    return true
  }

}

 

 

5. 광고 형식에 따라 구현

 

대략적인 수익 순서

배너 < 전면 광고 < 보상형 광고
+ IDFA 수집시 수익 증가 예상

 

 

 

만약 따라했는데 아래와 같은 에러가 발생한다면

info.plist GADApplicationIdentifier 확인, Other Linker Flags가 올바르게 -ObjC 기입하셨는지 확인해보세요 !

 

 

보상형 광고 구현 사이트가 error로 인해 접속이 힘들다면 !

아래 블로그 글을 참고해주세요

구글 AdMob 보상형 광고 구현하기

 

구글 AdMob 보상형 광고 구현하기

안녕하세요 아렉스입니다. 오늘은 구글 광고 종류 중에서 AdMob 보상형 광고 구현에 대해서 공유드립니다. 공식문서가 그렇게 잘 되어있는데.. ! 왜 작성하냐면요,, https://developers.google.com/admob/ios/r

plcprogrammer-dy.tistory.com