สัญญาณที่ปลอดภัยคือข้อมูลที่เข้ารหัสซึ่งอุปกรณ์ไคลเอ็นต์รวบรวมและแชร์กับผู้เสนอราคาบางราย หน้านี้จะแนะนําการเก็บรวบรวมและส่งสัญญาณที่ปลอดภัยไปยัง Google Ad Manager โดยใช้ SDK โฆษณาสื่ออินเทอร์แอกทีฟ (IMA)
ก่อนเริ่มต้น
โปรดตรวจสอบว่าคุณมี IMG SDK สําหรับ Android เวอร์ชัน 3.29.0 ขึ้นไปก่อนดำเนินการต่อ
สร้างอินเทอร์เฟซอะแดปเตอร์สัญญาณที่ปลอดภัย
หากต้องการรวบรวมและส่งสัญญาณที่ปลอดภัย ให้สร้างคลาสที่ใช้อินเทอร์เฟซต่อไปนี้
package companydomain.path.to.securesignals;
import android.content.Context;
import androidx.annotation.Keep;
import com.google.ads.interactivemedia.v3.api.signals.SecureSignalsAdapter;
/**
* An example implementation of Secure Signals adapter.
*/
@Keep
public final class MySecureSignalsAdapter implements SecureSignalsAdapter {
/**
* Default constructor with no arguments for IMA SDK to instantiate this class.
*/
public MySecureSignalsAdapter() {
}
}
เริ่มต้นอะแดปเตอร์
IMA SDK จะเริ่มต้นอะแดปเตอร์แต่ละรายการเพียงครั้งเดียวโดยการเรียกใช้เมธอดการเริ่มต้นของอะแดปเตอร์ ใช้เมธอดนี้เพื่อเริ่มการพึ่งพาการเข้ารหัส ตั้งค่าแคช หรือคํานวณสัญญาณใดๆ ล่วงหน้าซึ่งจะยังคงเหมือนเดิมในการเรียกคอลเล็กชันสัญญาณทั้งหมด
ตัวอย่างต่อไปนี้จะเริ่มต้นอะแดปเตอร์
...
/**
* Initialize your SDK and any dependencies.
* IMA SDK calls this function exactly once before signal collection.
*
* @param context The activity context that creates an ads loader.
* @param callback A callback function to pass initialization results to IMA SDK.
*/
@Override
public void initialize(Context context, SecureSignalsInitializeCallback callback) {
// Initialize your SDK and any dependencies.
...
// Notify IMA SDK of initialization success.
callback.onSuccess();
// If signal collection fails, call callback.onFailure();
// callback.onFailure(new Exception("Signal collection failed."));
}
...
การรวบรวมสัญญาณ
ก่อนที่จะเริ่มคําขอโฆษณา IMA SDK จะเรียกใช้เมธอดรวบรวมสัญญาณแบบไม่สอดคล้องกัน เมธอดของผู้รวบรวมสัญญาณเหล่านี้มีฟังก์ชัน Callback เพื่อส่งสัญญาณที่เข้ารหัสหรือรายงานข้อผิดพลาด
ตัวอย่างต่อไปนี้จะรวบรวมสัญญาณที่ปลอดภัยผ่านฟังก์ชันการเรียกกลับ
...
/**
* Invokes your SDK to collect, encrypt and pass the signal collection results to IMA SDK.
* IMA SDK calls this function before each ad request.
*
* @param context The activity context that creates an ads loader.
* @param callback A callback function to pass signal collection results to IMA SDK.
*/
@Override
public void collectSignals(Context context, SecureSignalsCollectSignalsCallback callback) {
try {
// Collect and encrypt the signals.
String signals = ...;
// Pass the encrypted signals to IMA SDK.
callback.onSuccess(signals);
} catch (Exception e) {
// Pass signal collection failures to IMA SDK.
callback.onFailure(e);
}
}
...
รายงานข้อผิดพลาด
หากต้องการสื่อสารกับผู้ใช้ที่ใช้คลาสอะแดปเตอร์ ให้รายงานข้อผิดพลาดทั้งหมดระหว่างการเก็บรวบรวมสัญญาณและส่งไปยังการเรียกกลับของเครื่องมือรวบรวมสัญญาณ กระบวนการนี้แก้ปัญหาที่เกิดขึ้นระหว่างการผสานรวมอะแดปเตอร์กับแอปพลิเคชัน
ข้อผิดพลาดที่อาจปรากฏขึ้นมีดังนี้
- ไม่พบ SDK หรือ Dependency ของคุณในแอปพลิเคชัน
- SDK หรือ Dependency ของคุณไม่มีสิทธิ์หรือความยินยอมของผู้ใช้ที่จําเป็นในการทำงาน
ระบุเวอร์ชันของอะแดปเตอร์
ในเวิร์กโฟลว์ โปรดตรวจสอบว่าคุณได้ระบุเวอร์ชันของอะแดปเตอร์ IMA SDK จะรวมเวอร์ชันอะแดปเตอร์ไว้ในคําขอโฆษณาแต่ละรายการ และส่งผ่านพร้อมกับสัญญาณที่ปลอดภัยในคําขอราคาเสนอ
ในคําขอราคาเสนอ คุณสามารถระบุรายละเอียดการเข้ารหัส การเข้ารหัส และการจัดรูปแบบที่แอดอะปเตอร์ใช้เพื่อสร้างสัญญาณที่ปลอดภัยโดยอิงตามเวอร์ชันของแอดอะปเตอร์
ตัวอย่างต่อไปนี้ระบุเวอร์ชันของอะแดปเตอร์
...
/**
* Specifies this adapter's version.
*/
private static final VersionInfo AdapterVersion = new VersionInfo(1, 0, 1);
...
/**
* @return The version of this adapter.
* IMA SDK calls this function before each ad request.
*/
@Override
public VersionInfo getVersion() {
return AdapterVersion;
}
...
แสดงผลเวอร์ชันรันไทม์ของ SDK
คุณออกแบบอะแดปเตอร์ให้ทำงานร่วมกับ SDK หลายเวอร์ชันได้ โปรดตรวจสอบว่าคุณส่งคืน SDK เวอร์ชันรันไทม์เพื่อให้อะแดปเตอร์ทำงานร่วมกับหลายเวอร์ชันได้ ในคำขอโฆษณาแต่ละรายการ IMA SDK จะรวมเวอร์ชันรันไทม์ไว้กับเวอร์ชันอะแดปเตอร์
ตัวอย่างต่อไปนี้จะขอและแสดงผลเวอร์ชันรันไทม์ SDK
...
/**
* @return The version of your SDK that this adapter is depending on.
* IMA SDK calls this function before each ad request.
*/
@Override
public VersionInfo getSDKVersion() {
// Request the version from your SDK and convert to an IMAVersion.
int[] mySDKVersion = ...;
return new VersionInfo(mySDKVersion[0], mySDKVersion[1], mySDKVersion[2]);
}
...
ลงทะเบียนอะแดปเตอร์กับ Google
คุณต้องลงทะเบียนชื่อแพ็กเกจ Android หรือกับ Google เพื่อให้ Google อนุญาตให้อะแดปเตอร์รวบรวมสัญญาณได้ IMA SDK จะเริ่มต้นเฉพาะอะแดปเตอร์ที่คุณลงทะเบียนกับ Google เท่านั้น
ตรวจสอบอะแดปเตอร์
หากต้องการตรวจสอบอะแดปเตอร์ ให้กรอกข้อมูลในส่วนต่อไปนี้
กำหนดค่าแอปพลิเคชันทดสอบ
กำหนดค่าแอปพลิเคชันทดสอบก่อนตรวจสอบอะแดปเตอร์ ทําตามขั้นตอนต่อไปนี้
เพิ่มทรัพยากร Dependency สําหรับ IMA SDK ลงในไฟล์ Gradle ระดับแอปของข้อบังคับ เช่น
app/build.gradle
dependencies { implementation 'com.google.ads.interactivemedia.v3:interactivemedia:3.29.0' }
เพิ่มการพึ่งพิงบิวด์ เช่น อะแดปเตอร์และ SDK
ยืนยันสัญญาณ
หากต้องการยืนยันว่าอะแดปเตอร์ส่งสัญญาณ ให้ใช้พร็อกซีเครือข่ายเพื่อตรวจสอบการเข้าชมจากคําขอโฆษณาของแอปพลิเคชัน หากดำเนินการสำเร็จ คุณจะเห็นสัญญาณในคําขอโฆษณาแต่ละรายการ
ดูตัวอย่างทั้งหมด
ส่วนนี้จะแสดงตัวอย่างขั้นตอนทั้งหมดที่เสร็จสมบูรณ์และพร้อมให้คุณใช้อ้างอิง
package companydomain.path.to.securesignals;
import android.content.Context;
import androidx.annotation.Keep;
import com.google.ads.interactivemedia.v3.api.VersionInfo;
import com.google.ads.interactivemedia.v3.api.signals.SecureSignalsAdapter;
import com.google.ads.interactivemedia.v3.api.signals.SecureSignalsCollectSignalsCallback;
import com.google.ads.interactivemedia.v3.api.signals.SecureSignalsInitializeCallback;
/**
* An example implementation of Secure Signals adapter.
*/
@Keep
public final class MySecureSignalsAdapter implements SecureSignalsAdapter {
/**
* Specifies this adapter's version.
*/
private static final VersionInfo AdapterVersion = new VersionInfo(1, 0, 1);
/**
* Default constructor with no arguments for IMA SDK to instantiate this class.
*/
public MySecureSignalsAdapter() {
}
/**
* Initialize your SDK and any dependencies.
* IMA SDK calls this function exactly once before signal collection.
*
* @param context The activity context that creates an ads loader.
* @param callback A callback function to pass initialization results to IMA SDK.
*/
@Override
public void initialize(Context context, SecureSignalsInitializeCallback callback) {
try {
// Initialize your SDK and any dependencies.
...
// Notify IMA SDK of initialization success.
callback.onSuccess();
} catch (Exception e) {
// Pass initialization failures to IMA SDK.
callback.onFailure(e);
}
}
/**
* Invokes your SDK to collect, encrypt and send the signal collection results to IMA SDK.
* IMA SDK calls this function before each ad request.
*
* @param context The activity context that creates an ads loader.
* @param callback A callback function to pass signal collection results to IMA SDK.
*/
@Override
public void collectSignals(Context context, SecureSignalsCollectSignalsCallback callback) {
try {
// Collect and encrypt the signals.
String signals = ...;
// Pass the encrypted signals to IMA SDK.
callback.onSuccess(signals);
} catch (Exception e) {
// Pass signal collection failures to IMA SDK.
callback.onFailure(e);
}
}
/**
* @return The version of this adapter.
* IMA SDK calls this function before each ad request.
*/
@Override
public VersionInfo getVersion() {
return AdapterVersion;
}
/**
* @return The version of your SDK that this adapter is depending on.
* IMA SDK calls this function before each ad request.
*/
@Override
public VersionInfo getSDKVersion() {
// Request the version from your SDK and convert to an IMAVersion.
int[] mySDKVersion = ...;
return new VersionInfo(mySDKVersion[0], mySDKVersion[1], mySDKVersion[2]);
}
}