देश के हिसाब से ऐसेट टारगेटिंग

देश के हिसाब से ऐसेट टारगेटिंग क्या है?

देश के हिसाब से एसेट टारगेटिंग की मदद से, उपयोगकर्ता के देश के आधार पर डिवाइसों पर एक ही एसेट के अलग-अलग वर्शन (जैसे, रिज़ॉल्यूशन) डिलीवर किए जा सकते हैं. उदाहरण के लिए, जिन देशों में आपका ऐप्लिकेशन उपलब्ध है वहां कस्टम ऐसेट उपलब्ध कराने का विकल्प चुना जा सकता है. यह सब उपयोगकर्ता के डिवाइसों पर ज़रूरी ऐसेट डिलीवर करके, गेम के साइज़ में बढ़ोतरी किए बिना किया जा सकता है. यह Play ऐसेट डिलीवरी में ऐसेट पैक के कॉन्सेप्ट पर आधारित है. जैसा कि आपको नीचे दिखेगा, टारगेटिंग की शर्तों को ज़्यादा से ज़्यादा 20 देशों के सेट के साथ तय किया जा सकता है. इस संदर्भ में, डिवाइस के देश की जानकारी आम तौर पर, उपयोगकर्ता के Google Play खाते में रजिस्टर किए गए बिलिंग पते से तय होती है.

'Play ऐसेट डिलीवरी' की तरह, देश के हिसाब से टारगेट करने की सुविधा भी Android 4.1 (एपीआई लेवल 16) और उसके बाद वाले वर्शन के साथ काम करती है. हालांकि, Android 4.4 (एपीआई लेवल 19) या इससे पहले के वर्शन वाले डिवाइसों पर, डिफ़ॉल्ट तौर पर सेट किया गया देश डिलीवर किया जाता है. भले ही, उपयोगकर्ता की जगह कुछ भी हो.

डेवलपर का सफ़र

अपने मौजूदा गेम में देश के हिसाब से टारगेटिंग को इंटिग्रेट करने के लिए, यह तरीका अपनाएं:

  1. अपने गेम में देश के हिसाब से टारगेटिंग (और इसके ज़रिए, Play एसेट डिलीवरी) को इंटिग्रेट करें
    • अगर आपने पहले से ही ऐसा नहीं किया है, तो अपने गेम में Play ऐसेट डिलीवरी को इंटिग्रेट करें
    • अपनी ऐसेट को ऐसेट पैक में बांटना
    • अपने कोड और एसेट को एक साथ पैकेज करें, ताकि आपको Play पर अपलोड करने के लिए, आखिरी Android ऐप्लिकेशन बंडल आर्टफ़ैक्ट मिल सके.
  2. अपना डिवाइस टारगेटिंग कॉन्फ़िगरेशन बनाएं, ताकि Play को पता चल सके कि उपयोगकर्ता के डिवाइस पर आपकी ऐसेट कैसे डिलीवर करनी हैं.
    • अगर Google Play Developer API पहले से सेट अप नहीं है, तो उसे सेट अप करें. इसका इस्तेमाल, Play पर टारगेटिंग कॉन्फ़िगरेशन भेजने के लिए किया जाएगा.
    • टारगेटिंग कॉन्फ़िगरेशन बनाने के लिए, यह तरीका अपनाएं.
  3. Play पर अपना एएबी अपलोड करें और यह जांच लें कि सब कुछ सही तरीके से कॉन्फ़िगर किया गया है या नहीं

Java और नेटिव गेम के लिए, Gradle को बिल्ड सिस्टम के तौर पर इस्तेमाल करने का सुझाव दिया जाता है. Gradle का इस्तेमाल करके बनाए गए गेम के लिए, बिल्ड सिस्टम को कॉन्फ़िगर करने का यह तरीका अपनाएं. इससे, देश के हिसाब से टारगेटिंग की सुविधा के साथ अपना AAB बनाया जा सकता है.

