Google User Messaging Platform (UMP) SDK เป็นเครื่องมือด้านความเป็นส่วนตัวและการรับส่งข้อความที่จะช่วยคุณจัดการตัวเลือกด้านความเป็นส่วนตัว ดูข้อมูลเพิ่มเติมได้ที่เกี่ยวกับความเป็นส่วนตัวและการรับส่งข้อความ
ข้อกำหนดเบื้องต้น
- Android API ระดับ 21 ขึ้นไป
สร้างประเภทข้อความ
สร้างข้อความสําหรับผู้ใช้ด้วยประเภทข้อความสําหรับผู้ใช้ที่ใช้ได้รายการใดรายการหนึ่งในส่วนความเป็นส่วนตัวและการแสดงข้อความแจ้งผู้ใช้ของบัญชี AdMob UMP SDK จะพยายามแสดงข้อความความเป็นส่วนตัวที่สร้างจากรหัสแอปพลิเคชัน AdMob ที่กําหนดไว้ในโปรเจ็กต์
ดูรายละเอียดเพิ่มเติมได้ที่เกี่ยวกับความเป็นส่วนตัวและการรับส่งข้อความ
ติดตั้งด้วย Gradle
เพิ่ม Dependency สำหรับ SDK สำหรับ User Messaging Platform ของ Google ลงในไฟล์ Gradle ระดับแอปของโมดูล โดยปกติจะเป็น app/build.gradle
dependencies {
implementation("com.google.android.ump:user-messaging-platform:3.1.0")
}
หลังจากทําการเปลี่ยนแปลงbuild.gradle
ของแอปแล้ว อย่าลืมซิงค์โปรเจ็กต์กับไฟล์ Gradle
เพิ่มรหัสแอปพลิเคชัน
คุณดูรหัสแอปพลิเคชันได้ใน
UI ของ AdMob
เพิ่มรหัสลงใน
AndroidManifest.xml
ด้วยข้อมูลโค้ดต่อไปนี้
<manifest>
<application>
<meta-data
android:name="com.google.android.gms.ads.APPLICATION_ID"
android:value="ca-app-pub-xxxxxxxxxxxxxxxx~yyyyyyyyyy"/>
</application>
</manifest>
รวบรวมความยินยอม
หากต้องการรวบรวมความยินยอม ให้ทําตามขั้นตอนต่อไปนี้
- คำขอข้อมูลความยินยอมล่าสุดของผู้ใช้
- โหลดและนำเสนอแบบฟอร์มความยินยอม (หากจำเป็น)
คำขอข้อมูลความยินยอม
คุณควรขออัปเดตข้อมูลความยินยอมของผู้ใช้ทุกครั้งที่เปิดแอปโดยใช้
requestConsentInfoUpdate()
คำขอนี้จะตรวจสอบ
สิ่งต่อไปนี้
- ต้องได้รับความยินยอมหรือไม่ เช่น ต้องได้รับความยินยอมเป็นครั้งแรก หรือความยินยอมก่อนหน้าหมดอายุ
- ระบุว่าจำเป็นต้องมีจุดแรกเข้าของตัวเลือกความเป็นส่วนตัวหรือไม่ ประกาศเกี่ยวกับความเป็นส่วนตัวบางข้อความกำหนดให้แอปต้องอนุญาตให้ผู้ใช้แก้ไขตัวเลือกความเป็นส่วนตัวของตนได้ทุกเมื่อ
โหลดและแสดงแบบฟอร์มประกาศเกี่ยวกับความเป็นส่วนตัว หากจำเป็น
หลังจากได้รับสถานะความยินยอมล่าสุดแล้ว ให้เรียกใช้
loadAndShowConsentFormIfRequired()
เพื่อโหลดแบบฟอร์มที่จําเป็นในการรวบรวมความยินยอมของผู้ใช้ หลังจากโหลดแล้ว แบบฟอร์มจะปรากฏขึ้นทันที
โค้ดต่อไปนี้แสดงวิธีขอข้อมูลความยินยอมล่าสุดของผู้ใช้ หากจำเป็น โค้ดจะโหลดและแสดงแบบฟอร์มประกาศเกี่ยวกับความเป็นส่วนตัว
Java
// Requesting an update to consent information should be called on every app launch.
consentInformation.requestConsentInfoUpdate(
activity,
params,
() ->
UserMessagingPlatform.loadAndShowConsentFormIfRequired(
activity,
formError -> {
// Consent has been gathered.
onConsentGatheringCompleteListener.consentGatheringComplete(formError);
}),
requestConsentError ->
onConsentGatheringCompleteListener.consentGatheringComplete(requestConsentError));
Kotlin
// Requesting an update to consent information should be called on every app launch.
consentInformation.requestConsentInfoUpdate(
activity,
params,
{
UserMessagingPlatform.loadAndShowConsentFormIfRequired(activity) { formError ->
// Consent has been gathered.
onConsentGatheringCompleteListener.consentGatheringComplete(formError)
}
},
{ requestConsentError ->
onConsentGatheringCompleteListener.consentGatheringComplete(requestConsentError)
},
)
ตัวเลือกความเป็นส่วนตัว
แบบฟอร์มข้อความเกี่ยวกับความเป็นส่วนตัวบางรายการจะแสดงจากจุดแรกเข้าของตัวเลือกความเป็นส่วนตัวที่ผู้เผยแพร่โฆษณาแสดงผล ซึ่งช่วยให้ผู้ใช้จัดการตัวเลือกความเป็นส่วนตัวได้ทุกเมื่อ ดูข้อมูลเพิ่มเติมเกี่ยวกับข้อความที่ผู้ใช้เห็นที่จุดแรกเข้าของตัวเลือกความเป็นส่วนตัวได้ที่ประเภทข้อความสำหรับผู้ใช้ที่ใช้ได้
ตรวจสอบว่าจำเป็นต้องใช้จุดแรกเข้าของตัวเลือกความเป็นส่วนตัวหรือไม่
หลังจากเรียกใช้
requestConsentInfoUpdate()
แล้ว ให้ตรวจสอบ
getPrivacyOptionsRequirementStatus()
เพื่อดูว่าแอปของคุณต้องใช้จุดแรกเข้าของตัวเลือกความเป็นส่วนตัวหรือไม่
Java
/** Helper variable to determine if the privacy options form is required. */
public boolean isPrivacyOptionsRequired() {
return consentInformation.getPrivacyOptionsRequirementStatus()
== PrivacyOptionsRequirementStatus.REQUIRED;
}
Kotlin
/** Helper variable to determine if the privacy options form is required. */
val isPrivacyOptionsRequired: Boolean
get() =
consentInformation.privacyOptionsRequirementStatus ==
ConsentInformation.PrivacyOptionsRequirementStatus.REQUIRED
เพิ่มองค์ประกอบที่มองเห็นได้ลงในแอป
หากจำเป็นต้องมีจุดแรกเข้าด้านความเป็นส่วนตัว ให้เพิ่มองค์ประกอบ UI ที่มองเห็นได้และโต้ตอบได้ลงในแอป ซึ่งจะแสดงแบบฟอร์มตัวเลือกความเป็นส่วนตัว หากไม่จำเป็นต้องใช้จุดเข้าถึงความเป็นส่วนตัว ให้กำหนดค่าองค์ประกอบ UI ไม่ให้มองเห็นได้และโต้ตอบได้
Java
if (googleMobileAdsConsentManager.isPrivacyOptionsRequired()) {
// Regenerate the options menu to include a privacy setting.
invalidateOptionsMenu();
}
Kotlin
if (googleMobileAdsConsentManager.isPrivacyOptionsRequired) {
// Regenerate the options menu to include a privacy setting.
invalidateOptionsMenu()
}
แสดงแบบฟอร์มตัวเลือกความเป็นส่วนตัว
เมื่อผู้ใช้โต้ตอบกับองค์ประกอบของคุณ ให้แสดงแบบฟอร์มตัวเลือกความเป็นส่วนตัวดังนี้
Java
UserMessagingPlatform.showPrivacyOptionsForm(activity, onConsentFormDismissedListener);
Kotlin
UserMessagingPlatform.showPrivacyOptionsForm(activity, onConsentFormDismissedListener)
ส่งคำขอแสดงโฆษณา
ก่อนขอโฆษณาในแอป ให้ตรวจสอบว่าคุณได้รับความยินยอมจากผู้ใช้โดยใช้
canRequestAds()
หรือไม่ มี 2 ที่ที่ควรตรวจสอบขณะรวบรวมความยินยอม ได้แก่
- หลังจากรวบรวมความยินยอมในเซสชันปัจจุบัน
- ทันทีที่คุณโทรหา
requestConsentInfoUpdate()
เป็นไปได้ว่าอาจได้รับความยินยอมแล้วในเซสชันก่อนหน้านี้ เราขอแนะนําว่าอย่ารอให้การเรียกกลับเสร็จสมบูรณ์เพื่อเริ่มโหลดโฆษณาโดยเร็วที่สุดหลังจากเปิดแอปตามแนวทางปฏิบัติแนะนำเกี่ยวกับเวลาในการตอบสนอง
หากเกิดข้อผิดพลาดระหว่างกระบวนการรวบรวมความยินยอม คุณควรตรวจสอบว่าสามารถขอโฆษณาได้หรือไม่ UMP SDK ใช้สถานะความยินยอมจากเซสชันก่อนหน้า
โค้ดต่อไปนี้จะตรวจสอบว่าคุณสามารถขอโฆษณาในระหว่างขั้นตอนการรวบรวมความยินยอมได้หรือไม่
Java
googleMobileAdsConsentManager.gatherConsent(
this,
consentError -> {
if (consentError != null) {
// Consent not obtained in current session.
Log.w(
TAG,
String.format("%s: %s", consentError.getErrorCode(), consentError.getMessage()));
}
if (googleMobileAdsConsentManager.canRequestAds()) {
initializeMobileAdsSdk();
}
// ...
});
// This sample attempts to load ads using consent obtained in the previous session.
if (googleMobileAdsConsentManager.canRequestAds()) {
initializeMobileAdsSdk();
}
Kotlin
googleMobileAdsConsentManager.gatherConsent(this) { error ->
if (error != null) {
// Consent not obtained in current session.
Log.d(TAG, "${error.errorCode}: ${error.message}")
}
if (googleMobileAdsConsentManager.canRequestAds) {
initializeMobileAdsSdk()
}
// ...
}
// This sample attempts to load ads using consent obtained in the previous session.
if (googleMobileAdsConsentManager.canRequestAds) {
initializeMobileAdsSdk()
}
โค้ดต่อไปนี้จะตั้งค่า SDK โฆษณาในอุปกรณ์เคลื่อนที่ของ Google หลังจากรวบรวมความยินยอมของผู้ใช้แล้ว
Java
private void initializeMobileAdsSdk() {
if (isMobileAdsInitializeCalled.getAndSet(true)) {
return;
}
new Thread(
() -> {
// Initialize the Google Mobile Ads SDK on a background thread.
MobileAds.initialize(this, initializationStatus -> {});
// Load an ad on the main thread.
runOnUiThread(this::loadBanner);
})
.start();
}
Kotlin
private fun initializeMobileAdsSdk() {
if (isMobileAdsInitializeCalled.getAndSet(true)) {
return
}
CoroutineScope(Dispatchers.IO).launch {
// Initialize the Google Mobile Ads SDK on a background thread.
MobileAds.initialize(this@MainActivity) {}
runOnUiThread {
// Load an ad on the main thread.
loadBanner()
}
}
}
การทดสอบ
หากต้องการทดสอบการผสานรวมในแอปขณะพัฒนา ให้ทำตามขั้นตอนเหล่านี้เพื่อลงทะเบียนอุปกรณ์ทดสอบแบบเป็นโปรแกรม อย่าลืมนำโค้ดที่กำหนดรหัสอุปกรณ์ทดสอบเหล่านี้ออกก่อนที่จะเผยแพร่แอป
- โทรมาที่
requestConsentInfoUpdate()
ตรวจสอบเอาต์พุตของบันทึกสำหรับข้อความที่คล้ายกับตัวอย่างต่อไปนี้ ซึ่งจะแสดงรหัสอุปกรณ์และวิธีเพิ่มลงในอุปกรณ์ทดสอบ
Use new ConsentDebugSettings.Builder().addTestDeviceHashedId("33BE2250B43518CCDA7DE426D04EE231") to set this as a debug device.
คัดลอกรหัสอุปกรณ์ทดสอบไปยังคลิปบอร์ด
แก้ไขโค้ดเพื่อเรียกใช้
ConsentDebugSettings.Builder().TestDeviceHashedIds
และส่งผ่านรายการรหัสอุปกรณ์ทดสอบJava
ConsentDebugSettings debugSettings = new ConsentDebugSettings.Builder(this) .addTestDeviceHashedId("TEST-DEVICE-HASHED-ID") .build(); ConsentRequestParameters params = new ConsentRequestParameters .Builder() .setConsentDebugSettings(debugSettings) .build(); consentInformation = UserMessagingPlatform.getConsentInformation(this); // Include the ConsentRequestParameters in your consent request. consentInformation.requestConsentInfoUpdate( this, params, // ... );
Kotlin
val debugSettings = ConsentDebugSettings.Builder(this) .addTestDeviceHashedId("TEST-DEVICE-HASHED-ID") .build() val params = ConsentRequestParameters .Builder() .setConsentDebugSettings(debugSettings) .build() consentInformation = UserMessagingPlatform.getConsentInformation(this) // Include the ConsentRequestParameters in your consent request. consentInformation.requestConsentInfoUpdate( this, params, // ... )
บังคับใช้ภูมิศาสตร์
UMP SDK เป็นวิธีทดสอบลักษณะการทำงานของแอปเสมือนว่าอุปกรณ์อยู่ในภูมิภาคต่างๆ เช่น EEA หรือสหราชอาณาจักร โดยใช้ setDebugGeography()
โปรดทราบว่าการตั้งค่าการแก้ไขข้อบกพร่องใช้ได้กับอุปกรณ์ทดสอบเท่านั้น
Java
ConsentDebugSettings debugSettings = new ConsentDebugSettings.Builder(this)
.setDebugGeography(ConsentDebugSettings.DebugGeography.DEBUG_GEOGRAPHY_EEA)
.addTestDeviceHashedId("TEST-DEVICE-HASHED-ID")
.build();
ConsentRequestParameters params = new ConsentRequestParameters
.Builder()
.setConsentDebugSettings(debugSettings)
.build();
consentInformation = UserMessagingPlatform.getConsentInformation(this);
// Include the ConsentRequestParameters in your consent request.
consentInformation.requestConsentInfoUpdate(
this,
params,
...
);
Kotlin
val debugSettings = ConsentDebugSettings.Builder(this)
.setDebugGeography(ConsentDebugSettings.DebugGeography.DEBUG_GEOGRAPHY_EEA)
.addTestDeviceHashedId("TEST-DEVICE-HASHED-ID")
.build()
val params = ConsentRequestParameters
.Builder()
.setConsentDebugSettings(debugSettings)
.build()
consentInformation = UserMessagingPlatform.getConsentInformation(this)
// Include the ConsentRequestParameters in your consent request.
consentInformation.requestConsentInfoUpdate(
this,
params,
...
)
รีเซ็ตสถานะความยินยอม
เมื่อทดสอบแอปด้วย UMP SDK คุณอาจพบว่าการรีเซ็ตสถานะของ SDK นั้นมีประโยชน์ เพื่อให้สามารถจำลองประสบการณ์การติดตั้งครั้งแรกของผู้ใช้ได้
SDK มีเมธอด reset()
ที่ใช้ดำเนินการนี้
Java
consentInformation.reset();
Kotlin
consentInformation.reset()
ตัวอย่างใน GitHub
ดูตัวอย่างการผสานรวม UMP SDK แบบเต็มซึ่งกล่าวถึงในหน้านี้ใน Java BannerExample และ Kotlin BannerExample