هدف گذاری دارایی بر اساس کشور چیست؟
هدف گذاری دارایی بر اساس کشور به شما امکان می دهد نسخه های مختلف (مانند وضوح) یک دارایی را بر اساس کشوری که کاربر در آن قرار دارد به دستگاه ها تحویل دهید. برای مثال، میتوانید انتخاب کنید که داراییهای سفارشیشده را به کشورهای مختلفی که برنامهتان در آنها در دسترس است، تحویل دهید - همه اینها بدون افزایش حجم کلی بازی تنها با ارائه داراییهای لازم به دستگاههای کاربران. این بر مفهوم بستههای دارایی در Play Asset Delivery استوار است. همانطور که در زیر می بینید، می توانید معیارهای هدف را با حداکثر 20 مجموعه کشور تعریف کنید. در این زمینه، کشور دستگاه معمولاً با آدرس صورتحساب کاربر ثبتشده در حساب Google Play او تعیین میشود.
مانند Play Asset Delivery، هدفگیری براساس کشور از Android 4.1 (سطح API 16) و بالاتر پشتیبانی میکند. با این حال، در دستگاههای دارای Android 4.4 (سطح API 19) یا پایینتر، مجموعه کشور پیشفرض بدون توجه به مکان کاربر ارائه میشود.
سفر توسعه دهنده
در سطح بالا، برای ادغام هدف گذاری بر اساس کشور در بازی موجود خود، مراحل زیر را دنبال کنید:
- هدف گذاری بر اساس کشور (و با توسعه، Play Asset Delivery) را در بازی خود ادغام کنید
- Play Asset Delivery را در بازی خود ادغام کنید (اگر قبلاً این کار را نکرده اید)
- دارایی های خود را به بسته های دارایی تقسیم کنید
- کد و داراییهای خود را برای آخرین مصنوع Android App Bundle که در Play آپلود خواهید کرد، با هم بستهبندی کنید.
- پیکربندی Device Targeting خود را ایجاد کنید تا Play بداند چگونه دارایی های شما را به دستگاه های کاربر تحویل دهد.
- Google Play Developer API را تنظیم کنید (اگر قبلاً تکمیل نشده باشد)، که از آن برای ارسال تنظیمات هدف به Play استفاده می کنید.
- مراحل ایجاد پیکربندی هدف گذاری را طی کنید.
- AAB خود را در Play آپلود کنید و آزمایش کنید تا مطمئن شوید همه چیز به درستی پیکربندی شده است
Gradle سیستم ساخت پیشنهادی برای جاوا و بازی های بومی است. برای بازیهایی که با استفاده از Gradle ساخته میشوند، این مراحل را دنبال کنید تا سیستم ساخت را پیکربندی کنید تا AAB خود را با پشتیبانی از کشور هدف بسازید.
اگر بازی خود را به Gradle صادر می کنید و سپس ساخت خود را در آنجا تمام می کنید، توصیه می کنیم این دستورالعمل ها را دنبال کنید (مثلاً بازی های Unity صادر شده به Gradle) ).
تنظیم هدف گذاری دارایی بر اساس کشور در برنامه شما
ادغام Play Asset Delivery در بازی شما (اگر قبلاً تکمیل نشده باشد)
Play Asset Delivery (PAD) به شما امکان می دهد دارایی های بازی خود را به صورت پویا در زمان نصب یا زمان اجرا تحویل دهید و می توانید یک نمای کلی در مورد آن را در اینجا بخوانید. با هدفگیری بر اساس کشور، Play محتوای بستههای دارایی شما را بر اساس پیکربندیهای مجموعه کشوری که برای مکانهای مختلف کاربر تجویز میکنید، ارائه میکند. توصیه میشود دستورالعملهای زیر را دنبال کنید و PAD را در بازی خود ادغام کنید (یعنی بستههای دارایی ایجاد کنید، بازیابی را در بازی خود پیادهسازی کنید)، و سپس کد پروژه را برای فعال کردن هدفگیری بر اساس کشور تغییر دهید.
گریدل
برای بازیهای ساخته شده با Gradle، از این دستورالعملها برای ساخت بستههای دارایی خود با Gradle استفاده کنید، سپس دستورالعملهای ادغام بازیابی بسته دارایی را در بازی خود دنبال کنید:
- جاوا
- بومی
- بازی های یونیتی به Gradle صادر شد
- از کتابخانه های جاوا از طریق JNI (مانند کتابخانه ای که در Unity ساخته شده است ) استفاده کنید.
ایجاد فهرست راهنماهای خاص کشور
اگر از Gradle استفاده می کنید
اکنون دارایی های خود را بین مجموعه های کشوری (حداکثر 20) که بعداً تعریف خواهید کرد تقسیم خواهید کرد. دایرکتوری های مورد نظر خود را با گرفتن دایرکتوری های دارایی باندل موجود ایجاد شده در مرحله آخر ایجاد کنید و پوشه مناسب (همانطور که در زیر توضیح داده شده است) را با #countries_latam، #countries_na و غیره پست کنید. هنگام استفاده از بسته های دارایی در بازی خود - نیازی نخواهید داشت. برای آدرس دهی پوشه ها توسط 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/
بدون هیچ پسوندی اشاره میکنم).
ساخت بسته نرم افزاری اندروید
گریدل
در فایل build.gradle
پروژه خود، وابستگیهای خود را به گونهای پیکربندی کنید که نسخههای زیر (یا بالاتر) برای افزونه و ابزار بسته Android Gradle داشته باشند:
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 بروید و در صورت امکان به آخرین نسخه بهروزرسانی کنید.
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,
}
}],
}
}
}
تست محلی
قبل از حرکت، توصیه میشود بسته برنامه خود را به صورت محلی آزمایش کنید تا مطمئن شوید همه چیز به درستی تنظیم شده است. با استفاده از 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
همراه با مشخص کردن کشور برای این دستگاه، همراه با پرچم --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 خود را به کنسول Google Play خود پیوند دهید .
- یک API Access Client راه اندازی کنید .
میتوانید مرجع API را در اینجا پیدا کنید - بعداً، اگر بخواهید ساخت خود را از طریق API آپلود کنید، از روشهای ویرایشها استفاده خواهید کرد. علاوه بر این، توصیه می شود قبل از استفاده از API ، این صفحه را مرور کنید .
با استفاده از Device Targeting Configuration API
می توانید از فراخوانی API زیر برای ایجاد پیکربندی هدفمندی دستگاه خود استفاده کنید:
پیکربندی هدف گذاری دستگاه را ایجاد کنید
درخواست HTTP | POST https://androidpublisher.googleapis.com/androidpublisher/v3/applications/{packageName}/deviceTierConfigs |
پارامترهای مسیر | N/A |
درخواست بدن | پیکربندی هدف گذاری دستگاه |
بدنه پاسخگویی | پیکربندی هدف گذاری دستگاه |
هدف پیکربندی دستگاه
{
"user_country_sets": [
{
"name": "latam",
"country_codes": [
"AR",
"BR",
...
]
},
{
"name": "sea",
"country_codes": [
"VN",
"TW",
...
]
}
]
}
زمینه ها:
- device_confid_id (عدد صحیح): شناسه مربوط به پیکربندی هدفمند این دستگاه.
- user_country_sets (object): تعاریف مجموعه کشور
- نام (رشته): نام مجموعه کشور (شناسه رشته ای که شما تعریف می کنید).
- کدهای کشور (رشته): کشورهایی که به این مجموعه کشوری تعلق دارند (فرمت: ISO 3166-1 alpha-2 ).
میتوانید دستورالعملهای زیر را برای تأیید اعتبار پیکربندی هدفگیری دستگاه خود قبل از آپلود آن در Google Play دنبال کنید.
پیکربندی هدف گذاری دستگاه را با شناسه دریافت کنید
با استفاده از تماس زیر میتوانید پیکربندی هدفگیری دستگاه خاص را با شناسه بازیابی کنید:
درخواست HTTP | GET https://androidpublisher.googleapis.com/androidpublisher/v3/applications/{packageName}/deviceTierConfigs/{deviceTierConfigId} |
پارامترهای مسیر | N/A |
درخواست بدن | N/A |
بدنه پاسخگویی | پیکربندی هدف گذاری دستگاه |
دریافت لیست تنظیمات هدف گذاری دستگاه
می توانید 10 پیکربندی آخرین هدف دستگاه را با توجه به تماس زیر دریافت کنید (یا با استفاده از پارامتر پرس و جو page_token به طور بهینه یک مجموعه ده تایی را مشخص کنید):
درخواست HTTP | GET https://androidpublisher.googleapis.com/androidpublisher/v3/applications/{packageName}/deviceTierConfigs |
پارامترهای مسیر | N/A |
پارامترهای پرس و جو | page_token (اختیاری) - برای تعیین یک گروه خاص از 10 DTC استفاده می شود. اگر بیش از 10 DTC ایجاد کرده باشید و دوست دارید DTC هایی را ببینید که قبل از 10 مورد اخیر ایجاد شده اند، مفید است. |
درخواست بدن | N/A |
بدنه پاسخگویی | فهرست پیکربندی های هدف گذاری دستگاه page_token |
تأیید پیکربندی هدفگیری دستگاه
bundletool
شامل دو فرمان است که به شما کمک میکند قبل از آپلود کردن آن در 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 برای آپلود App Bundle Android خود در Google Play استفاده کنید و پیکربندی خاص Device Targeting را به ساخت خود پیوند دهید.
در اینجا یک مرور کلی از روشهای ویرایش به همراه مثالهای عمیقتر در مورد انتشار به تراکهای مختلف در کنسول Google Play وجود دارد (برای آخرین پیوند، میخواهید به جای API-پسند APK از APIهای مناسب AAB استفاده کنید. که در صفحه ذکر شده است). برای تعیین پیکربندی هدفمندی دستگاه برای ساخت خود، هنگام فراخوانی روش edits.bundle.upload
، شناسه پیکربندی را به پارامتر query deviceTierConfigId
اضافه میکنید، مانند این:
https://androidpublisher.googleapis.com/upload/androidpublisher/v3/applications/{packageName}/edits/{editId}/bundles?deviceTierConfigId="{deviceTierConfigId}
از طریق کنسول Google Play
برای آپلود 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) از ایجاد یک پیکربندی هدفگیری دستگاه جدید ، و استفاده از api Edits برای ایجاد ویرایش جدید، آپلود 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 خود تکمیل کنید تا مطمئن شوید همه چیز به درستی پیکربندی شده است .
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