การนำส่งแบบมีเงื่อนไขช่วยให้คุณกำหนดข้อกำหนดการกำหนดค่าอุปกรณ์บางอย่างเพื่อให้ระบบดาวน์โหลดโมดูลฟีเจอร์โดยอัตโนมัติระหว่างการติดตั้งแอปได้ เช่น คุณสามารถกําหนดค่าโมดูลฟีเจอร์ที่มีฟังก์ชันสําหรับเทคโนโลยีความจริงเสริม (AR) ให้พร้อมใช้งานเมื่อติดตั้งแอปสําหรับอุปกรณ์ที่รองรับ AR เท่านั้น
ปัจจุบันกลไกการแสดงโฆษณานี้รองรับการควบคุมการดาวน์โหลดข้อบังคับ ณ เวลาติดตั้งแอปตามการกำหนดค่าอุปกรณ์ต่อไปนี้
- ฟีเจอร์ฮาร์ดแวร์และซอฟต์แวร์ของอุปกรณ์ รวมถึงเวอร์ชัน OpenGL ES
- ประเทศของผู้ใช้
- ระดับ API
หากอุปกรณ์ไม่เป็นไปตามข้อกําหนดทั้งหมดที่คุณระบุ ระบบจะไม่ดาวน์โหลดข้อบังคับ ณ เวลาติดตั้งแอป อย่างไรก็ตาม แอปอาจขอดาวน์โหลดโมดูลตามคําขอในภายหลังโดยใช้ Play Core SDK
ก่อนเริ่มต้น ให้ตรวจสอบว่าคุณใช้ Android Studio 3.5 ขึ้นไป ส่วนต่อไปนี้จะแสดงวิธีเพิ่มการรองรับการแสดงโฆษณาแบบมีเงื่อนไขลงในโมดูลฟีเจอร์
เพิ่มโมดูลใหม่ที่มีตัวเลือกการแสดงโฆษณาแบบมีเงื่อนไข
วิธีที่ง่ายที่สุดในการสร้างข้อบังคับใหม่ที่มีการแสดงผลแบบมีเงื่อนไขคือการผ่านวิซาร์ดข้อบังคับใหม่ ดังนี้
- หากต้องการเปิดกล่องโต้ตอบข้อบังคับใหม่ ให้เลือกไฟล์ > ใหม่ > ข้อบังคับใหม่จากแถบเมนู
- ในกล่องโต้ตอบ "ข้อบังคับใหม่" ให้เลือกข้อบังคับฟีเจอร์แบบไดนามิก แล้วคลิกถัดไป
- กำหนดค่าโมดูลตามปกติ แล้วคลิกถัดไป
ในส่วนตัวเลือกการดาวน์โหลดโมดูล ให้ทำดังนี้
ระบุชื่อข้อบังคับโดยใช้อักขระได้สูงสุด 50 ตัว แพลตฟอร์มจะใช้ชื่อนี้เพื่อระบุข้อบังคับต่อผู้ใช้ เช่น เมื่อยืนยันว่าผู้ใช้ต้องการดาวน์โหลดข้อบังคับหรือไม่ ด้วยเหตุนี้ โมดูลพื้นฐานของแอปจึงต้องมีชื่อโมดูลเป็นทรัพยากรสตริง ซึ่งคุณแปลได้ เมื่อสร้างโมดูลโดยใช้ Android Studio IDE จะเพิ่มทรัพยากรสตริงลงในโมดูลพื้นฐานให้คุณและแทรกรายการต่อไปนี้ในไฟล์ Manifest ของโมดูลฟีเจอร์
<dist:module ... dist:title="@string/feature_title"> </dist:module>
ในเมนูแบบเลื่อนลงในส่วนการรวมเวลาติดตั้ง ให้เลือกรวมเฉพาะโมดูลเมื่อติดตั้งแอปสำหรับอุปกรณ์ที่มีฟีเจอร์ที่ระบุ ซึ่งจะสร้างโมดูลที่รวมอยู่กับแอปของคุณเมื่อติดตั้งแอปในอุปกรณ์ที่มีการกำหนดค่าบางอย่างที่คุณระบุได้เท่านั้น เช่น ฟีเจอร์ของอุปกรณ์หรือประเทศ Android Studio จะแทรกข้อมูลต่อไปนี้ในไฟล์ Manifest ของโมดูลเพื่อแสดงตัวเลือกของคุณ
<dist:module ... > <dist:delivery> <dist:install-time> <dist:conditions> <!-- If you specify conditions, as described in the steps below, the IDE includes them here. --> </dist:conditions> </dist:install-time> </dist:delivery> </dist:module>
หากต้องการจำกัดการดาวน์โหลดโมดูลโดยอัตโนมัติไปยังบางประเทศหรือระดับ API ขั้นต่ำ ให้คลิกเสร็จสิ้นเพื่อสร้างโมดูลให้เสร็จ แล้วอ่านส่วนเกี่ยวกับวิธีระบุเงื่อนไขตามประเทศหรือระดับ API ขั้นต่ำ หรือคลิก + ฟีเจอร์ของอุปกรณ์เพื่อเพิ่มฟีเจอร์ที่อุปกรณ์ต้องใช้เพื่อดาวน์โหลดโมดูล ณ เวลาที่ติดตั้ง
ข้าง device-feature ให้เลือกตัวเลือกใดตัวเลือกหนึ่งต่อไปนี้จากเมนูแบบเลื่อนลง แล้วระบุค่า
- ชื่อ: ให้คุณระบุฟีเจอร์ฮาร์ดแวร์หรือซอฟต์แวร์ที่จำเป็นสำหรับอุปกรณ์ในการดาวน์โหลดโมดูล ณ เวลาติดตั้ง ฟีเจอร์ที่การนำส่งแบบมีเงื่อนไขรองรับจะเหมือนกับฟีเจอร์ที่แสดงเป็น
FEATURE_*
ค่าคงที่โดยPackageManager
หากเลือกตัวเลือกนี้ ให้เริ่มพิมพ์ส่วนใดก็ได้ของค่าคงที่ของฟีเจอร์ เช่น "บลูทูธ" ในช่องข้างเมนูแบบเลื่อนลง แล้วเลือกรายการแนะนำที่ปรากฏขึ้น - เวอร์ชัน OpenGL ES: ให้คุณระบุเวอร์ชัน OpenGL ES ที่อุปกรณ์ต้องใช้เพื่อดาวน์โหลดโมดูล ณ เวลาติดตั้ง หากเลือกตัวเลือกนี้ ให้เริ่มพิมพ์เวอร์ชัน เช่น "0x00030001" ในช่องข้างเมนูแบบเลื่อนลง แล้วเลือกคำแนะนำที่ปรากฏขึ้น
- ชื่อ: ให้คุณระบุฟีเจอร์ฮาร์ดแวร์หรือซอฟต์แวร์ที่จำเป็นสำหรับอุปกรณ์ในการดาวน์โหลดโมดูล ณ เวลาติดตั้ง ฟีเจอร์ที่การนำส่งแบบมีเงื่อนไขรองรับจะเหมือนกับฟีเจอร์ที่แสดงเป็น
หากต้องการเพิ่มเงื่อนไขหลายรายการตามฟีเจอร์ของอุปกรณ์ที่ใช้ได้ ให้คลิก + ฟีเจอร์ของอุปกรณ์สำหรับเงื่อนไขฟีเจอร์ของอุปกรณ์แต่ละรายการที่ต้องการระบุ
เลือกช่องข้างการผสานหากต้องการให้โมดูลนี้พร้อมใช้งานสำหรับอุปกรณ์ที่ใช้ Android 4.4 (API ระดับ 20) หรือต่ำกว่า และรวมอยู่ใน APK หลายรายการ ซึ่งหมายความว่าคุณสามารถเปิดใช้ลักษณะการทำงานแบบออนดีมานด์สําหรับข้อบังคับนี้ และปิดใช้การผสานเพื่อยกเว้นข้อบังคับนี้จากอุปกรณ์ที่ไม่รองรับการดาวน์โหลดและการติดตั้ง APK แบบแยก Android Studio จะแทรกข้อมูลต่อไปนี้ในไฟล์ Manifest ของโมดูลเพื่อให้สอดคล้องกับตัวเลือกของคุณ
<dist:module ...> <dist:fusing dist:include="true | false" /> </dist:module>
เมื่อกำหนดค่าตัวเลือกการดาวน์โหลดโมดูลเสร็จแล้ว ให้คลิกเสร็จสิ้น
โปรดทราบว่าปลั๊กอิน Gradle ของ Android ไม่รองรับการเรียกใช้ lint จากโมดูลฟีเจอร์แบบไดนามิก การเรียกใช้ Lint จากข้อบังคับของแอปพลิเคชันที่เกี่ยวข้องจะเรียกใช้ Lint ในข้อบังคับของฟีเจอร์แบบไดนามิกและรวมปัญหาทั้งหมดไว้ในรายงาน Lint ของแอป
เพิ่มตัวเลือกการแสดงผลแบบมีเงื่อนไขลงในโมดูลฟีเจอร์ที่มีอยู่
คุณเพิ่มตัวเลือกการแสดงโฆษณาแบบมีเงื่อนไขลงในโมดูลฟีเจอร์ที่มีอยู่ได้อย่างง่ายดายผ่านไฟล์ Manifest ของโมดูล อย่างไรก็ตาม ก่อนอื่นคุณควรอ่านเกี่ยวกับความเข้ากันได้ของตัวเลือกการนำส่งแบบมีเงื่อนไขกับตัวเลือกการนำส่งอื่นๆ ที่คุณอาจเปิดใช้ไว้แล้ว
หากต้องการเริ่มต้นใช้งาน คุณต้องย้ายข้อมูลไฟล์ Manifest ไปยังองค์ประกอบ <dist:delivery>
ใหม่ก่อน ข้อมูลโค้ดด้านล่างแสดงตัวอย่างรูปแบบคำสั่งเก่า
<!-- This is the old syntax. -->
<dist:module
dist:title="@string/feature_title" dist:onDemand="true">
<dist:fusing dist:include="true"/>
</dist:module>
ตอนนี้ตัวเลือกการแสดงโฆษณาข้างต้นจะระบุดังนี้
<dist:module
dist:title="@string/feature_title">
<dist:delivery>
<dist:on-demand/>
</dist:delivery>
<dist:fusing dist:include="true"/>
</dist:module>
จากนั้นคุณสามารถรวมตัวเลือกการแสดงโฆษณาแบบมีเงื่อนไขตามฟีเจอร์ของอุปกรณ์ ดังนี้
<dist:module
dist:title="@string/feature_title">
<dist:delivery>
<dist:on-demand/>
<dist:install-time>
<dist:conditions>
<!-- Requires that the device support AR to download the module at
app install-time. -->
<dist:device-feature dist:name="android.hardware.camera.ar"/>
</dist:conditions>
</dist:install-time>
</dist:delivery>
<dist:fusing dist:include="true"/>
</dist:module>
ส่วนด้านล่างจะกล่าวถึงตัวเลือกอื่นๆ สำหรับการแสดงโฆษณาแบบมีเงื่อนไข เช่น ตามประเทศหรือระดับ API ขั้นต่ำ
ความสามารถในการใช้งานร่วมกับตัวเลือกการดาวน์โหลดโมดูลอื่นๆ
เนื่องจากโมดูลฟีเจอร์มีตัวเลือกหลายรายการในการกําหนดค่าวิธีแสดงฟีเจอร์แต่ละรายการในอุปกรณ์ของผู้ใช้ คุณจึงควรทําความเข้าใจว่าการตั้งค่าอื่นๆ ส่งผลต่อตัวเลือกการแสดงโฆษณาแบบมีเงื่อนไขอย่างไร ตารางต่อไปนี้สรุปความเข้ากันได้ของการแสดงโฆษณาแบบมีเงื่อนไขกับตัวเลือกการดาวน์โหลดข้อบังคับอื่นๆ
ตัวเลือกการดาวน์โหลดโมดูล | ความเข้ากันได้กับการแสดงโฆษณาแบบมีเงื่อนไข |
---|---|
การผสาน (<dist:fusing dist:include="true"/> ) |
หากโมดูลตั้งค่าตัวเลือกนี้เป็น "จริง" Google Play จะไม่สนใจตัวเลือกการแสดงโฆษณาแบบมีเงื่อนไขที่คุณระบุเมื่อนำแอปไปติดตั้งในอุปกรณ์ที่ใช้ API ระดับ 19 หรือต่ำกว่า กล่าวคือ โมดูลฟีเจอร์ที่เปิดใช้การผสานจะรวมอยู่เสมอเมื่อติดตั้งสำหรับอุปกรณ์ที่ใช้ API ระดับ 19 หรือต่ำกว่า |
เปิดใช้ทันที (<dist:module dist:instant="true"/> ) |
โมดูลฟีเจอร์ที่เปิดใช้ Instant ไม่รองรับตัวเลือกการแสดงโฆษณาแบบมีเงื่อนไข |
ออนดีมานด์ (<dist:on-demand/> ) |
โดยค่าเริ่มต้น หากคุณระบุตัวเลือกการแสดงโฆษณาแบบมีเงื่อนไข โมดูลจะพร้อมใช้งานตามคําขอด้วย |
ระบุเงื่อนไขตามประเทศ
การแสดงโฆษณาแบบมีเงื่อนไขยังช่วยให้คุณระบุประเทศที่ต้องการยกเว้น (หรือรวม) ไม่ให้ดาวน์โหลดโมดูลของคุณได้เมื่อติดตั้งแอป การระบุเงื่อนไขนี้อาจมีประโยชน์ในกรณีที่ข้อบังคับของคุณใช้วิธีการชำระเงินที่ใช้งานไม่ได้ในบางภูมิภาค
ในบริบทนี้ ประเทศของอุปกรณ์มักจะกำหนดโดยที่อยู่สำหรับการเรียกเก็บเงินของผู้ใช้ที่ลงทะเบียนไว้ในบัญชี Google Play
หากต้องการระบุประเทศสำหรับโมดูล ให้ใส่ข้อมูลต่อไปนี้ในไฟล์ Manifest ของฟีเจอร์ในโมดูล
<dist:conditions>
<!-- Set to "true" to specify countries to exclude from downloading
this module at app install-time. By default, modules are available
for download to all user countries. -->
<dist:user-countries dist:exclude="true">
<!-- Specifies the two-letter CLDR country code for regions that should
not download the module at app install-time. -->
<dist:country dist:code="CN"/>
<dist:country dist:code="HK"/>
</dist:user-countries>
</dist:conditions>
ระบุเงื่อนไขสําหรับระดับ API
การระบุเงื่อนไขตามระดับ API ของอุปกรณ์อาจมีประโยชน์หากโมดูลฟีเจอร์ใช้ API ที่มีให้บริการในแพลตฟอร์ม Android บางเวอร์ชันเท่านั้น
หากต้องการตั้งค่าเงื่อนไขตามระดับ API ของอุปกรณ์ขั้นต่ำหรือสูงสุด ให้ใส่ข้อมูลต่อไปนี้ในไฟล์ Manifest ของข้อบังคับ
<dist:conditions> <!-- Specifies the minimum API level that the device must satisfy in order to download your module at app install-time. The API level you specify must be greater or equal to the module's own minSdkVersion. --> <dist:min-sdk dist:value="21"/> <!-- Specifies the maximum API level that the device cannot exceed in order to download your module at app install-time. The API level you specify must be less than or equal to the module's own maxSdkVersion. --> <dist:max-sdk dist:value="24"/> </dist:conditions>
ระบุเงื่อนไขสำหรับพร็อพเพอร์ตี้อุปกรณ์อื่นๆ (เบต้า)
หากต้องการระบุเงื่อนไขสำหรับพร็อพเพอร์ตี้อื่นๆ ของอุปกรณ์ เช่น ชื่อรุ่น, RAM, ฟีเจอร์ของระบบ และระบบบนชิป คุณสามารถใช้ไฟล์การกําหนดค่าการกําหนดเป้าหมายอุปกรณ์
หากต้องการสร้างไฟล์การกําหนดค่าการกําหนดอุปกรณ์เป้าหมาย โปรดดูเอกสารประกอบสําหรับการกําหนดอุปกรณ์เป้าหมาย
เมื่อสร้างไฟล์การกําหนดค่าแล้ว คุณสามารถระบุกลุ่มอุปกรณ์สําหรับโมดูลได้โดยใส่ข้อมูลต่อไปนี้ในไฟล์ Manifest ของโมดูลฟีเจอร์
<dist:conditions>
<dist:device-groups>
<dist:device-group dist:name="myCustomGroup1"/>
<dist:device-group dist:name="myCustomGroup2"/>
</dist:device-groups>
</dist:conditions>