अगर आपने अपने गेम को Gradle में एक्सपोर्ट किया है और वहां अपना बिल्ड पूरा किया है, तो हमारा सुझाव है कि आप इन निर्देशों का पालन करें (उदाहरण के लिए, Unity गेम, Gradle में एक्सपोर्ट किए गए).

अपने ऐप्लिकेशन में देश के हिसाब से एसेट टारगेटिंग सेट अप करना

अपने गेम में Play ऐसेट डिलीवरी को इंटिग्रेट करना (अगर पहले से पूरा नहीं किया गया है)

Play एसेट डिलीवरी (PAD) की मदद से, गेम को इंस्टॉल करते समय या रनटाइम के दौरान, गेम की एसेट को डाइनैमिक तरीके से डिलीवर किया जा सकता है. इसके बारे में खास जानकारी यहां पढ़ें. देश के हिसाब से टारगेटिंग की सुविधा की मदद से, Play आपके एसेट पैक का कॉन्टेंट डिलीवर करेगा. यह कॉन्टेंट, देश के उन सेट कॉन्फ़िगरेशन के आधार पर डिलीवर किया जाएगा जिन्हें आपने उपयोगकर्ताओं की अलग-अलग जगहों के लिए तय किया है. हमारा सुझाव है कि आप नीचे दिए गए निर्देशों का पालन करें और अपने गेम में PAD को इंटिग्रेट करें.जैसे, एसेट पैक बनाएं और अपने गेम में डेटा वापस पाने की सुविधा लागू करें. इसके बाद, देश के हिसाब से टारगेटिंग की सुविधा चालू करने के लिए, प्रोजेक्ट कोड में बदलाव करें.

Gradle

Gradle के साथ बनाए गए गेम के लिए, Gredle की मदद से ऐसेट पैक बनाने के इन निर्देशों का पालन करें. इसके बाद, गेम में ऐसेट पैक वापस पाने की सुविधा को इंटिग्रेट करने के निर्देशों का पालन करें:

देश के हिसाब से डायरेक्ट्री बनाना

अगर 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 ऐप्लिकेशन बंडल बनाना

Gradle

अपने प्रोजेक्ट की build.gradle फ़ाइल में, अपनी डिपेंडेंसी को कॉन्फ़िगर करें, ताकि 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 ऐप्लिकेशन बंडल (AAB) बनाया जा सकता है.

Bundletool

बंडलटूल की मदद से अपना बंडल बनाएं. इसके बाद, एएबी को पसंद के मुताबिक बनाएं, अपनी BundleConfig.pb फ़ाइल में ये चीज़ें जोड़ें.

{
  ...
  "optimizations": {
    "splitsConfig": {
      "splitDimension": [
      ...
      {
        "value": "COUNTRY_SET",
        "negate": false,
        "suffixStripping": {
          "enabled": true,
        }
      }],
    }
  }
}

लोकल टेस्टिंग

आगे बढ़ने से पहले, हमारा सुझाव है कि आप अपने ऐप्लिकेशन बंडल की स्थानीय तौर पर जांच करें, ताकि यह पक्का किया जा सके कि सब कुछ सही तरीके से सेट अप किया गया है. bundletool (1.14.0 या इसके बाद के वर्शन) का इस्तेमाल करके, अपने ऐप्लिकेशन को स्थानीय तौर पर बनाया और टेस्ट किया जा सकता है. इसके लिए, आपको सही देश की जानकारी देनी होगी. आपको सबसे पहले .apks फ़ाइलों का सेट जनरेट करने के लिए, build-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

इसके अलावा: किसी डिवाइस के लिए APK का सेट निकालने के लिए, extract-apks का भी इस्तेमाल किया जा सकता है. हालांकि, इस डिवाइस के लिए देश की जानकारी देने के साथ-साथ, 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 का इस्तेमाल शुरू करना (अगर पहले से पूरा नहीं किया गया है)

