시작하기

본 가이드는 AdMob으로 iOS 앱에서 수익을 창출하려는 게시자 중 Firebase를 사용하지 않는 게시자를 위해 작성되었습니다. 앱에 Firebase를 포함할 계획이거나 이를 고려 중이라면 본 가이드의 Firebase와 함께 AdMob 이용하기 버전을 참조하세요.

광고를 게재하고 수익을 올리려면 먼저 Google 모바일 광고 SDK를 앱에 통합해야 합니다. SDK를 통합하면 지원되는 광고 형식을 하나 이상 구현할 수 있습니다.

기본 요건

  • Xcode 12 이상 사용
  • iOS 10.0 이상 타겟팅

모바일 광고 SDK 가져오기

CocoaPods(권장)

SDK를 iOS 프로젝트로 가져오는 가장 간단한 방법은 CocoaPods를 사용하는 것입니다. 프로젝트의 Podfile을 열고 다음 행을 앱의 타겟에 추가하세요.

pod 'Google-Mobile-Ads-SDK'

그런 다음 명령줄에서 다음을 실행하세요.

pod install --repo-update

CocoaPods를 처음 사용하는 경우에는 Podfiles를 만들고 사용하는 방법에 대한 공식 설명서를 읽어 보세요.

수동 다운로드

  1. SDK 프레임워크를 직접 다운로드하여 압축을 풀고 다음 프레임워크를 Xcode 프로젝트로 가져옵니다.

    • GoogleAppMeasurement.framework
    • GoogleMobileAds.framework
    • GoogleUtilities.xcframework
    • nanopb.xcframework
    • PromisesObjC.xcframework
    • UserMessagingPlatform.framework
  2. 프로젝트의 빌드 설정에서 -ObjC 링커 플래그를 기타 링커 플래그에 다음과 같이 추가합니다.

Info.plist 업데이트

앱의 Info.plist 파일을 업데이트하여 다음과 같은 키 2개를 추가합니다.

  1. AdMob 앱 ID(AdMob UI에서 식별됨)의 문자열 값이 포함된 GADApplicationIdentifier 키를 추가
  2. Google(cstr6suwn9.skadnetwork)용 SKAdNetworkIdentifier 값이 포함된 SKAdNetworkItems 키를 추가하고 이러한 값을 Google에 제공한 추가 구매자 선택
<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>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>3sh42y64q3.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>prcb7njmu6.skadnetwork</string>
    </dict>
    <dict>
      <key>SKAdNetworkIdentifier</key>
      <string>v9wttpbfk9.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>4468km3ulz.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>9rd848q2bz.skadnetwork</string>
    </dict>
    <dict>
      <key>SKAdNetworkIdentifier</key>
      <string>n6fk4nfna4.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>k674qkevps.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>av6w8kgt66.skadnetwork</string>
    </dict>
    <dict>
      <key>SKAdNetworkIdentifier</key>
      <string>klf5c3l5u5.skadnetwork</string>
    </dict>
    <dict>
      <key>SKAdNetworkIdentifier</key>
      <string>y2ed4ez56y.skadnetwork</string>
    </dict>
    <dict>
      <key>SKAdNetworkIdentifier</key>
      <string>ppxm28t8ap.skadnetwork</string>
    </dict>
    <dict>
      <key>SKAdNetworkIdentifier</key>
      <string>424m5254lk.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>e5fvkxwrpn.skadnetwork</string>
    </dict>
    <dict>
      <key>SKAdNetworkIdentifier</key>
      <string>zq492l623r.skadnetwork</string>
    </dict>
    <dict>
      <key>SKAdNetworkIdentifier</key>
      <string>hjevpa356n.skadnetwork</string>
    </dict>
    <dict>
      <key>SKAdNetworkIdentifier</key>
      <string>3qcr597p9d.skadnetwork</string>
    </dict>
  </array>

아직 AdMob 계정을 생성하지 않았고 앱을 등록하지 않았다면 지금 시작해 보세요.

모바일 광고 SDK 초기화

광고를 로드하기 전에 GADMobileAds.sharedInstance에서 startWithCompletionHandler: 메서드를 호출합니다. 이렇게 하면 SDK가 초기화되고 초기화가 완료된 후(또는 30초의 제한 시간이 경과한 후에) 완료 핸들러를 다시 호출합니다. 이 작업은 앱 실행 시 한 번만 수행하는 것이 좋습니다. startWithCompletionHandler:를 최대한 빨리 호출해야 합니다.

다음은 AppDelegate에서 startWithCompletionHandler: 메서드를 호출하는 방법의 예시입니다.

예시 AppDelegate.m(발췌)

Swift

import GoogleMobileAds

@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {

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

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

    return true
  }

}

Objective-C

@import GoogleMobileAds;

@implementation AppDelegate

- (BOOL)application:(UIApplication *)application
    didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

  [[GADMobileAds sharedInstance] startWithCompletionHandler:nil];
  return YES;
}

@end

미디에이션을 사용하는 경우 광고를 로드하기 전에 완료 핸들러를 호출할 때까지 기다려야 모든 미디에이션 어댑터가 초기화됩니다.

광고 형식 선택

모바일 광고 SDK를 가져와서 초기화했으므로 이제 광고를 구현할 준비가 되었습니다. AdMob에서는 다양한 광고 형식을 제공하므로 앱의 사용자 경험에 가장 적합한 형식을 선택할 수 있습니다.

기기 화면의 상단이나 하단에 표시되는 직사각형 광고입니다. 사용자가 앱과 상호작용하는 동안 배너 광고가 화면에 표시되며 일정 시간이 지나면 자동으로 새로고침될 수 있습니다. 모바일 광고를 처음 시작하는 경우 배너 광고를 이용하는 것이 좋습니다.

배너 구현

전면 광고

사용자가 닫을 때까지 앱의 인터페이스를 완전히 덮는 전체 화면 광고입니다. 게임 레벨이 바뀌는 사이 또는 작업 완료 직후와 같이 앱 사용을 자연스럽게 멈추는 시점에 게재하는 것이 좋습니다.

전면 광고 구현

네이티브 광고

앱의 디자인과 스타일에 어울리게 설정할 수 있는 맞춤 광고입니다. 광고 배치 방법 및 위치를 정할 수 있으므로 광고 레이아웃과 앱 디자인 간의 일관성 유지가 가능합니다.

Native Ads 구현

보상형 광고

사용자에게 짧은 동영상 시청, 플레이어블 광고와 상호작용, 설문조사 응답 등 광고 참여에 대한 리워드를 제공하는 광고 형식입니다. 무료 게임 사용자로부터 수익을 창출하는 데 효과적입니다.

보상형 광고 구현 보상형 광고(새 API) 구현