การกำหนดเป้าหมายเนื้อหาตามประเทศคืออะไร
การกำหนดเป้าหมายเนื้อหาตามประเทศช่วยให้คุณนำส่งเนื้อหาเดียวกันเวอร์ชันต่างๆ (เช่น ความละเอียด) ไปยังอุปกรณ์ตามประเทศที่ผู้ใช้อาศัยอยู่ได้ เช่น คุณอาจเลือกนำส่งชิ้นงานที่ปรับแต่งไปยังประเทศต่างๆ ที่แอปของคุณพร้อมให้บริการ โดยที่ไม่ต้องเพิ่มขนาดเกมโดยรวมด้วยการนำส่งเฉพาะชิ้นงานที่จําเป็นไปยังอุปกรณ์ของผู้ใช้ ซึ่งพัฒนาต่อจากแนวคิดของ Asset Pack ในPlay Asset Delivery ดังที่คุณจะเห็นว่าด้านล่าง คุณสามารถกําหนดเกณฑ์การกําหนดเป้าหมายด้วยชุดประเทศได้สูงสุด 20 ชุด ในบริบทนี้ ประเทศของอุปกรณ์มักจะกำหนดโดยที่อยู่สำหรับการเรียกเก็บเงินของผู้ใช้ที่ลงทะเบียนไว้ในบัญชี Google Play
การกำหนดเป้าหมายตามประเทศรองรับ Android 4.1 (API ระดับ 16) ขึ้นไปเช่นเดียวกับ Play Asset Delivery อย่างไรก็ตาม ในอุปกรณ์ที่ใช้ 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 จะแสดงเนื้อหาของชุดชิ้นงานตามการกำหนดค่าชุดประเทศที่คุณกำหนดไว้สำหรับสถานที่ตั้งของผู้ใช้แต่ละแห่ง เราขอแนะนำให้ทำตามคำแนะนำด้านล่างและผสานรวม PAD เข้ากับเกม (เช่น สร้างชุดชิ้นงาน ใช้การเรียกข้อมูลในเกม) จากนั้นแก้ไขโค้ดโปรเจ็กต์เพื่อเปิดใช้การกำหนดเป้าหมายตามประเทศ
Gradle
สำหรับเกมที่สร้างด้วย Gradle ให้ใช้วิธีการเหล่านี้เพื่อสร้าง Asset Pack ด้วย Gradle จากนั้นทำตามวิธีการในการผสานรวมการดึงข้อมูล Asset Pack ภายในเกม
- Java
- เนทีฟ
- เกม Unity ที่ส่งออกไปยัง Gradle
- ใช้ไลบรารี Java ผ่าน JNI (เช่น ไลบรารีที่สร้างไว้ใน Unity)
การสร้างไดเรกทอรีเฉพาะชุดประเทศ
หากใช้ Gradle
ตอนนี้คุณจะแบ่งเนื้อหาออกเป็นชุดประเทศ (สูงสุด 20 ชุด) ซึ่งจะกำหนดในภายหลัง สร้างไดเรกทอรีเป้าหมายโดยนำไดเรกทอรีกลุ่มชิ้นงานที่มีอยู่ซึ่งสร้างขึ้นในขั้นตอนสุดท้าย และแก้ไขโฟลเดอร์ที่เหมาะสม (ตามที่อธิบายไว้ด้านล่าง) ด้วย #countries_latam, #countries_na เป็นต้น เมื่อใช้ชุดชิ้นงานในเกม คุณไม่จําเป็นต้องระบุโฟลเดอร์ด้วยส่วนต่อท้าย (กล่าวคือ ระบบจะตัดส่วนต่อท้ายออกโดยอัตโนมัติในระหว่างกระบวนการบิลด์)
หลังจากขั้นตอนก่อนหน้า ข้อมูลอาจมีลักษณะดังนี้
...
.../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
Gradle
ในไฟล์ 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 Asset Delivery Library หากคุณยังใช้ไลบรารี Play Core โมโนลิธ ให้อัปเดตเป็นเวอร์ชัน 1.8.3 ขึ้นไป เราขอแนะนําให้เปลี่ยนไปใช้คลัง Play Asset Delivery และอัปเดตเป็นเวอร์ชันล่าสุด หากเป็นไปได้
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
นอกจากนี้ คุณยังระบุชุดประเทศที่ต้องการติดตั้งผ่าน Flag 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
ซึ่งหมายความว่าคุณจะทดสอบการติดตามอย่างรวดเร็วหรือแพ็กเกจชิ้นงานแบบออนดีมานด์ไม่ได้
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 (หากยังไม่ได้ดำเนินการ)
หากต้องการกำหนดค่าการกำหนดเป้าหมายตามประเทศ (เช่น การกำหนดชุดประเทศ) คุณจะต้องใช้ Android Publisher API เพื่ออัปโหลดการกำหนดค่าไปยัง Google Play อ่านข้อมูลเพิ่มเติมเกี่ยวกับ API ได้ที่ลิงก์ด้านบน โดยคุณจะต้องทําตามขั้นตอนต่อไปนี้เพื่อเริ่มต้นใช้งาน
คุณสามารถดูข้อมูลอ้างอิง API ได้ที่นี่ หากเลือกที่จะอัปโหลดบิลด์ผ่าน API คุณจะใช้เมธอดการแก้ไข นอกจากนี้ เราขอแนะนำให้อ่านหน้านี้ก่อนใช้ API
การใช้ Device Targeting Configuration 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 รายการล่าสุด |
เนื้อหาคำขอ | ไม่มี |
เนื้อหาการตอบกลับ | รายการการกําหนดค่าการกําหนดอุปกรณ์เป้าหมาย
page_token |
การตรวจสอบการกําหนดค่าการกําหนดอุปกรณ์เป้าหมาย
bundletool
มีคำสั่ง 2 รายการที่จะช่วยคุณตรวจสอบว่าการกำหนดค่าการกำหนดเป้าหมายอุปกรณ์ทำงานตามที่ตั้งใจไว้ก่อนอัปโหลดไปยัง Play
bundletool print-device-targeting-config
ช่วยให้คุณตรวจสอบได้ว่าไฟล์ JSON ถูกต้องตามไวยากรณ์
bundletool print-device-targeting-config --config=mydtc.json
bundletool evaluate-device-targeting-config
ให้คุณประเมินได้ว่าชุดประเทศใดจะตรงกับอุปกรณ์หนึ่งๆ คุณสามารถระบุประเทศของผู้ใช้ผ่าน Flag --country-code
bundletool evaluate-device-targeting-config --config=mydtc.json --connected-device --country-code=AR
การอัปโหลด Android App Bundle ไปยัง Google Play
ผ่าน API
คุณใช้ API สำหรับนักพัฒนาซอฟต์แวร์ Google Play เพื่ออัปโหลด 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
คุณสามารถทำตามวิธีการที่นี่เพื่ออัปโหลด App Bundle ของ Android ระบบจะใช้การกำหนดค่า 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