การผสานรวม Google Mobile Ads SDK เข้ากับแอปเป็นขั้นตอนแรกสู่การแสดงโฆษณาและสร้างรายได้ เมื่อผสาน SDK เรียบร้อยแล้ว คุณจะ เลือกใช้รูปแบบโฆษณาที่รองรับได้อย่างน้อย 1 แบบ
ข้อกำหนดเบื้องต้น
- ใช้ Xcode 16.0 ขึ้นไป
- กำหนดเป้าหมายเป็น iOS 13.0 ขึ้นไป
นำเข้า Google Mobile Ads SDK
ใช้วิธีใดวิธีหนึ่งต่อไปนี้เพื่อนำเข้า Google Mobile Ads SDK
Swift Package Manager
หากต้องการเพิ่มการอ้างอิงแพ็กเกจ ในโปรเจ็กต์ ให้ทำตามขั้นตอนต่อไปนี้
ใน Xcode ให้ติดตั้งแพ็กเกจ Swift สำหรับโฆษณาในอุปกรณ์เคลื่อนที่ของ Google โดยไปที่File > Add Package Dependencies...
ในข้อความแจ้งที่ปรากฏ ให้ค้นหารีโปซิโทรี GitHub ของ Google Mobile Ads Swift Package
https://github.com/googleads/swift-package-manager-google-mobile-ads.gitเลือกเวอร์ชันของแพ็กเกจ Swift ของ Google Mobile Ads ที่ต้องการใช้ สำหรับโปรเจ็กต์ใหม่ เราขอแนะนำให้ใช้อัปเดตเป็นเวอร์ชันหลักถัดไป
CocoaPods
ก่อนดำเนินการต่อ โปรดอ่านข้อมูลเกี่ยวกับ การสร้างและการใช้ Podfile ในส่วนการใช้ CocoaPods
หากต้องการใช้ CocoaPods ให้ทำตามขั้นตอนต่อไปนี้
เปิด Podfile ของโปรเจ็กต์ แล้วเพิ่มบรรทัดนี้ลงใน
targetการกำหนดค่าบิลด์ ของแอปpod 'Google-Mobile-Ads-SDK'
เรียกใช้คำสั่งต่อไปนี้ในเทอร์มินัล
pod install --repo-update
การดาวน์โหลดด้วยตนเอง
ดาวน์โหลด Google Mobile Ads SDK และ
Embed & Signเฟรมเวิร์กต่อไปนี้ลงในโปรเจ็กต์ XcodeGoogleMobileAds.xcframeworkUserMessagingPlatform.xcframework
ในการตั้งค่าการสร้างของโปรเจ็กต์ ให้ทำดังนี้
- เพิ่ม
/usr/lib/swiftเส้นทางไปยังเส้นทางการค้นหา Runpath - เพิ่ม
-ObjCแฟลกลิงก์เกอร์ลงในแฟลกลิงก์เกอร์อื่นๆ
- เพิ่ม
อัปเดต Info.plist
อัปเดตไฟล์ Info.plist ของแอปเพื่อเพิ่มคีย์ 2 รายการ
GADApplicationIdentifierคีย์ที่มีค่าสตริงของรหัสแอป Ad Manager ที่พบ ใน UI ของ Ad Manager และมีรูปแบบca-app-pub-################~##########SKAdNetworkItemsคีย์ที่มีค่าSKAdNetworkIdentifierสำหรับ Google (cstr6suwn9.skadnetwork) และ ผู้ซื้อบุคคลที่สามบางราย ที่ระบุค่าเหล่านี้ให้ Google
ข้อมูลโค้ดที่สมบูรณ์
<key>GADApplicationIdentif<ier/ke<y>
!-- Sample Ad Manager app ID: ca-app-pub-3940256099942544~1458002>5<11 --
string>SAMP<LE_APP_ID</string>
key>S<KAdNet<workItems</key>
a<rray>
dict>
k<ey>SKAd<NetworkIdentifier/key>
< string><cstr6suwn<9.skadnetw<ork/string>
/dict><;
dict&g<t;
key>SKAdNetworkIden<tifier/key&<gt;
s<tring>4<fzdc2evr5.skadnetwork/str<ing>
</dict>
dict>
key&<gt;SKAdNetw<orkIdenti<fier/key&g<t;
string>2fnua5td<w4.skadnet<work/string>
/dict>
< dict>
< key><;SKAdNetwo<rkIdentifier/key>
<string><ydx93a7ass.skadnetwork/string<>
/dic<t>
d<ict>
< key>SKAdNetworkIdent<ifier/key&<gt;
string>p78axxw29g.<skadnetwork</string&g<t;
/dict<>
dict>
key&g<t;SKAdNetw<orkIdentifier/key>
str<ing>v72q<ych5uu.sk<adnetwork/<string>
/dict>
<dict>
< key>SKAdNetworkIdentifi<er/key>
< strin<g>ludvb<6z3bs.skadnetwork/string&<gt;
/dic<t>
dict>
key>S<KAdNetworkI<dentifier</key>
< string>cp8zw746q7.s<kadnetwork</string>
/dict>
dic<t>
k<ey>SKA<dNetworkId<entifier/key>
stri<ng>3sh4<2y64q3.skadnetwork/string><
/dict><;
dict&<gt;
ke<y>SKAdNetworkIdentifie<r/key>
< string>c6k4g5qg8m.skad<network/str<ing>
< /dict><
dict>
key>SK<AdNetworkI<dentifier/key>
string&<gt;s39g8k73<mm.skadne<twork/stri<ng>
/dict>
dict<>
k<ey>SKAdNetworkIdentifier/k<ey>
<string><;wg4vff78z<m.skadnetwork/string>
< /dict><;
dict>
key>SKAdN<etworkIdent<ifier/key<>
s<tring>3qy4746246.skadn<etwork/str<ing>
/dict>
dict><;
key&g<t;SKAdNet<workIdenti<fier/key>
string&g<t;f38h382j<lk.skadnetwork/string>
/<dict>
<dict>
< key><;SKAdNetworkIdentifier/ke<y>
<string>hs6bdukanm.skadnetw<ork/string&<gt;
/di<ct>
d<ict>
key>SKAdNe<tworkIdent<ifier/key>
string>m<lmmfzh3r3.s<kadnetwor<k/string&g<t;
/dict>
dict><
key&g<t;SKAdNetworkIdentifier/key&g<t;
stri<ng>v4n<xqhlyqp.sk<adnetwork/string>
/d<ict>
<dict>
key>SKAdNetwo<rkIdentifie<r/key><
strin<g>wzmmz9fp6w.skadnetwo<rk/string&<gt;
/dict>
dict>
< key>SK<AdNetwork<Identifier</key>
string>su<67r6k2v3.s<kadnetwork/string>
/dict<>
dict<>
<key>SKA<dNetworkIdentifier/key><;
stri<ng>yclnxrl5pm.skadnetwork/<string>
< /dict&g<t;
dict&<gt;
key>SKAdNetwor<kIdentifie<r/key>
string>t38b2<kh725.skadn<etwork/st<ring>
< /dict>
dict>
< key>SK<AdNetworkIdentifier/key>
< string&g<t;7ug5zh2<4hu.skadne<twork/string>
/dict&<gt;
dict<>
key>SKAdNetworkId<entifier/ke<y>
< string><;gta9lk7p23.skadnetwork/s<tring>
< /dict>
dict>
ke<y>SKAdNe<tworkIden<tifier/key<>
string>vutu7a<keur.skadn<etwork/string>
/dict><
dict><
key&<gt;SKAdNet<workIdentifier/key>
< string&g<t;y5ghdn5j9k.skadnetwork/stri<ng>
/d<ict>
< dict>
< key>SKAdNetworkIde<ntifier/ke<y>
string>v9wttpbfk<9.skadnetwo<rk/string<>
/di<ct>
dict>
key<>SKAdNe<tworkIdentifier/key>
s<tring>n3<8lu8286q.<skadnetwor<k/string>
/dict>
< dict><
key>SKAdNetworkIdenti<fier/key><;
str<ing>47v<hws6wlr.skadnetwork/strin<g>
/d<ict>
dict>
key><;SKAdNetwor<kIdentifi<er/key><
string>kbd757ywx3<.skadnetwo<rk/string>
/dict>
d<ict>
< key>S<KAdNetwork<Identifier/key>
st<ring>9t<245vhmpl.skadnetwork/string&g<t;
/dict&<gt;
dic<t>
<key>SKAdNetworkIdentif<ier/key><;
string>a2p9lx4jpn.sk<adnetwork/s<tring><
/dict&g<t;
dict>
key><SKAdNetwor<kIdentifier/key>
strin<g>22mmun<2rn5.skad<network/st<ring>
/dict>
di<ct>
< key>SKAdNetworkIdentifier</key>
< string&<gt;44jx675<5aq.skadnetwork/string><;
/dict&<gt;
dict>
key>SKA<dNetworkIde<ntifier/k<ey>
< string>k674qkevps.ska<dnetwork/s<tring>
/dict>
dict&<gt;
key<>SKAdN<etworkIden<tifier/key>
string<>4468km<3ulz.skadnetwork/string>
< /dict>
< dict><;
key&<gt;SKAdNetworkIdentifier/<key>
< string>2u9pt9hc89.skadne<twork/strin<g>
/<dict>
< dict>
key>SKAd<NetworkIde<ntifier/key>
string><;8s468mfl3y<.skadnetw<ork/string<>
/dict>
dict&g<t;
key<>SKAdNetworkIdentifier/key<>
st<ring>k<lf5c3l5u5.<skadnetwork/string>
</dict>
< dict>
key>SKAdNet<workIdentif<ier/key&g<t;
str<ing>ppxm28t8ap.skadnet<work/strin<g>
/dict>
dict>
< key><SKAdNetwo<rkIdentifi<er/key>
string><kbmxgpxpgc<.skadnetwork/string>
/di<ct>
di<ct>
< key>S<KAdNetworkIdentifier/key&<gt;
st<ring>uw77j35x4d.skadnetwor<k/string><;
/dict<>
dic<t>
key>SKAdNetw<orkIdentif<ier/key>
string>578<prtvx9j.ska<dnetwor<k/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>c3frkrj4fj.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>97r2b46745.skadnetwork/string>
/dict>
dict>
key>SKAdNetworkIdentifier/key>
string>3qcr597p9d.skadnetwork/string>
/dict>
/array>แทนที่ SAMPLE_APP_ID ด้วยรหัสแอป Ad Manager ขณะทดสอบ ให้ใช้รหัสแอปตัวอย่างที่แสดงในตัวอย่างก่อนหน้า
คุณควรเชื่อมโยงกลุ่มผลตอบแทนกับแอปที่ใช้กลุ่มผลตอบแทนนั้นๆ เพื่อให้การเริ่มต้นทำงานมีประสิทธิภาพสูงสุด การกำหนดค่ากลุ่มผลตอบแทน ที่กำหนดเป้าหมายเป็น iOS และไม่ได้เชื่อมโยงกับแอปใดแอปหนึ่งโดยเฉพาะจะส่งไปยังแอป iOS ทั้งหมด ในบัญชี ซึ่งอาจทำให้ระยะเวลาที่ต้องใช้ในการเริ่มต้นนานขึ้น
เริ่มต้น Google Mobile Ads SDK
ก่อนโหลดโฆษณา ให้เรียกใช้เมธอด start() ใน
GADMobileAds.sharedInstance
ซึ่งจะเริ่มต้น SDK และเรียกตัวแฮนเดิลการเสร็จสมบูรณ์เมื่อ
การเริ่มต้นเสร็จสมบูรณ์ (หรือหลังจากหมดเวลา 30 วินาที) โทรหา start() โดยเร็วที่สุด
Swift
// Initialize the Google Mobile Ads SDK.
MobileAds.shared.start()
SwiftUI
// Initialize the Google Mobile Ads SDK.
MobileAds.shared.start()
Objective-C
// Initialize the Google Mobile Ads SDK.
[GADMobileAds.sharedInstance startWithCompletionHandler:nil];
เลือกรูปแบบโฆษณา
ตอนนี้ระบบได้นำเข้าและเริ่มต้น Google Mobile Ads SDK แล้ว และคุณก็พร้อมที่จะ ติดตั้งใช้งานโฆษณา Ad Manager มีรูปแบบโฆษณาที่แตกต่างกันหลายรูปแบบ เพื่อให้คุณเลือกรูปแบบที่เหมาะกับประสบการณ์ของผู้ใช้ในแอปมากที่สุด
แบนเนอร์
หน่วยโฆษณาแบนเนอร์จะแสดงโฆษณาทรงสี่เหลี่ยมผืนผ้าซึ่งจะอยู่ในพื้นที่ส่วนหนึ่งของการจัดวางแอป หน่วยโฆษณานี้จะรีเฟรชโดยอัตโนมัติหลังจากช่วงเวลาที่ตั้งไว้ ซึ่งหมายความว่าผู้ใช้จะเห็นโฆษณาใหม่อยู่เรื่อยๆ แม้ว่าจะดูหน้าจอเดิมในแอปก็ตาม และยังเป็นรูปแบบโฆษณาที่นำไปใช้งานได้ง่ายที่สุดอีกด้วย
โฆษณาคั่นระหว่างหน้า
หน่วยโฆษณาคั่นระหว่างหน้าจะแสดงโฆษณาแบบเต็มหน้าในแอป คุณควรวางหน่วยโฆษณาประเภทนี้ที่จุดพักและจุดเปลี่ยนแปลงตามปกติในอินเทอร์เฟซของแอป เช่น หลังจากเล่นเกมผ่านด่าน
เนทีฟ
โฆษณาเนทีฟคือโฆษณาที่คุณปรับแต่งวิธีแสดงชิ้นงาน เช่น บรรทัดแรกและคำกระตุ้นให้ดำเนินการ ในแอปได้ การจัดรูปแบบโฆษณาด้วยตนเองจะช่วยให้คุณ สร้างการนำเสนอโฆษณาที่เป็นธรรมชาติและไม่รบกวน ซึ่งจะช่วยเพิ่มประสบการณ์การใช้งานที่สมบูรณ์ ของผู้ใช้
Google Ad Manager มีวิธีติดตั้งใช้งานโฆษณาเนทีฟ 2 วิธี ได้แก่ สไตล์โฆษณาเนทีฟและ โฆษณาเนทีฟมาตรฐานผ่านการแสดงผลที่กำหนดเอง
สไตล์โฆษณาเนทีฟได้รับการออกแบบมาเพื่อลดความซับซ้อนในการติดตั้งใช้งานโฆษณาเนทีฟ และเป็นตัวเลือกที่ยอดเยี่ยมหากคุณเพิ่งเริ่มใช้รูปแบบนี้ การแสดงผลที่กำหนดเองได้รับการออกแบบมาเพื่อเพิ่มอิสระในการสร้างงานนำเสนอให้ได้มากที่สุด
ใช้สไตล์โฆษณาเนทีฟ ใช้โฆษณาเนทีฟ (การแสดงผลที่กำหนดเอง)
ได้รับรางวัลแล้ว
หน่วยโฆษณาที่มีการให้รางวัลช่วยให้ผู้ใช้เล่นเกม ทำแบบสำรวจ หรือดูวิดีโอเพื่อ รับรางวัลในแอปได้ เช่น เหรียญ จำนวนชีวิตเพิ่มเติม หรือคะแนน คุณสามารถกำหนดรางวัลให้หน่วยโฆษณาแต่ละหน่วยแตกต่างกันไป และระบุมูลค่าของรางวัลและไอเท็มที่ผู้ใช้จะได้รับ
โฆษณาคั่นระหว่างหน้าที่มีการให้รางวัล
โฆษณาคั่นระหว่างหน้าที่มีการให้รางวัลเป็นรูปแบบโฆษณาที่เสนอสิ่งจูงใจประเภทใหม่ที่ช่วยให้คุณนำเสนอรางวัลได้ เช่น เหรียญหรือไอเท็มเพิ่มชีวิต สําหรับโฆษณาที่ปรากฏโดยอัตโนมัติระหว่างจุดเปลี่ยนหน้าตามปกติของแอป
ผู้ใช้ไม่จําเป็นต้องเลือกดูโฆษณาคั่นระหว่างหน้าที่มีการให้รางวัล ซึ่งต่างจากโฆษณาที่มีการให้รางวัล
โฆษณาคั่นระหว่างหน้าที่มีการให้รางวัลต้องใช้ หน้าจอแนะนําเพื่อประกาศรางวัล และเปิดโอกาสให้ผู้ใช้เลือกที่จะไม่รับได้ตามที่ต้องการ แทนการส่งข้อความแจ้งให้เลือกรับในโฆษณาที่มีการให้รางวัล
ใช้โฆษณาคั่นระหว่างหน้าที่มีการให้รางวัล
โฆษณาเปิดแอป
โฆษณาเปิดแอปเป็นรูปแบบโฆษณาที่ปรากฏเมื่อผู้ใช้เปิดหรือเปลี่ยนกลับไปที่แอปของคุณ โฆษณาจะวางซ้อนหน้าจอการโหลด