देश के हिसाब से टारगेटिंग कॉन्फ़िगर करने के लिए, आपको Google Play पर अपना कॉन्फ़िगरेशन अपलोड करने के लिए, Android पब्लिशर एपीआई का इस्तेमाल करना होगा. इसका मतलब है कि आपको अपने देश के सेट तय करने होंगे. एपीआई के बारे में ज़्यादा जानने के लिए, ऊपर दिए गए लिंक पर जाएं - शुरू करने के लिए, आपको कुछ चरण पूरे करने होंगे:

  1. अगर ज़रूरी हो, तो अपना एपीआई प्रोजेक्ट बनाएं और उसे Google Play Console से लिंक करें.
  2. एपीआई ऐक्सेस क्लाइंट सेट-अप करें.

एपीआई का रेफ़रंस यहां देखें - अगर बाद में एपीआई के ज़रिए अपना बिल्ड अपलोड किया जाता है, तो आपको बदलाव करने के तरीकों का इस्तेमाल करना होगा. इसके अलावा, हमारा सुझाव है कि एपीआई का इस्तेमाल करने से पहले, यह पेज देखें.

डिवाइस टारगेटिंग कॉन्फ़िगरेशन एपीआई का इस्तेमाल करना

डिवाइस टारगेटिंग कॉन्फ़िगरेशन बनाने के लिए, नीचे दिए गए एपीआई कॉल का इस्तेमाल किया जा सकता है:

डिवाइस टारगेटिंग कॉन्फ़िगरेशन बनाना

एचटीटीपी अनुरोध 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 (integer): इस डिवाइस टारगेटिंग कॉन्फ़िगरेशन से जुड़ा आईडी.
  • user_country_sets (ऑब्जेक्ट): देश के सेट की परिभाषाएं
    • name (स्ट्रिंग): देश के सेट का नाम (आपके तय किया गया स्ट्रिंग आईडी).
    • country_codes (स्ट्रिंग): इस देश के सेट से जुड़े देश (फ़ॉर्मैट: ISO 3166-1 alpha-2).

Google Play पर अपलोड करने से पहले, डिवाइस टारगेटिंग कॉन्फ़िगरेशन की पुष्टि करने के लिए, यहां दिए गए निर्देशों का पालन करें.

आईडी के आधार पर डिवाइस लक्ष्यीकरण कॉन्फ़िगरेशन पाएं

इस कॉल का इस्तेमाल करके, आईडी के हिसाब से किसी डिवाइस टारगेटिंग कॉन्फ़िगरेशन को वापस पाया जा सकता है:

एचटीटीपी अनुरोध GET https://androidpublisher.googleapis.com/androidpublisher/v3/applications/{packageName}/deviceTierConfigs/{deviceTierConfigId}
पाथ पैरामीटर लागू नहीं
अनुरोध का मुख्य हिस्सा लागू नहीं
रिस्पॉन्स का मुख्य हिस्सा डिवाइस टारगेटिंग कॉन्फ़िगरेशन

डिवाइस टारगेटिंग कॉन्फ़िगरेशन की सूची पाना

नीचे दिए गए कॉल के हिसाब से, डिवाइस टारगेटिंग के पिछले 10 कॉन्फ़िगरेशन देखे जा सकते हैं. इसके अलावा, page_token क्वेरी पैरामीटर का इस्तेमाल करके, 10 का एक सेट भी तय किया जा सकता है:

एचटीटीपी अनुरोध GET https://androidpublisher.googleapis.com/androidpublisher/v3/applications/{packageName}/deviceTierConfigs
पाथ पैरामीटर लागू नहीं
क्वेरी पैरामीटर page_token (ज़रूरी नहीं) - इसका इस्तेमाल, 10 डीटीसी के किसी खास ग्रुप के बारे में बताने के लिए किया जाता है. अगर आपने 10 से ज़्यादा डीटीसी बनाए हैं और आपको सबसे हाल ही के 10 डीटीसी से पहले बनाए गए डीटीसी देखने हैं, तो यह तरीका आपके लिए मददगार हो सकता है.
अनुरोध का मुख्य हिस्सा लागू नहीं
रिस्पॉन्स का मुख्य हिस्सा डिवाइस टारगेटिंग कॉन्फ़िगरेशन की सूची

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

