คู่มือนี้แสดงวิธีผสานรวมอะแดปเตอร์สื่อกลางกับแอป Android
ข้อกำหนดเบื้องต้น
คุณต้องผสานรวมรูปแบบโฆษณานั้นๆ เข้ากับแอปก่อนจึงจะผสานรวมสื่อกลางสำหรับรูปแบบโฆษณาได้ โดยทำดังนี้
- โฆษณาแบนเนอร์
- โฆษณาคั่นระหว่างหน้า
- โฆษณาเนทีฟ
- โฆษณาที่มีการให้รางวัล
- โฆษณาคั่นระหว่างหน้าที่มีการให้รางวัล
หากไม่เคยใช้สื่อกลางมาก่อน โปรดอ่าน ข้อมูลเบื้องต้นเกี่ยวกับสื่อกลาง
เริ่มต้นใช้งาน GMA Next-Gen SDK
คู่มือเริ่มใช้งานฉบับย่อจะแสดงวิธีเริ่มต้นใช้งานGMA Next-Gen SDK โดยอะแดปเตอร์สื่อกลางจะเริ่มต้นใช้งานด้วยในระหว่างการเรียกเริ่มต้นใช้งานดังกล่าว คุณต้องรอให้การเริ่มต้นใช้งานเสร็จสมบูรณ์ก่อนที่จะโหลดโฆษณาเพื่อยืนยันการเข้าร่วมอย่างเต็มรูปแบบจากทุกเครือข่ายโฆษณาในคำขอโฆษณาแรก
โค้ดตัวอย่างต่อไปนี้แสดงวิธีตรวจสอบสถานะการเริ่มต้นใช้งานของอะแดปเตอร์แต่ละรายการก่อนที่จะส่งคำขอโฆษณา
Kotlin
import com.google.android.libraries.ads.mobile.sdk.MobileAds
import com.google.android.libraries.ads.mobile.sdk.initialization.InitializationConfig
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val backgroundScope = CoroutineScope(Dispatchers.IO)
backgroundScope.launch {
// Initialize GMA Next-Gen SDK on a background thread.
MobileAds.initialize(this@MainActivity, InitializationConfig.Builder("SAMPLE_APP_ID").build()) {
initializationStatus ->
for ((adapterName, adapterStatus) in initializationStatus.adapterStatusMap) {
Log.d(
"MyApp",
String.format(
"Adapter name: %s, Status code: %s, Status string: %s, Latency: %d",
adapterName,
adapterStatus.initializationState,
adapterStatus.description,
adapterStatus.latency,
),
)
}
// Adapter initialization is complete.
}
// Other methods on MobileAds can now be called.
}
}
}
Java
import com.google.android.libraries.ads.mobile.sdk.MobileAds;
import com.google.android.libraries.ads.mobile.sdk.initialization.AdapterStatus;
import com.google.android.libraries.ads.mobile.sdk.initialization.InitializationConfig;
public class MainActivity extends AppCompatActivity {
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
new Thread(
() -> {
// Initialize GMA Next-Gen SDK on a background thread.
MobileAds.initialize(
this,
new InitializationConfig.Builder("SAMPLE_APP_ID")
.build(),
initializationStatus -> {
Map<String, AdapterStatus> adapterStatusMap =
initializationStatus.getAdapterStatusMap();
for (String adapterClass : adapterStatusMap.keySet()) {
AdapterStatus adapterStatus = adapterStatusMap.get(adapterClass);
Log.d(
"MyApp",
String.format(
"Adapter name: %s, Status code: %s, Status description: %s,"
+ " Latency: %d",
adapterClass,
adapterStatus.getInitializationState(),
adapterStatus.getDescription(),
adapterStatus.getLatency()));
}
// Adapter initialization is complete.
});
// Other methods on MobileAds can now be called.
})
.start();
}
}
ยกเว้นโมดูล com.google.android.gms ในการผสานรวมสื่อกลาง
อะแดปเตอร์สื่อกลางจะยังคงขึ้นอยู่กับ Google Mobile Ads SDK (Legacy) อย่างไรก็ตาม ,GMA Next-Gen SDK มีคลาสทั้งหมดที่อะแดปเตอร์สื่อกลางต้องการ คุณต้องยกเว้นไม่ให้ดึง Google Mobile Ads SDK (Legacy)มาเป็นทรัพยากร Dependency โดยอะแดปเตอร์สื่อกลาง เพื่อหลีกเลี่ยงข้อผิดพลาดในการคอมไพล์ที่เกี่ยวข้องกับสัญลักษณ์ที่ซ้ำกัน
ในไฟล์ build.gradle ระดับแอป ให้ยกเว้นทั้ง play-services-ads และ
play-services-ads-lite โมดูลทั่วโลกจากทรัพยากร Dependency ทั้งหมด
Kotlin
configurations.configureEach { exclude(group = "com.google.android.gms", module = "play-services-ads") exclude(group = "com.google.android.gms", module = "play-services-ads-lite") }
Groovy
configurations.configureEach { exclude group: "com.google.android.gms", module: "play-services-ads" exclude group: "com.google.android.gms", module: "play-services-ads-lite" }
ตรวจสอบว่าคลาสอะแดปเตอร์เครือข่ายโฆษณาใดโหลดโฆษณา
ต่อไปนี้เป็นโค้ดตัวอย่างที่บันทึกชื่อคลาสเครือข่ายโฆษณาสำหรับโฆษณาแบนเนอร์
Kotlin
BannerAd.load(
BannerAdRequest.Builder("AD_UNIT_ID", AdSize.BANNER).build(),
object : AdLoadCallback<BannerAd> {
override fun onAdLoaded(ad: BannerAd) {
Log.d(
"MyApp", "Adapter class name: " +
ad.getResponseInfo().mediationAdapterClassName
)
}
}
)
Java
BannerAd.load(
new BannerAdRequest.Builder("AD_UNIT_ID", AdSize.BANNER).build(),
new AdLoadCallback<BannerAd>() {
@Override
public void onAdLoaded(@NonNull BannerAd ad) {
Log.d("MyApp",
"Adapter class name: " + ad.getResponseInfo().getMediationAdapterClassName());
}
}
);
ใช้โฆษณาแบนเนอร์กับสื่อกลาง
ตรวจสอบว่าได้ปิดใช้การรีเฟรชใน UI ของแหล่งที่มาของโฆษณาของบุคคลที่สามทั้งหมดสำหรับหน่วยโฆษณาแบนเนอร์ที่ใช้ในสื่อกลาง ซึ่งจะป้องกันการรีเฟรช 2 ครั้งเนื่องจาก Ad Manager จะทริกเกอร์การรีเฟรชตามอัตราการรีเฟรชของหน่วยโฆษณาแบนเนอร์ด้วย
กฎหมายคุ้มครองความเป็นส่วนตัวของรัฐในสหรัฐอเมริกาและ GDPR
หากคุณต้องปฏิบัติตามกฎหมายคุ้มครองความเป็นส่วนตัวของรัฐในสหรัฐอเมริกาหรือกฎระเบียบทั่วไปเกี่ยวกับการคุ้มครองข้อมูล (GDPR) ให้ทำตามขั้นตอนในการตั้งค่ากฎระเบียบของรัฐในสหรัฐอเมริกาหรือการตั้งค่า GDPR เพื่อเพิ่มพาร์ทเนอร์สื่อกลางในรายการพาร์ทเนอร์โฆษณา GDPR หรือรายการพาร์ทเนอร์โฆษณาของรัฐในสหรัฐอเมริกาในส่วนความเป็นส่วนตัวและการแสดงข้อความแจ้งผู้ใช้ของ Ad Manager หากไม่ดำเนินการดังกล่าว พาร์ทเนอร์อาจแสดงโฆษณาในแอปของคุณไม่ได้
ดูข้อมูลเพิ่มเติมเกี่ยวกับการเปิดใช้การประมวลผลข้อมูลแบบจำกัด (RDP) และการขอความยินยอมตาม GDPR ด้วย SDK สำหรับ User Messaging Platform (UMP) ของ Google