การกำหนดเป้าหมายเนื้อหาตามประเทศคืออะไร
การกำหนดเป้าหมายเนื้อหาตามประเทศช่วยให้คุณแสดงเวอร์ชันต่างๆ ได้ (เช่น ความละเอียด) ของเนื้อหาเดียวกันไปยังอุปกรณ์ตามประเทศ ที่อยู่ของผู้ใช้ ตัวอย่างเช่น คุณอาจเลือกแสดงโฆษณาที่กำหนดเอง ในประเทศต่างๆ ที่แอปของคุณพร้อมให้บริการ ซึ่งทั้งหมดนี้จะไม่มี ทำให้ขนาดเกมโดยรวมเพิ่มขึ้นด้วยการแสดงโฆษณา เนื้อหาที่จำเป็นสำหรับผู้ใช้ อุปกรณ์ ซึ่งสร้างขึ้นจากแนวคิดเรื่อง Asset Pack ใน Asset Delivery ของ Play ดังที่คุณเห็นด้านล่าง คุณสามารถกำหนดเกณฑ์การกำหนดเป้าหมายได้สูงสุด 20 ประเทศ เซ็ต ในบริบทนี้ ประเทศของอุปกรณ์ ซึ่งโดยทั่วไปแล้วจะกำหนดโดยที่อยู่สำหรับการเรียกเก็บเงินของผู้ใช้ที่ลงทะเบียนใน บัญชี Play
เช่นเดียวกับ Play Asset Delivery การกำหนดเป้าหมายตามประเทศรองรับ Android 4.1 (ระดับ API 16) ขึ้นไป อย่างไรก็ตาม ในอุปกรณ์ที่ใช้ Android 4.4 (API ระดับ 19) หรือต่ำกว่า ระบบจะส่งชุดประเทศเริ่มต้นโดยไม่คำนึงถึงตำแหน่งที่ตั้งของผู้ใช้
เส้นทางของนักพัฒนาซอฟต์แวร์
ในระดับสูง ในการผสานรวมการกำหนดเป้าหมายตามประเทศลงในเกมที่คุณมีอยู่ ให้ทำตามขั้นตอนต่อไปนี้
- ผสานรวมการกำหนดเป้าหมายตามประเทศ (และตามส่วนขยาย, Play Asset Delivery)
ภายในเกมของคุณ
- รวม Play Asset Delivery ไว้ในเกมของคุณ (หากยังไม่ได้ทำ ทำแล้ว)
- แบ่งเนื้อหาออกเป็น Asset Pack
- รวบรวมโค้ดและชิ้นงานเข้าด้วยกันสำหรับขั้นสุดท้าย อาร์ติแฟกต์ Android App Bundle ที่คุณจะอัปโหลดไปยัง Play
- สร้างการกำหนดค่าการกำหนดอุปกรณ์เป้าหมายเพื่อให้ Play ทราบ
วิธีส่งเนื้อหาไปยังอุปกรณ์ของผู้ใช้
- ตั้งค่า API สำหรับนักพัฒนาซอฟต์แวร์ Google Play (หากยังไม่ได้ทำ) ซึ่งเป็นสิ่งที่คุณจะใช้ในการส่งการกำหนดค่าการกำหนดเป้าหมายไปยัง Play
- ทำตามขั้นตอนเพื่อสร้างการกำหนดค่าการกำหนดเป้าหมาย
- อัปโหลด AAB ไปยัง Play และทดสอบเพื่อให้มั่นใจว่าทุกอย่าง กำหนดค่าอย่างถูกต้อง
Gradle เป็นระบบบิลด์ที่แนะนำสำหรับเกม Java และเกมในเครื่อง สำหรับเกมที่สร้างขึ้นโดยใช้ Gradle ให้ทำตามขั้นตอนต่อไปนี้เพื่อกำหนดค่าระบบบิลด์ เพื่อสร้าง AAB ที่มีการรองรับการกำหนดเป้าหมายตามประเทศ
หากคุณส่งออกเกมไปที่ Gradle ให้สร้างเกมนั้นให้เสร็จ เราขอแนะนำให้ทำตามวิธีการเหล่านี้ (เช่น เกม Unity ส่งออกไปยัง Gradle))
การตั้งค่าการกำหนดเป้าหมายตามเนื้อหาตามประเทศภายในแอป
ผสานรวม Play Asset Delivery เข้ากับเกมของคุณ (หากยังไม่ได้ทำ)
Play Asset Delivery (PAD) ช่วยให้คุณนำส่งเกม ณ เวลาที่ติดตั้งหรือรันไทม์ โดยคุณสามารถอ่าน ภาพรวมได้ที่นี่ ด้วย Play จะแสดงเนื้อหาของ Asset Pack โดยอิงตามการกำหนดเป้าหมายตามประเทศ ในการกำหนดค่าประเทศที่คุณกำหนดให้กับสถานที่ตั้งต่างๆ ของผู้ใช้ ขอแนะนำให้ทำตามคำแนะนำด้านล่างและผสาน PAD เข้ากับ เกมของคุณ (เช่น สร้าง Asset Pack ใช้การดึงข้อมูลในเกม) แล้วแก้ไขโค้ดโปรเจ็กต์เพื่อเปิดใช้การกำหนดเป้าหมายตามประเทศ
เกรเดิล
สำหรับเกมที่สร้างด้วย Gradle ให้ใช้วิธีการเหล่านี้สำหรับ การสร้าง Asset Pack ด้วย Gradle จากนั้นทำตามวิธีการผสานรวม การดึงข้อมูล Asset Pack ภายในเกมของคุณ:
- Java
- เนทีฟ
- เกม Unity ส่งออกไปยัง Gradle แล้ว
- ใช้ไลบรารี Java ผ่านทาง JNI (เช่น ที่มีมาใน Unity)
การสร้างไดเรกทอรีเฉพาะชุดประเทศ
หากใช้ Gradle
ตอนนี้คุณจะแบ่งเนื้อหาออกเป็นชุดประเทศ (สูงสุด 20 ชุด) ที่กำหนดในภายหลัง สร้างไดเรกทอรีเป้าหมายโดยใช้ไดเรกทอรีที่มีอยู่ ไดเรกทอรีไฟล์เนื้อหาที่สร้างขึ้นในขั้นตอนสุดท้าย และโพสต์การแก้ไข โฟลเดอร์ที่เหมาะสม (ตามที่อธิบายด้านล่าง) พร้อมกับ #countries_latam, #countries_na, เป็นต้น เมื่อใช้ Asset Pack ในเกม คุณก็ไม่ต้อง โฟลเดอร์ที่อยู่ตาม Postfix (กล่าวคือ Postfix จะทำหน้าที่ ถูกตัดออกระหว่างขั้นตอนการสร้าง)
หลังจากขั้นตอนก่อนหน้า อาจมีลักษณะดังนี้
...
.../level1/src/main/assets/character-textures#countries_latam/
.../level1/src/main/assets/character-textures#countries_na/
.../level1/src/main/assets/character-textures/
...
เมื่อคุณเข้าถึงไฟล์ในโฟลเดอร์เดียวกัน คุณสามารถใช้ไฟล์
ที่ไม่มีการแก้ไขโพสต์ (ในตัวอย่างนี้ ผมจะอ้างอิงเป็น
level1/assets/character-textures/
ที่ไม่มีการแก้ไขโพสต์)
การสร้าง Android App Bundle
เกรเดิล
ในไฟล์ build.gradle
ของโปรเจ็กต์ ให้กำหนดค่าทรัพยากร Dependency ให้มี
เวอร์ชันด้านล่าง (หรือสูงกว่า) สำหรับ
ปลั๊กอิน Android Gradle และ
bundletool:
buildscript {
dependencies {
classpath 'com.android.tools.build:gradle:8.1.0-alpha01'
classpath "com.android.tools.build:bundletool:1.14.0"
...
}
...
}
และจะต้องอัปเดตเวอร์ชัน Gradle เป็น 8.0 ขึ้นไปด้วย
คุณอัปเดตข้อมูลนี้ได้ใน gradle/wrapper/gradle-wrapper.properties
ภายในโปรเจ็กต์ของคุณ
distributionUrl=https://services.gradle.org/distributions/gradle-8.0-rc-1-all.zip
สุดท้าย คุณจะต้องใช้ไลบรารีการนำส่งเนื้อหา Play ถ้ายังอยู่ ที่ใช้ไลบรารี Play Core แบบโมโนลิธ ให้อัปเดตเป็นเวอร์ชัน 1.8.3 ขึ้นไป คำแนะนำจากเรา เปลี่ยนไปใช้ไลบรารีการนำส่งเนื้อหา Play และอัปเดตเป็นเวอร์ชันล่าสุด หากเป็นไปได้
dependencies {
implementation 'com.google.android.play:asset-delivery:2.0.1'
...
}
ในไฟล์ build.gradle
ของโมดูลแอปหลัก ให้เปิดใช้การแยกการกำหนดเป้าหมายประเทศ ดังนี้
android {
bundle {
countrySet {
enableSplit true
}
...
}
...
}
สุดท้าย คุณสร้าง Android App Bundle (AAB) ได้
Bundletool
สร้างแพ็กเกจของคุณด้วย Bundletool
และ
ในขั้นตอนการปรับแต่ง AAB
เพิ่มโค้ดต่อไปนี้ลงในไฟล์ BundleConfig.pb
ของคุณ
{
...
"optimizations": {
"splitsConfig": {
"splitDimension": [
...
{
"value": "COUNTRY_SET",
"negate": false,
"suffixStripping": {
"enabled": true,
}
}],
}
}
}
การทดสอบในเครื่อง
ก่อนที่จะดำเนินการต่อ เราขอแนะนำให้ทดสอบ App Bundle ในเครื่องเพื่อ
โปรดตรวจสอบว่าได้ตั้งค่าทุกอย่างถูกต้อง การใช้
bundletool
(1.14.0 ขึ้นไป) คุณ
สร้างและทดสอบแอปในเครื่อง โดยระบุประเทศที่ถูกต้องอย่างชัดเจน
โดยคุณจะใช้
build-apks
เพื่อสร้าง
ไฟล์ .apks
แล้วทำให้แอปใช้งานได้ในอุปกรณ์ที่เชื่อมต่อ
ด้วย install-apks
นอกจากนี้ คุณยังสามารถระบุชุดประเทศที่ต้องการติดตั้งผ่าน
แฟล็ก country-set
ดูข้อมูลเพิ่มเติมเกี่ยวกับวิธีการทดสอบในพื้นที่นี้ได้
ที่นี่ (โปรดทราบว่า
หน้าเว็บนี้ยังไม่ได้รับการอัปเดตสำหรับการกำหนดเป้าหมายตามประเทศ จึงหายไป
แฟล็ก country-set
)
bundletool build-apks --bundle=/path/to/app.aab --output=/path/to/app.apks --local-testing
bundletool install-apks --apks=/path/to/app.apks --country-set=latam
อีกวิธีหนึ่ง: คุณสามารถใช้
extract-apks
เพื่อดึงข้อมูล
APK สำหรับอุปกรณ์เฉพาะ การใช้
get-device-spec
แต่การระบุประเทศสำหรับอุปกรณ์นี้จะ
ไม่ทำงานร่วมกับ Flag --local-testing
ซึ่งหมายความว่า
สามารถทดสอบ Asset Pack แบบรวดเร็วหรือออนดีมานด์ได้
bundletool get-device-spec --output=/path/to/device-spec.json --country-set=latam
bundletool extract-apks --apks=/path/to/existing_APK_set.apks --output-dir=/path/to/device_specific_APK_set.apks --device-spec=/path/to/device-spec.json
การสร้างการกำหนดค่าการกำหนดอุปกรณ์เป้าหมายผ่าน Google Play Developer API
เริ่มต้นใช้งาน Google Play Developer API (หากยังไม่ได้ดำเนินการ)
หากต้องการกำหนดค่าการกำหนดเป้าหมายตามประเทศ (เช่น การกำหนดชุดประเทศ) คุณจะต้องทำดังนี้ ที่ต้องใช้ API ผู้เผยแพร่โฆษณา Android เพื่ออัปโหลดการกำหนดค่าไปยัง Google Play คุณสามารถอ่านเพิ่มเติมเกี่ยวกับ API ได้ที่ ลิงก์ด้านบนมีลิงก์ ขั้นตอนที่คุณต้องทำตามเพื่อเริ่มต้นใช้งาน
คุณสามารถค้นหาการอ้างอิง API ที่นี่ - หลังจากนั้น หากเลือกอัปโหลดบิลด์ผ่าน API คุณจะต้อง โดยใช้ วิธีแก้ไข นอกจากนี้ เรายังแนะนำให้ ดูหน้านี้ ก่อนใช้ API
การใช้ API การกำหนดค่าการกำหนดอุปกรณ์เป้าหมาย
คุณใช้การเรียก API ต่อไปนี้เพื่อสร้างการกำหนดค่าการกำหนดอุปกรณ์เป้าหมายได้
สร้างการกำหนดค่าการกำหนดอุปกรณ์เป้าหมาย
คำขอ HTTP | POST https://androidpublisher.googleapis.com/androidpublisher/v3/applications/{packageName}/deviceTierConfigs |
พารามิเตอร์เส้นทาง | ไม่มี |
เนื้อความของคำขอ | การกำหนดค่าการกำหนดอุปกรณ์เป้าหมาย |
เนื้อหาการตอบกลับ | การกำหนดค่าการกำหนดอุปกรณ์เป้าหมาย |
ออบเจ็กต์การกำหนดค่าการกำหนดอุปกรณ์เป้าหมาย
{
"user_country_sets": [
{
"name": "latam",
"country_codes": [
"AR",
"BR",
...
]
},
{
"name": "sea",
"country_codes": [
"VN",
"TW",
...
]
}
]
}
ช่อง:
- device_confid_id (จำนวนเต็ม): รหัสที่ตรงกับอุปกรณ์นี้ การกำหนดค่าการกำหนดเป้าหมาย
- user_country_sets (ออบเจ็กต์): คำจำกัดความชุดประเทศ
- name (สตริง): ชื่อชุดประเทศ (รหัสสตริงที่คุณกำหนด)
- country_codes (สตริง): ประเทศที่อยู่ในประเทศชุดนี้ (รูปแบบ: ISO 3166-1 alpha-2)
คุณสามารถทำตามวิธีการด้านล่างสำหรับ ตรวจสอบการกำหนดค่าการกำหนดอุปกรณ์เป้าหมายก่อน เพื่ออัปโหลดไปยัง Google Play
รับการกำหนดค่าการกำหนดอุปกรณ์เป้าหมายตามรหัส
คุณสามารถดึงข้อมูลการกำหนดค่าการกำหนดอุปกรณ์เป้าหมายที่เฉพาะเจาะจงตามรหัสได้โดยใช้ การโทรต่อไปนี้:
คำขอ HTTP |
GET https://androidpublisher.googleapis.com/androidpublisher/v3/applications/{packageName}/deviceTierConfigs/{deviceTierConfigId}
|
พารามิเตอร์เส้นทาง | ไม่มี |
เนื้อความของคำขอ | ไม่มี |
เนื้อหาการตอบกลับ | การกำหนดค่าการกำหนดอุปกรณ์เป้าหมาย |
รับรายการการกำหนดค่าการกำหนดอุปกรณ์เป้าหมาย
คุณสามารถดูการกำหนดค่าการกำหนดอุปกรณ์เป้าหมาย 10 รายการล่าสุดได้จากการเรียกต่อไปนี้ (หรือระบุชุดเลข 10 อย่างเหมาะสมโดยใช้พารามิเตอร์การค้นหา page_token ดังนี้
คำขอ HTTP | GET https://androidpublisher.googleapis.com/androidpublisher/v3/applications/{packageName}/deviceTierConfigs |
พารามิเตอร์เส้นทาง | ไม่มี |
พารามิเตอร์การค้นหา | page_token (ไม่บังคับ) ใช้เพื่อระบุ กลุ่ม DTC 10 กลุ่มที่เจาะจง ซึ่งจะเป็นประโยชน์หากคุณสร้าง DTC มากกว่า 10 รายการ และต้องการดู DTC ที่สร้างขึ้น ก่อน 10 รายการล่าสุด |
เนื้อความของคำขอ | ไม่มี |
เนื้อหาการตอบกลับ | รายการการกำหนดค่าการกำหนดอุปกรณ์เป้าหมาย
โทเค็นของหน้า |
การตรวจสอบการกำหนดค่าการกำหนดอุปกรณ์เป้าหมาย
bundletool
มีคำสั่ง 2 รายการที่จะช่วยตรวจสอบว่าอุปกรณ์ของคุณ
การกำหนดค่าการกำหนดเป้าหมายทำงานตามที่ต้องการก่อนอัปโหลดไปยัง Play
เมื่อใช้ bundletool print-device-targeting-config
คุณจะตรวจสอบได้ว่า JSON ของคุณ
มีความถูกต้องเชิงไวยากรณ์
bundletool print-device-targeting-config --config=mydtc.json
เมื่อใช้ bundletool evaluate-device-targeting-config
คุณจะประเมินสิ่งที่
ชุดประเทศจะตรงกับอุปกรณ์ที่เฉพาะเจาะจง คุณให้ผู้ใช้ได้
โดยใช้ธง--country-code
bundletool evaluate-device-targeting-config --config=mydtc.json --connected-device --country-code=AR
การอัปโหลด Android App Bundle ไปยัง Google Play
ผ่าน API
คุณใช้ Google Play Developer API เพื่ออัปโหลด Android App Bundle ได้ ไปยัง Google Play และลิงก์การกำหนดค่าการกำหนดอุปกรณ์เป้าหมายที่เจาะจงกับ งานสร้างของคุณ
มี
ภาพรวมทั่วไปของวิธีการแก้ไขที่นี่
พร้อมทั้ง
ตัวอย่างที่เจาะลึกมากขึ้นเกี่ยวกับการเผยแพร่ไปยังแทร็กต่างๆ ใน Google Play Console
(สำหรับลิงก์สุดท้าย คุณควรใช้เมธอด
API ที่เหมาะสำหรับ AAB
แทนที่จะเป็น
API ที่ใช้กับ APK ได้
ซึ่งแสดงอยู่ในหน้าเว็บ) หากต้องการระบุค่ากำหนดการกำหนดอุปกรณ์เป้าหมายสำหรับ
บิลด์ของคุณ คุณจะเพิ่มรหัสการกำหนดค่าลงใน deviceTierConfigId
พารามิเตอร์การค้นหาขณะเรียก
edits.bundle.upload
ดังนี้
https://androidpublisher.googleapis.com/upload/androidpublisher/v3/applications/{packageName}/edits/{editId}/bundles?deviceTierConfigId="{deviceTierConfigId}
ผ่าน Google Play Console
คุณสามารถทำตามวิธีการที่นี่ เพื่ออัปโหลด Android App Bundle การกำหนดค่า DTC ล่าสุดจะเป็น ที่ใช้กับ App Bundle ของคุณ
กำลังยืนยันว่ามีการส่งเนื้อหาที่ถูกต้อง
ใช้วิธีการต่อไปนี้เพื่อให้ระบบส่งเฉพาะเนื้อหาที่ถูกต้องเท่านั้น ไปยังอุปกรณ์
adb shell pm path {packageName} |
คุณควรจะเห็นสิ่งต่อไปนี้
package:{...}/base.apk
package:{...}/split_config.en.apk
package:{...}/split_config.xxhdpi.apk
package:{...}/split_main_asset.apk
package:{...}/split_main_asset.config.countries_latam.apk
ตัวช่วย
คู่มือเริ่มต้นฉบับย่อโดยใช้ Curl
ด้านล่างเป็นตัวอย่าง (โดยใช้ curl ของเครื่องมือบรรทัดคำสั่ง) การสร้างการกำหนดค่าการกำหนดเป้าหมายอุปกรณ์ใหม่ และ ใช้ Edits API เพื่อสร้างการแก้ไขใหม่ อัปโหลด AAB ใหม่ (การเชื่อมโยง ด้วยการกำหนดค่าการกำหนดอุปกรณ์เป้าหมายที่เจาะจง) กำหนดค่าการติดตาม/รุ่น และคอมมิต การแก้ไข (จึงทำให้การเปลี่ยนแปลงเป็นสาธารณะ) โปรดตรวจสอบว่าคุณมี ตำแหน่งของ:
- คีย์ที่สอดคล้องกับไคลเอ็นต์ API ของคุณ
- ชื่อแพ็กเกจของแอป
ขั้นแรก ให้สร้างการกำหนดค่าการกำหนดอุปกรณ์เป้าหมาย และจดบันทึกค่า
deviceTierConfigId
คุณจะได้รับเมื่อการโทรเสร็จสมบูรณ์
curl -H "$(oauth2l header --json $HOME/{apiKey} androidpublisher)" -XPOST -H "Content-Type: application/json" -d "{ "user_country_sets": [ { "name": "latam", "country_codes": [ "AR", "BR" ] }, { "name": "sea", "country_codes": [ "VN", "TW" ] } ] }" https://androidpublisher.googleapis.com/androidpublisher/v3/applications/{packageName}/deviceTierConfigs
เริ่มแก้ไข - คุณจะได้รับรหัสและเวลาหมดอายุสำหรับการแก้ไข บันทึกรหัสสำหรับ ต่อจากการโทรครั้งนั้น
curl -H "$(oauth2l header --json $HOME/{apiKey} androidpublisher)" -XPOST https://androidpublisher.googleapis.com/androidpublisher/v3/applications/{packageName}/edits
อัปโหลด AAB ระบุการกำหนดค่าการกำหนดอุปกรณ์เป้าหมายเป็นพารามิเตอร์การค้นหา - หากเป็นการเรียก คุณจะเห็นรหัสเวอร์ชัน, sha1 และ sha256 ของบิลด์ บันทึก รหัสเวอร์ชันสำหรับการเรียกครั้งต่อไป
curl -H "$(oauth2l header --json $HOME/{apiKey} androidpublisher)" --data-binary @$HOME/{aabFile} -H "Content-Type: application/octet-stream" -XPOST https://androidpublisher.googleapis.com/upload/androidpublisher/v3/applications/{packageName}/edits/{editID}/bundles?deviceTierConfigId="{deviceTargetingConfigID}"
กำหนด AAB ให้กับแทร็กที่ต้องการ (สำหรับการทดสอบ ขอแนะนําให้ใช้แทร็กทดสอบภายใน แต่คุณสามารถ อ่านเพิ่มเติมเกี่ยวกับแทร็กต่างๆ ที่นี่), จะมีการเปิดตัวง่ายๆ ที่ไม่ต้องมีบันทึกประจำรุ่น แต่คุณสามารถ อ่านหน้านี้ เพื่อดูข้อมูลเพิ่มเติมเกี่ยวกับวิธีการเปิดตัวแบบทีละขั้น เวอร์ชันร่าง และบันทึกประจำรุ่น หากคุณใช้ Publisher API เป็นครั้งแรก เราขอแนะนำให้สร้าง เวอร์ชันนี้เป็นเวอร์ชันร่าง และ สิ้นสุดการเปิดตัวใน Google Play Console เพื่อตรวจสอบว่าทุกอย่างได้รับการกำหนดค่าอย่างถูกต้อง
curl -H "$(oauth2l header --json $HOME/{apiKey} androidpublisher)" -XPUT -H "Content-Type: application/json" -d "{ releases: [{status: '{status}'</code>, <code><strong>versionCodes</strong></code>: <code>['{versionCode}']</code> <code><strong>}]}</strong></code>" <code>https://androidpublisher.googleapis.com/androidpublisher/v3/applications/{packageName}/edits/{editID}/tracks/{track}
การเปลี่ยนแปลงคอมมิต (ดำเนินการด้วยความระมัดระวัง เนื่องจากการเปลี่ยนแปลงทั้งหมดจะเผยแพร่ใน Play ไปยังแทร็กที่ต้องการ)
curl -H "$(oauth2l header --json $HOME/{apiKey} androidpublisher)" -XPOST https://androidpublisher.googleapis.com/androidpublisher/v3/applications/{packageName}/edits/{editID}:commit