การกำหนดเป้าหมายเนื้อหาตามประเทศ

การกำหนดเป้าหมายเนื้อหาตามประเทศคืออะไร

การกำหนดเป้าหมายเนื้อหาตามประเทศช่วยให้คุณแสดงเวอร์ชันต่างๆ ได้ (เช่น ความละเอียด) ของเนื้อหาเดียวกันไปยังอุปกรณ์ตามประเทศ ที่อยู่ของผู้ใช้ ตัวอย่างเช่น คุณอาจเลือกแสดงโฆษณาที่กำหนดเอง ในประเทศต่างๆ ที่แอปของคุณพร้อมให้บริการ ซึ่งทั้งหมดนี้จะไม่มี ทำให้ขนาดเกมโดยรวมเพิ่มขึ้นด้วยการแสดงโฆษณา เนื้อหาที่จำเป็นสำหรับผู้ใช้ อุปกรณ์ ซึ่งสร้างขึ้นจากแนวคิดเรื่อง Asset Pack ใน Asset Delivery ของ Play ดังที่คุณเห็นด้านล่าง คุณสามารถกำหนดเกณฑ์การกำหนดเป้าหมายได้สูงสุด 20 ประเทศ เซ็ต ในบริบทนี้ ประเทศของอุปกรณ์ ซึ่งโดยทั่วไปแล้วจะกำหนดโดยที่อยู่สำหรับการเรียกเก็บเงินของผู้ใช้ที่ลงทะเบียนใน บัญชี Play

เช่นเดียวกับ Play Asset Delivery การกำหนดเป้าหมายตามประเทศรองรับ Android 4.1 (ระดับ API 16) ขึ้นไป อย่างไรก็ตาม ในอุปกรณ์ที่ใช้ Android 4.4 (API ระดับ 19) หรือต่ำกว่า ระบบจะส่งชุดประเทศเริ่มต้นโดยไม่คำนึงถึงตำแหน่งที่ตั้งของผู้ใช้

เส้นทางของนักพัฒนาซอฟต์แวร์

ในระดับสูง ในการผสานรวมการกำหนดเป้าหมายตามประเทศลงในเกมที่คุณมีอยู่ ให้ทำตามขั้นตอนต่อไปนี้

  1. ผสานรวมการกำหนดเป้าหมายตามประเทศ (และตามส่วนขยาย, Play Asset Delivery) ภายในเกมของคุณ
    • รวม Play Asset Delivery ไว้ในเกมของคุณ (หากยังไม่ได้ทำ ทำแล้ว)
    • แบ่งเนื้อหาออกเป็น Asset Pack
    • รวบรวมโค้ดและชิ้นงานเข้าด้วยกันสำหรับขั้นสุดท้าย อาร์ติแฟกต์ Android App Bundle ที่คุณจะอัปโหลดไปยัง Play
  2. สร้างการกำหนดค่าการกำหนดอุปกรณ์เป้าหมายเพื่อให้ Play ทราบ วิธีส่งเนื้อหาไปยังอุปกรณ์ของผู้ใช้
    • ตั้งค่า API สำหรับนักพัฒนาซอฟต์แวร์ Google Play (หากยังไม่ได้ทำ) ซึ่งเป็นสิ่งที่คุณจะใช้ในการส่งการกำหนดค่าการกำหนดเป้าหมายไปยัง Play
    • ทำตามขั้นตอนเพื่อสร้างการกำหนดค่าการกำหนดเป้าหมาย
  3. อัปโหลด 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 ภายในเกมของคุณ:

การสร้างไดเรกทอรีเฉพาะชุดประเทศ

หากใช้ 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 ได้ที่ ลิงก์ด้านบนมีลิงก์ ขั้นตอนที่คุณต้องทำตามเพื่อเริ่มต้นใช้งาน

  1. สร้าง (หากจำเป็น) และลิงก์โปรเจ็กต์ API กับ Google Play Console
  2. ตั้งค่าไคลเอ็นต์การเข้าถึง 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