คู่มือนี้มีไว้สำหรับผู้เผยแพร่โฆษณาที่ต้องการสร้างรายได้จากแอป iOS ด้วย AdMob และไม่ได้ใช้ Firebase หากคุณวางแผนที่จะรวม Firebase ไว้ในแอป (หรือคุณกำลังพิจารณาอยู่) โปรดดูคู่มือนี้ในเวอร์ชัน AdMob ที่มี Firebase แทน
การผสานรวม SDK โฆษณาในอุปกรณ์เคลื่อนที่ของ Google เข้ากับแอปเป็นขั้นตอนแรกในการแสดงโฆษณาและสร้างรายได้ เมื่อผสานรวม SDK แล้ว คุณสามารถดำเนินการต่อเพื่อใช้รูปแบบโฆษณาที่รองรับอย่างน้อย 1 รูปแบบ
ข้อกำหนดเบื้องต้น
- ใช้ 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 ตั้งแต่เวอร์ชัน 9.0.0 เป็นต้นไป ทำตามขั้นตอนต่อไปนี้เพื่อนำเข้าแพ็กเกจ Swift
ใน Xcode ให้ติดตั้ง Swift Package สำหรับ Google Mobile Ads โดยไปที่ File > Add Packages...
ค้นหาที่เก็บ Swift Package GitHub ในข้อความแจ้งที่ปรากฏขึ้น
https://github.com/googleads/swift-package-manager-google-mobile-ads.git
เลือกแพ็กเกจ Swift สำหรับโฆษณาบนอุปกรณ์เคลื่อนที่ของ Google เวอร์ชันที่ต้องการใช้ สําหรับโปรเจ็กต์ใหม่ เราขอแนะนำให้ใช้เวอร์ชันหลักถัดไป
เมื่อเสร็จแล้ว Xcode จะเริ่มแก้ไขทรัพยากร Dependency ของแพ็กเกจและดาวน์โหลดไฟล์ในเบื้องหลัง ดูรายละเอียดเพิ่มเติมเกี่ยวกับวิธีเพิ่มทรัพยากร Dependency ของแพ็กเกจได้ที่บทความของ Apple
ดาวน์โหลดด้วยตนเอง
ดาวน์โหลด SDK โฆษณาในอุปกรณ์เคลื่อนที่ของ Google และ
Embed & Sign
เฟรมเวิร์กต่อไปนี้ลงในโปรเจ็กต์ XcodeGoogleMobileAds.xcframework
UserMessagingPlatform.xcframework
เพิ่ม Flag
-ObjC
ไปยัง Linker Flag อื่นๆ ในการตั้งค่าบิลด์ของโปรเจ็กต์ ดังนี้
อัปเดต 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>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>
หากคุณยังไม่ได้สร้างบัญชี 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) การจัดรูปแบบโฆษณาด้วยตัวคุณเองช่วยให้คุณสามารถสร้างการนำเสนอโฆษณาที่เป็นธรรมชาติและไม่ก่อให้เกิดความรำคาญ ซึ่งสามารถเพิ่มประสบการณ์ของผู้ใช้ให้น่าจดจำยิ่งขึ้น
ได้รับรางวัลแล้ว
หน่วยโฆษณาที่มีการให้รางวัลช่วยให้ผู้ใช้เล่นเกม ทำแบบสำรวจ หรือดูวิดีโอเพื่อรับรางวัลในแอป เช่น เหรียญ จำนวนชีวิตเพิ่ม หรือคะแนน คุณสามารถกำหนดรางวัลที่แตกต่างกันสำหรับหน่วยโฆษณาแต่ละหน่วย และระบุมูลค่าของรางวัลและไอเท็มที่ผู้ใช้จะได้รับ
โฆษณาคั่นระหว่างหน้าที่มีการให้รางวัล
โฆษณาคั่นระหว่างหน้าที่มีการให้รางวัลเป็นรูปแบบโฆษณาที่เสนอสิ่งจูงใจประเภทใหม่ที่ช่วยให้คุณมอบรางวัล เช่น เหรียญหรือไอเท็มเพิ่มชีวิต สำหรับโฆษณาที่แสดงโดยอัตโนมัติระหว่างการเปลี่ยนหน้าแอปตามปกติ
ผู้ใช้ไม่จําเป็นต้องเลือกดูโฆษณาคั่นระหว่างหน้าที่มีการให้รางวัล ซึ่งต่างจากโฆษณาที่มีการให้รางวัล
โฆษณาคั่นระหว่างหน้าที่มีการให้รางวัลต้องใช้หน้าจอแนะนำเพื่อประกาศรางวัล และเปิดโอกาสให้ผู้ใช้เลือกที่จะไม่รับได้ตามที่ต้องการ แทนข้อความแจ้งให้เลือกรับในโฆษณาที่มีการให้รางวัล
ใช้โฆษณาคั่นระหว่างหน้าที่มีการให้รางวัล
โฆษณาเปิดแอป
โฆษณาเปิดแอปเป็นรูปแบบโฆษณาที่ปรากฏเมื่อผู้ใช้เปิดหรือเปลี่ยนกลับไปใช้แอปของคุณ โดยโฆษณาจะวางซ้อนบนหน้าจอการโหลด