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

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

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

การกำหนดเป้าหมายตามประเทศรองรับ Android 4.1 (API ระดับ 16) ขึ้นไปเช่นเดียวกับ Play Asset Delivery อย่างไรก็ตาม ในอุปกรณ์ที่ใช้ 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 จะแสดงเนื้อหาของชุดชิ้นงานตามการกำหนดค่าชุดประเทศที่คุณกำหนดไว้สำหรับสถานที่ตั้งของผู้ใช้แต่ละแห่ง เราขอแนะนำให้ทำตามคำแนะนำด้านล่างและผสานรวม PAD เข้ากับเกม (เช่น สร้างชุดชิ้นงาน ใช้การเรียกข้อมูลในเกม) จากนั้นแก้ไขโค้ดโปรเจ็กต์เพื่อเปิดใช้การกำหนดเป้าหมายตามประเทศ

Gradle

สำหรับเกมที่สร้างด้วย Gradle ให้ใช้วิธีการเหล่านี้เพื่อสร้าง Asset Pack ด้วย Gradle จากนั้นทำตามวิธีการในการผสานรวมการดึงข้อมูล Asset Pack ภายในเกม

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

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

  1. สร้าง (หากจำเป็น) และลิงก์โปรเจ็กต์ API กับ Google Play Console
  2. ตั้งค่าไคลเอ็นต์การเข้าถึง 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 ใหม่ (เชื่อมโยงกับการกําหนดค่าการกําหนดเป้าหมายอุปกรณ์ที่เฉพาะเจาะจง) ตั้งค่าการกําหนดค่าแทร็ก/รุ่น และคอมมิตการแก้ไข (ซึ่งจะทำให้การเปลี่ยนแปลงเป็นแบบสาธารณะ) โปรดตรวจสอบว่าคุณมีตำแหน่งของสิ่งต่อไปนี้

ก่อนอื่น ให้สร้างการกําหนดค่าการกําหนดเป้าหมายอุปกรณ์ และจดบันทึก 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