광고를 게재하고 수익을 올리려면 먼저 Google 모바일 광고 SDK를 앱에 통합해야 합니다. SDK를 통합하면 지원되는 광고 형식을 하나 이상 구현할 수 있습니다.
기본 요건
- Xcode 14.1 이상 사용
- iOS 11.0 이상 타겟팅
모바일 광고 SDK 가져오기
CocoaPods (권장)
SDK를 iOS 프로젝트로 가져오는 가장 간단한 방법은 CocoaPods를 사용하는 것입니다. 프로젝트의 Podfile을 열고 다음 행을 앱의 타겟에 추가하세요.
pod 'Google-Mobile-Ads-SDK'
그런 다음 명령줄에서 다음을 실행합니다.
pod install --repo-update
CocoaPods를 처음 사용하는 경우에는 Podfile을 만들고 사용하는 방법에 대한 공식 설명서를 읽어보세요.
Swift Package Manager
Google 모바일 광고 SDK는 버전 9.0.0부터 Swift Package Manager를 지원합니다. Swift 패키지를 가져오려면 다음 단계를 따르세요.
Xcode에서 File(파일) > Add Packages(패키지 추가)...로 이동하여 Google 모바일 광고 Swift 패키지를 설치합니다.
표시되는 메시지에서 Google 모바일 광고 Swift 패키지 GitHub 저장소를 검색합니다.
https://github.com/googleads/swift-package-manager-google-mobile-ads.git
사용할 Google 모바일 광고 Swift 패키지의 버전을 선택합니다. 새 프로젝트의 경우 Up to Next Major Version(최대 다음 메이저 버전까지)을 사용하는 것이 좋습니다.
작업을 완료하면 Xcode에서 패키지 종속 항목을 확인하고 백그라운드에서 다운로드하기 시작합니다. 패키지 종속 항목을 추가하는 방법에 관한 자세한 내용은 Apple 도움말을 참고하세요.
수동 다운로드
SDK 프레임워크를 직접 다운로드하여 압축을 풀고 다음 프레임워크를 Xcode 프로젝트로 가져옵니다.
GoogleAppMeasurement.xcframework
GoogleAppMeasurementIdentitySupport.xcframework
GoogleMobileAds.xcframework
GoogleUtilities.xcframework
nanopb.xcframework
PromisesObjC.xcframework
UserMessagingPlatform.xcframework
프로젝트의 빌드 설정에서
-ObjC
링커 플래그를 기타 링커 플래그에 추가합니다.
Info.plist 업데이트
앱의 Info.plist
파일을 업데이트하여 두 개의 키를 추가합니다.
Ad Manager app ID found in the Ad Manager UI and of the form
ca-app-pub-################~##########
의 문자열 값이 있는GADApplicationIdentifier
키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>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>
초기화 성능을 최적화하려면 수익 그룹을 수익 그룹이 사용되는 특정 앱과 연결하는 것이 중요합니다. iOS를 타겟팅하지만 특정 앱과 연결되지 않은 수익 그룹 구성이 계정의 모든 iOS 앱으로 전송되므로 초기화에 필요한 시간이 길어질 수 있습니다.
모바일 광고 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를 가져와서 초기화했으므로 광고를 구현할 준비가 되었습니다. Ad Manager 는 다양한 광고 형식을 제공하므로 앱의 사용자 환경에 가장 적합한 형식을 선택할 수 있습니다.
배너
기기 화면의 상단이나 하단에 표시되는 직사각형 광고입니다. 배너 광고는 사용자가 앱과 상호작용하는 동안 화면에 표시되며 일정 시간이 지나면 자동으로 새로고침될 수 있습니다. 모바일 광고를 처음 시작하는 경우 이 형식부터 이용해 보시기 바랍니다.
전면 광고
사용자가 닫을 때까지 앱의 인터페이스를 완전히 덮는 전체 화면 광고입니다. 게임 레벨이 바뀌는 사이 또는 작업 완료 직후와 같이 앱 실행을 자연스럽게 멈추는 시점에 게재하는 것이 좋습니다.
네이티브
앱의 디자인과 분위기에 어울리게 맞춤설정할 수 있는 광고입니다. 광고 배치 방법 및 위치를 정할 수 있으므로 레이아웃이 앱 디자인과 더 일관됩니다.
Google Ad Manager에서는 네이티브 광고를 구현하는 두 가지 방법인 네이티브 스타일과 맞춤 렌더링을 제공합니다.
네이티브 스타일은 네이티브 광고를 최대한 쉽게 구현할 수 있도록 설계되었습니다. 네이티브 광고가 처음이면 네이티브 스타일을 선택하는 것이 좋습니다. 맞춤 렌더링은 최대한 자유롭게 표현할 수 있도록 설계되었습니다.
네이티브 스타일 구현 | 맞춤 렌더링 구현 |
리워드 제공됨
짧은 동영상을 시청하거나 플레이어블 광고 또는 설문조사와 상호작용한 사용자에게 보상을 제공하는 광고입니다. 무료 플레이 사용자로부터 수익을 창출하는 데 효과적입니다.
보상형 광고 구현 | 보상형 광고 (새 API) 구현 |