이 가이드는 AdMob으로 iOS 앱에서 수익을 창출하려는 게시자를 위해 작성되었습니다. Firebase를 사용하고 있지 않습니다. 앱에 Firebase를 포함할 계획이거나 )를 고려하고 있는 경우 AdMob과 Firebase 버전을 참조하세요.
Google 모바일 광고 SDK를 앱에 통합하는 것은 광고 게재 및 수익 창출 SDK를 통합한 후에는 하나 이상의 지원되는 광고 형식을 사용합니다.
기본 요건
- Xcode 15.3 이상 사용
- iOS 12.0 이상 타겟팅
- 권장사항: AdMob 계정을 만들고 앱을 등록하세요.
모바일 광고 SDK 가져오기
다음 방법 중 하나를 사용하여 Google 모바일 광고 SDK를 가져옵니다.
CocoaPods (권장)
SDK를 iOS 프로젝트로 가져오는 가장 간단한 방법은 CocoaPods 프로젝트의 Podfile을 열고 다음 행을 앱의 타겟에 추가하세요.
pod 'Google-Mobile-Ads-SDK'
그런 다음 명령줄에서 다음을 실행합니다.
pod install --repo-update
CocoaPods를 처음 사용하는 경우에는 자세한 내용은 공식 문서를 참고하세요. 가이드를 마치겠습니다
Swift Package Manager
Google 모바일 광고 SDK에서 Swift 패키지 지원 Manager를 사용할 수 있습니다. Swift 패키지를 가져오려면 다음 단계를 따르세요.
Xcode에서 파일 > 패키지 추가...를 클릭합니다.
표시되는 메시지에서 다음 Google 모바일 광고 Swift 패키지 GitHub 저장소를 검색합니다.
https://github.com/googleads/swift-package-manager-google-mobile-ads.git
사용할 Google 모바일 광고 Swift 패키지의 버전을 선택합니다. 새 프로젝트의 경우 Up to Next Major Version(최대 다음 메이저 버전)을 사용하는 것이 좋습니다.
완료되면 Xcode가 패키지 종속 항목 확인을 시작하고 백그라운드에서 다운로드될 수 있습니다. 패키지 종속 항목을 추가하는 방법에 관한 자세한 내용은 Apple 도움말을 참고하세요.
수동 다운로드
Google 모바일 광고 SDK 다운로드 다음 프레임워크를 Xcode 프로젝트에
Embed & Sign
합니다.GoogleMobileAds.xcframework
UserMessagingPlatform.xcframework
프로젝트의 빌드 설정에서 다음을 수행합니다.
/usr/lib/swift
경로를 Runpath Search Paths에 추가합니다.-ObjC
링커 플래그를 Other Linker Flags(기타 링커 플래그)에 추가합니다.
Info.plist 업데이트
앱의 Info.plist
파일을 업데이트하여 두 개의 키를 추가합니다.
문자열 값이 있는
GADApplicationIdentifier
키 AdMob app ID found in the AdMob UI입니다.Google용
SKAdNetworkIdentifier
값이 있는SKAdNetworkItems
키 (cstr6suwn9.skadnetwork
) 및 일부 서드 파티 구매자 맡게 되어 있습니다
전체 스니펫
<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>2fnua5tdw4.skadnetwork</string> </dict> <dict> <key>SKAdNetworkIdentifier</key> <string>ydx93a7ass.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>hs6bdukanm.skadnetwork</string> </dict> <dict> <key>SKAdNetworkIdentifier</key> <string>mlmmfzh3r3.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>su67r6k2v3.skadnetwork</string> </dict> <dict> <key>SKAdNetworkIdentifier</key> <string>yclnxrl5pm.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>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>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>ppxm28t8ap.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>578prtvx9j.skadnetwork</string> </dict> <dict> <key>SKAdNetworkIdentifier</key> <string>4dzt52r2t5.skadnetwork</string> </dict> <dict> <key>SKAdNetworkIdentifier</key> <string>Tl55sbb4fm.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>3rd42ekr43.skadnetwork</string> </dict> <dict> <key>SKAdNetworkIdentifier</key> <string>3qcr597p9d.skadnetwork</string> </dict> </array>
AdMob을 만들지 않은 경우 계정을하고 지금이 기회입니다 하세요.
실제 앱에서는 샘플 앱 ID를 실제AdMob 앱 ID로 바꿉니다. Hello World 앱에서 SDK를 실험하는 경우 샘플 ID를 사용할 수 있습니다.
모바일 광고 SDK 초기화
광고를 로드하기 전에startWithCompletionHandler:
GADMobileAds.sharedInstance
,
SDK를 초기화하고 완료 핸들러를 한 번 다시 호출합니다.
초기화가 완료된 경우 (또는 30초의 제한 시간 후) 이 작업은
한 번 실행하는 것이 좋으며 앱 실행 시 하는 것이 가장 좋습니다. startWithCompletionHandler:
를 호출해야 합니다.
가능한 한 빨리
다음은 startWithCompletionHandler:
메서드를 호출하는 방법의 예입니다.
내 AppDelegate
:
AppDelegate 예시 (발췌)
Swift
import GoogleMobileAds
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
func application(_ application: UIApplication,
didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
GADMobileAds.sharedInstance().start(completionHandler: nil)
return true
}
}
SwiftUI
import GoogleMobileAds
class AppDelegate: UIResponder, UIApplicationDelegate {
func application(_ application: UIApplication,
didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
GADMobileAds.sharedInstance().start(completionHandler: nil)
return true
}
}
@main
struct YourApp: App {
// To handle app delegate callbacks in an app that uses the SwiftUI lifecycle,
// you must create an application delegate and attach it to your `App` struct
// using `UIApplicationDelegateAdaptor`.
@UIApplicationDelegateAdaptor(AppDelegate.self) var appDelegate
var body: some Scene {
WindowGroup {
NavigationView {
ContentView()
}
}
}
}
Objective-C
@import GoogleMobileAds;
@implementation AppDelegate
- (BOOL)application:(UIApplication *)application
didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
[GADMobileAds.sharedInstance startWithCompletionHandler:nil];
return YES;
}
@end
광고 형식 선택
이제 모바일 광고 SDK를 가져와서 초기화했으므로 여러 가지 옵션을 제공합니다. AdMob 앱 사용자에게 가장 적합한 형식을 선택할 수 있습니다 경험해 볼 수 있습니다
SwiftUI 개발자의 경우 SwiftUI 가이드를 따르세요.
배너
배너 광고 단위에는 앱 화면의 일부분을 차지하는 있습니다. 일정 시간이 지나면 자동으로 새로고침될 수 있습니다. 즉 사용자가 앱에서 같은 화면에 머물러 있어도 정기적으로 새 광고가 게재됩니다. 또한 가장 구현하기 간단한 광고 형식이기도 합니다.
전면 광고
전면 광고 단위는 앱에서 전체 페이지 광고를 게재합니다. 자연스러운 장소에 배치하세요. 앱 인터페이스에서 중단 및 전환(예: 레벨 완료 후) 50% 증가했습니다.
네이티브
네이티브 광고는 광고 제목, 텍스트, 이미지 등 앱에 표시되는 것을 확인할 수 있습니다 광고에 직접 스타일을 지정하여 사용자 환경을 더욱 풍부하게 만드는 자연스럽고 방해가 되지 않는 광고를 표시할 수 있습니다.
리워드 제공됨
보상형 광고 단위에서는 사용자가 게임을 하거나 설문조사에 참여하거나 동영상을 시청하면 코인, 추가 생명, 포인트와 같은 인앱 리워드를 제공합니다. 다음과 같이 설정할 수 있습니다. 광고 단위별로 보상을 다르게 하고, 보상 가치 및 사용자가 받은 상품
보상형 전면 광고
보상형 전면 광고는 자연스러운 앱 전환 시 자동으로 게재되는 광고를 통해 코인이나 추가 생명 아이템 등의 리워드를 제공할 수 있는 새로운 보상형 광고 형식입니다.
보상형 광고와 달리 사용자는 수신 동의하지 않고도 보상형 동영상 광고를 전면 광고에 사용됩니다.
보상형 전면 광고에는 보상형 광고에 표시되는 수신 동의 메시지 대신 리워드를 공지하고 사용자가 원할 경우 수신 해제할 수 있는 시작 화면이 필요합니다.
앱 오프닝 광고
앱 오프닝은 사용자가 앱을 열거나 앱으로 다시 전환할 때 표시되는 광고 형식입니다. 광고가 로드 화면을 오버레이합니다.