คู่มือนี้มีไว้สำหรับผู้เผยแพร่โฆษณาที่ต้องการสร้างรายได้จากแอป iOS ด้วย AdMob และไม่ได้ใช้ Firebase หากคุณวางแผนที่จะรวม Firebase ไว้ในแอป (หรือ คุณกำลังพิจารณา) โปรดดู AdMob ที่มี Firebase ของคู่มือนี้แทน
การผสานรวม SDK โฆษณาในอุปกรณ์เคลื่อนที่ของ Google เข้ากับแอปเป็นขั้นตอนแรก แสดงโฆษณาและสร้างรายได้ เมื่อผสานรวม SDK แล้ว คุณสามารถทำสิ่งต่อไปนี้ได้ ดำเนินการต่อเพื่อใช้ รูปแบบโฆษณาที่รองรับ
ข้อกำหนดเบื้องต้น
- ใช้ Xcode 15.3 ขึ้นไป
- กำหนดเป้าหมาย iOS 12.0 ขึ้นไป
- สิ่งที่แนะนำ สร้างบัญชี AdMob และลงทะเบียนแอป
นำเข้า SDK โฆษณาในอุปกรณ์เคลื่อนที่
ใช้วิธีใดวิธีหนึ่งต่อไปนี้เพื่อนําเข้า SDK โฆษณาในอุปกรณ์เคลื่อนที่ของ Google
CocoaPods (แนะนำ)
วิธีที่ง่ายที่สุดในการนำเข้า SDK ไปยังโปรเจ็กต์ iOS คือการใช้ CocoaPods เปิด Podfile ของโปรเจ็กต์แล้วเพิ่มบรรทัดนี้ลงในเป้าหมายของแอป
pod 'Google-Mobile-Ads-SDK'
จากนั้นให้เรียกใช้คำสั่งดังนี้
pod install --repo-update
หากคุณเพิ่งเริ่มใช้ CocoaPods โปรดดู เอกสารอย่างเป็นทางการเพื่อดูข้อมูล เกี่ยวกับวิธีสร้างและใช้ Podfiles
เครื่องมือจัดการแพ็กเกจ Swift
SDK โฆษณาในอุปกรณ์เคลื่อนที่ของ Google รองรับ Swift Package Manager ตั้งแต่เวอร์ชัน 9.0.0 เป็นต้นไป ทำตาม ขั้นตอนในการนำเข้าแพ็กเกจ Swift
ใน Xcode ให้ติดตั้งแพ็กเกจ Google Mobile Ads Swift โดยไปที่ ไฟล์ > เพิ่มแพ็กเกจ...
ในข้อความแจ้งที่ปรากฏขึ้น ให้ค้นหาแพ็กเกจ Google Mobile Ads Swift ที่เก็บ GitHub:
https://github.com/googleads/swift-package-manager-google-mobile-ads.git
เลือกเวอร์ชันของแพ็กเกจ Swift ของ Google Mobile Ads ที่ต้องการใช้ สําหรับโปรเจ็กต์ใหม่ เราขอแนะนําให้ใช้เวอร์ชันหลักถัดไป
เมื่อเสร็จแล้ว Xcode จะเริ่มแก้ไขทรัพยากร Dependency ของแพ็กเกจและ ดาวน์โหลดในเบื้องหลัง ดูรายละเอียดเพิ่มเติมเกี่ยวกับวิธีเพิ่มแพ็กเกจ Dependencies โปรดดูบทความของ Apple
ดาวน์โหลดด้วยตนเอง
ดาวน์โหลด Google Mobile Ads SDK และ
Embed & Sign
เฟรมเวิร์กต่อไปนี้ลงในโปรเจ็กต์ XcodeGoogleMobileAds.xcframework
UserMessagingPlatform.xcframework
ในการตั้งค่าบิลด์ของโปรเจ็กต์ ให้ทำดังนี้
- เพิ่มเส้นทาง
/usr/lib/swift
ไปยัง Runpath Search Path - เพิ่มแฟล็ก Linker
-ObjC
ในแฟล็ก Linker อื่นๆ
- เพิ่มเส้นทาง
อัปเดต Info.plist ของคุณ
อัปเดตไฟล์ Info.plist
ของแอปเพื่อเพิ่มคีย์ 2 คีย์ดังนี้
คีย์
GADApplicationIdentifier
ที่มีค่าสตริง AdMob app ID found in the AdMob UIคีย์
SKAdNetworkItems
ที่มีSKAdNetworkIdentifier
ค่าสำหรับ Google (cstr6suwn9.skadnetwork
) และ ผู้ซื้อบุคคลที่สามบางราย ซึ่งระบุค่าเหล่านี้ให้กับ 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>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 บัญชี และลงทะเบียน ตอนนี้ได้เวลาเหมาะสมแล้ว ให้ทำเช่นนั้นได้
ในแอปจริง ให้แทนที่รหัสแอปตัวอย่างด้วย AdMob รหัสแอป คุณใช้รหัสตัวอย่างได้ในกรณีต่อไปนี้ เพียงใช้ SDK ในแอป Hello World
เริ่มต้น 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
แบนเนอร์
หน่วยโฆษณาแบนเนอร์จะแสดงโฆษณาสี่เหลี่ยมผืนผ้าซึ่งใช้เนื้อที่ส่วนหนึ่งของแอป เลย์เอาต์ อุปกรณ์นี้จะรีเฟรชโดยอัตโนมัติหลังจากระยะเวลาที่ตั้งไว้ ซึ่งหมายความว่า ผู้ใช้ดูโฆษณาใหม่อย่างสม่ำเสมอ แม้ว่าจะดูเท่าเดิม ในแอปของคุณ และยังเป็นรูปแบบโฆษณาที่นำไปใช้งานได้ง่ายที่สุดอีกด้วย
โฆษณาคั่นระหว่างหน้า
หน่วยโฆษณาคั่นระหว่างหน้าจะแสดงโฆษณาแบบเต็มหน้าในแอป จัดวางให้เป็นธรรมชาติ ช่วงพักและการเปลี่ยนแปลงในอินเทอร์เฟซของแอป เช่น หลังผ่านด่าน ในแอปเกม
เนทีฟ
โฆษณาเนทีฟคือโฆษณาที่คุณสามารถปรับแต่งวิธีที่ชิ้นงานต่างๆ เช่น บรรทัดแรก คำกระตุ้นให้ดำเนินการ (Call-To-Action) จะแสดงในแอป การจัดรูปแบบโฆษณาด้วยตัวคุณเองช่วยให้คุณสามารถ สร้างการนำเสนอโฆษณาที่เป็นธรรมชาติ ไม่ก่อให้เกิดความรำคาญ ซึ่งสามารถเพิ่ม ให้กับผู้ใช้ที่เป็นสื่อสมบูรณ์ ประสบการณ์การใช้งาน
ได้รับรางวัลแล้ว
หน่วยโฆษณาที่มีการให้รางวัลช่วยให้ผู้ใช้เล่นเกม ทำแบบสำรวจ หรือดูวิดีโอได้เพื่อทำสิ่งต่อไปนี้ รับรางวัลในแอป เช่น เหรียญ ชีวิตเพิ่ม หรือคะแนน คุณสามารถกำหนด หน่วยโฆษณาแตกต่างกันและระบุมูลค่าของรางวัลและ รายการที่ผู้ใช้ได้รับ
โฆษณาคั่นระหว่างหน้าที่มีการให้รางวัล
โฆษณาคั่นระหว่างหน้าที่มีการให้รางวัล คือโฆษณารูปแบบใหม่ที่มีสิ่งจูงใจซึ่งช่วยให้คุณ เสนอรางวัล เช่น เหรียญหรือไอเท็มเพิ่มชีวิต สำหรับโฆษณาที่แสดงโดยอัตโนมัติ ระหว่างการเปลี่ยนแอปตามปกติ
ผู้ใช้ไม่จำเป็นต้องเลือกดูโฆษณาที่มีการให้รางวัล ซึ่งต่างจากโฆษณาที่มีการให้รางวัล โฆษณาคั่นระหว่างหน้า
โฆษณาคั่นระหว่างหน้าที่มีการให้รางวัลต้องใช้หน้าจอแนะนำเพื่อประกาศรางวัล และเปิดโอกาสให้ผู้ใช้เลือกที่จะไม่รับได้ตามที่ต้องการ แทนการส่งข้อความแจ้งให้เลือกรับในโฆษณาที่มีการให้รางวัล
ใช้โฆษณาคั่นระหว่างหน้าที่มีการให้รางวัล
โฆษณาเปิดแอป
โฆษณาเปิดแอปคือรูปแบบโฆษณาที่ปรากฏขึ้นเมื่อผู้ใช้เปิดหรือเปลี่ยนกลับไปใช้ แอป โฆษณาวางซ้อนหน้าจอการโหลด