นอกจากนี้ SDK โฆษณาในอุปกรณ์เคลื่อนที่ของ Google ยังรองรับสไตล์โฆษณาที่กำหนดเองในเครือข่ายการค้นหาอีกด้วย หากแอปของคุณ ใช้ SDK โฆษณาในอุปกรณ์เคลื่อนที่ของ Google อยู่แล้ว เราขอแนะนำให้ใช้ เวอร์ชัน AFSMA SDK แทน
หากคุณกำลังอัปเกรดเป็นรุ่น 19.0.0 หรือใหม่กว่าจาก 18.1.0 หรือเก่ากว่า โปรดดูที่ คำแนะนำในการย้ายข้อมูล
ข้อกำหนดเบื้องต้น
คู่มือการติดตั้งใช้งานนี้จะถือว่าคุณคุ้นเคยกับสิ่งต่อไปนี้
- โฆษณา Search ที่กําหนดเองของ AdSense ที่มีสไตล์โฆษณาที่กําหนดเอง
- การพัฒนาแอป Android
นำเข้า SDK เนทีฟของ AFS
เพิ่ม SDK
หากต้องการเพิ่ม AFS Native SDK ลงในแอป ให้ทําดังนี้
เปิดไฟล์ build.gradle
ภายในไดเรกทอรีโมดูลแอปพลิเคชัน
เพิ่มกฎการสร้างใหม่ในส่วน dependencies
สำหรับ SDK เวอร์ชันล่าสุด
dependencies {
implementation 'com.google.android.gms:play-services-afs-native:19.1.0'
}
ตรวจสอบว่า build.gradle
ระดับบนสุดมีการอ้างอิงไปยัง google()
ที่เก็บหรือไปที่ maven { url "https://maven.google.com" }
ทำตามวิธีการเหล่านี้
ให้รวมปลั๊กอินตัวจับคู่เวอร์ชันสแตนด์อโลนของ Google Play ไว้ในโครงการของคุณ
การใช้ปลั๊กอินนี้ทำให้เกิดข้อผิดพลาดในการสร้าง Gradle เมื่อ AFS Native SDK คือ
ใช้กับบริการ Google Play เวอร์ชันที่เข้ากันไม่ได้ แทนที่จะอนุญาต
แอปที่สร้างแต่อาจทำให้รันไทม์ขัดข้อง หรือใช้
failOnVersionConflict()
ResolutionStrategy
ในโปรเจ็กต์ของคุณเพื่อทำให้เกิดข้อผิดพลาดในการสร้างเมื่อ Google Play เวอร์ชันที่เข้ากันไม่ได้
ระบบจะใช้บริการในโปรเจ็กต์ของคุณ
บันทึกการเปลี่ยนแปลงและคลิกซิงค์โปรเจ็กต์กับไฟล์ Gradle
แถบเครื่องมือ
ใช้ AndroidX แทนไลบรารีการสนับสนุนของ Android
ตั้งแต่ SDK เวอร์ชัน 17.0.0
เป็นต้นไป แอปของคุณต้องใช้ไลบรารี Jetpack (AndroidX) แทนไลบรารีสนับสนุนของ Android ข้อกำหนดความเข้ากันได้
- ตั้งค่า
com.android.tools.build:gradle
เป็น v3.2.1 ขึ้นไป - ตั้งค่า
compileSdkVersion
เป็น 28 ขึ้นไป - อัปเดตแอปเพื่อใช้ Jetpack (AndroidX) โดยทําตามวิธีการในหัวข้อการย้ายข้อมูลไปยัง AndroidX
ชั้นเรียน
ในการแสดงโฆษณาเนทีฟ AFS ในแอปของคุณ ให้ใช้คลาสต่อไปนี้
- คลาสนี้มีหน้าที่ในการขอโฆษณา การแคช และแบบอะซิงโครนัส ดึงโฆษณา และแสดงผลโฆษณา
- บริบทโฆษณาแต่ละรายการต้องมี
SearchAdController
แยกกัน เช่น หากคุณ มีหน้าจอที่แสดงโฆษณาอยู่ข้างๆ รายการผลการค้นหา ซึ่งแสดงโฆษณาควบคู่ไปกับรายละเอียดของผลิตภัณฑ์ที่เฉพาะเจาะจง สร้างอินสแตนซ์SearchAdController
แยกกัน 2 รายการ โดยแต่ละรายการมีไว้สำหรับแต่ละกรณี - ตัวสร้างต้องระบุรหัสพร็อพเพอร์ตี้ของเว็บ (รหัสผู้เผยแพร่โฆษณา), รหัสสไตล์ที่จะใช้กับโฆษณาที่แสดง และ
SearchAdOptions
Context
ที่ระบุไว้ในเครื่องมือสร้าง ต้องเป็นActivity
ที่มีSearchAdController
และตำแหน่งของคุณ จะวางโฆษณาView
- เรียกใช้
loadAds
เพื่อระบุการค้นหาผู้ใช้ใหม่ และเริ่มโฆษณาแบบไม่พร้อมกัน อีกครั้ง ระบบจะล้างโฆษณาที่โหลดจากการเรียกloadAds
ก่อนหน้านี้ออกจากแคชโฆษณาภายในเมื่อมีการทำคําเรียกใหม่ - สร้าง
View
ด้วยcreateAdView
เพื่อแสดงครีเอทีฟโฆษณา - เมื่อโฆษณาโหลดแล้ว ให้เรียกใช้
populateAdView
ด้วยView
ที่สร้างขึ้นก่อนหน้านี้ ด้วยcreateAdView
เพื่อแสดงผลโฆษณาที่แคชไว้ในView
นั้น นอกจากView
ที่จะเติมข้อมูล ให้ระบุadKey
ซึ่งเป็นสตริงที่กำหนดเองให้กับ ระบุโฆษณาได้โดยไม่ซ้ำกัน ซึ่งจะเชื่อมโยงครีเอทีฟโฆษณาที่เฉพาะเจาะจงซึ่งแสดงผลจากแคชกับadKey
นั้น ดังนั้นเมื่อมีการนําadKey
เดียวกันไปเรียกใช้populateAdView
ในอนาคต ระบบจะแสดงโฆษณาเดียวกัน ตัวอย่างเช่น หากเรียกใช้populateAdView
เป็นครั้งแรกด้วยadKey="keyA"
และแสดงผลโฆษณารองเท้าเดินป่า การเรียกใช้populateAdView
ด้วยadKey="keyA"
แต่ละครั้งต่อจากนั้นจะแสดงโฆษณารองเท้าเดินป่าเดียวกัน (กำลังโทรใหม่เพื่อloadAds
จะล้างโฆษณาที่แคชไว้และคีย์โฆษณาที่เกี่ยวข้องทั้งหมด)
- ส่งออบเจ็กต์นี้ไปยังคอนสตรัคเตอร์
SearchAdController
เพื่อปรับแต่งวิธีขอและแสดงโฆษณา โทรหาbuild()
บนSearchAdOptions.Builder
ไปยัง สร้างออบเจ็กต์SearchAdOptions
View
- สร้างออบเจ็กต์
View
เพื่อระงับโฆษณาโดยเรียกใช้createAdView()
ในSearchAdController
แสดงโฆษณาสูงสุดครั้งละ 1 รายการ แต่View
รายการเดียวกันสามารถ เพื่อนำไปแสดงใหม่ในตำแหน่งต่างๆ ได้ด้วย
- เรียกใช้เมธอด
loadAds
ในSearchAdController
ด้วยSearchAdRequest
เพื่อเริ่มคำขอโฆษณาแบบอะซิงโครนัส โทรหาbuild()
บนSearchAdRequest.Builder
เพื่อสร้างออบเจ็กต์SearchAdRequest
- ใช้อินเทอร์เฟซนี้และส่งไปยังเครื่องมือสร้าง
SearchAdController
ในการลงทะเบียน Callback สำหรับหลายๆ รัฐ - หมายเหตุ: ระบบจะไม่เรียกการโทรกลับ
AdListener
รายการสำหรับคำขอที่ยกเลิก (การโทร ไปยังloadAds
ที่ถูกจองไว้โดยการโทรอีกครั้งถึงloadAds
ก่อนการโทรครั้งแรก การโทรได้รับการแก้ไขแล้ว)
ตัวอย่างการใช้งาน
ตัวอย่างด้านล่างแสดงการสร้าง SearchAdController
ในตัวอย่าง
Activity
// MainActivity.java implementation
// (MainActivity is a subclass of Activity)
SearchAdController adController;
// adContainer where we will place our ads in this example.
ViewGroup adContainer;
protected void onCreate(Bundle bundle){
super.onCreate(bundle);
adContainer = (ViewGroup) findViewById(...);
// Specify ad options (not required).
SearchAdOptions.Builder adOptionsBuilder = new SearchAdOptions.Builder();
adOptionsBuilder.setAdType(SearchAdOptions.AD_TYPE_TEXT);
adOptionsBuilder.setPrefetch(true);
adOptionsBuilder.setNumAdsRequested(3);
// Provide a callback to trigger when ads are loaded.
AdListener adListener = new AdListener() {
public void onAdLoaded() {
createAndShowAd();
}
};
// Instantiate the SearchAdController.
adController = new SearchAdController(this, "your-client-id", "your-style-id",
adOptionsBuilder.build(), adListener);
}
เมื่อผู้ใช้เริ่มการค้นหา ให้สร้าง SearchAdRequest
และเรียกใช้ loadAds
ใน SearchAdController
เพื่อเริ่มคำขอโฆษณาแบบไม่พร้อมกัน
// Create the request.
SearchAdRequest.Builder requestBuilder = new SearchAdRequest.Builder();
requestBuilder.setQuery("user query here");
// Load the ads.
adController.loadAds(requestBuilder.build());
ใช้การเรียกกลับ onAdLoaded
เพื่อแสดงโฆษณาที่โหลดลงในมุมมองโฆษณา
private void createAndShowAd() {
// Create a new view that will contain the ad.
View adView = adController.createAdView();
// Attach the new view to the view hierarchy.
adContainer.addView(adView);
// Display the ad inside the adView. We need to provide an adKey to
// indicate which ad is to be displayed in the adView. In this example,
// since we only have one ad, we can provide any constant string. However,
// if you intend to display multiple ads, each ad you wish to display
// should be given a unique adKey of your choosing.
adController.populateAdView(adView, "demoAd");
}
โฆษณาที่เกี่ยวข้องกับคำค้นหาดังกล่าวจะปรากฏใน adView
การตรวจสอบข้อผิดพลาด
SearchAdController
ต้องใช้ออบเจ็กต์ AdListener
ที่มีเมธอด onAdLoaded()
เพื่อแจ้งให้แอปทราบว่าโฆษณาพร้อมแสดงแล้ว คุณควรใช้
ใช้เมธอด onAdFailedToLoad()
เพื่อให้คุณตรวจหาและแก้ไขข้อผิดพลาดได้
ตัวอย่างเช่น คุณอาจใช้ AdListener
ต่อไปนี้เพื่อแก้ไขข้อบกพร่อง
การใช้งาน:
AdListener adListener = new AdListener() {
public void onAdLoaded() {
// Called when an ad is loaded.
Toast.makeText(MainActivity.this, "Ad Loaded",
Toast.LENGTH_SHORT).show();
Log.d(MainActivity.class.getSimpleName(), "Ad Loaded");
}
public void onAdLeftApplication() {
// Called when an ad leaves the application
// (to go to the browser for example).
Toast.makeText(MainActivity.this, "Ad Left Application",
Toast.LENGTH_SHORT).show();
Log.d(MainActivity.class.getSimpleName(), "Ad Left Application");
}
@Override
public void onAdFailedToLoad(int errorCode) {
// Called when an ad request failed.
Toast.makeText(MainActivity.this, "Ad Failed to Load: " + errorCode,
Toast.LENGTH_SHORT).show();
Log.e(MainActivity.class.getSimpleName(), "Ad Failed to Load: " +
errorCode);
}
};
ค่าคงที่ที่ใช้ในonAdFailedToLoad()
เมธอดการเรียกกลับ
จะกําหนดไว้ใน AdListener