Google Play पर अपना Android ऐप्लिकेशन बंडल अपलोड करना

Via API

Google Play Developer API का इस्तेमाल करके, अपने Android ऐप्लिकेशन बंडल को Google Play पर अपलोड किया जा सकता है. साथ ही, अपने बंडल से डिवाइस टारगेटिंग का कोई खास कॉन्फ़िगरेशन लिंक किया जा सकता है.

यहां बदलाव करने के तरीकों की खास जानकारी दी गई है. साथ ही, Google Play Console में अलग-अलग ट्रैक पर रिलीज़ करने के बारे में ज़्यादा जानकारी दी गई है. आखिरी लिंक के लिए, आपको पेज में दिए गए APK-फ़्रेंडली एपीआई के बजाय, AAB-फ़्रेंडली एपीआई का इस्तेमाल करना होगा. अपने बिल्ड के लिए डिवाइस टारगेटिंग कॉन्फ़िगरेशन तय करने के लिए, आपको edits.bundle.upload तरीके को कॉल करते समय, deviceTierConfigIdक्वेरी पैरामीटर में कॉन्फ़िगरेशन आईडी जोड़ना होगा. जैसे:

https://androidpublisher.googleapis.com/upload/androidpublisher/v3/applications/{packageName}/edits/{editId}/bundles?deviceTierConfigId="{deviceTierConfigId}

Google Play Console से

अपना Android ऐप्लिकेशन बंडल अपलोड करने के लिए, यहां दिए गए निर्देशों का पालन करें. आपके ऐप्लिकेशन बंडल पर, DTC का नया कॉन्फ़िगरेशन लागू किया जाएगा.

पुष्टि करना कि सही एसेट डिलीवर की जा रही हैं

यहां दिए गए तरीके का इस्तेमाल करके, यह पक्का करें कि डिवाइस पर सिर्फ़ सही ऐसेट डिलीवर की जा रही हैं

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 का इस्तेमाल करके क्विक स्टार्ट

नीचे नया डिवाइस टारगेटिंग कॉन्फ़िगरेशन बनाने और कमांड लाइन टूल कर्ल का इस्तेमाल करके नया बदलाव बनाने का उदाहरण दिया गया है. नया बदलाव बनाने के लिए, एडिट एपीआई का इस्तेमाल करके, नया एएबी अपलोड करें (इसे किसी खास डिवाइस टारगेटिंग कॉन्फ़िगरेशन से जोड़ें), ट्रैक/रिलीज़ कॉन्फ़िगरेशन सेट करें, और बदलाव करें. (इस तरह, बदलाव को सार्वजनिक किया जा सकता है). पक्का करें कि:

सबसे पहले, डिवाइस टारगेटिंग कॉन्फ़िगरेशन बनाएं और कॉल पूरा होने पर मिलने वाले 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}"

एएबी को अपने पसंदीदा ट्रैक पर असाइन करें (सुझाव है कि टेस्टिंग के लिए, इंटरनल टेस्ट ट्रैक का इस्तेमाल करें. हालांकि, अलग-अलग ट्रैक के बारे में ज़्यादा जानने के लिए यहां पढ़ें). यहां हम रिलीज़ नोट के बिना आसानी से रोल आउट करते हैं. हालांकि, इस पेज को पढ़ें, ताकि आपको चरणों में रोल आउट करने, रिलीज़ का ड्राफ़्ट तैयार करने, और रिलीज़ नोट के बारे में ज़्यादा जानकारी मिल सके. अगर 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