Google Play EMM API, सार्वजनिक और निजी ऐप्लिकेशन के लिए, डिस्ट्रिब्यूशन के इन तरीकों के साथ काम करता है:
- उपयोगकर्ता, मैनेज किए जा रहे Google Play Store से मैन्युअल तरीके से ऐप्लिकेशन इंस्टॉल कर सकते हैं.
- आईटी एडमिन, उपयोगकर्ताओं के डिवाइसों पर रिमोट तौर पर ऐप्लिकेशन इंस्टॉल कर सकते हैं.
'कारोबार के लिए Google Play Store' से मैन्युअल तरीके से ऐप्लिकेशन इंस्टॉल करना
आपके पास यह तय करने का विकल्प होता है कि उपयोगकर्ता Device
के policy
में कौनसे ऐप्लिकेशन इंस्टॉल कर सकता है. इसके लिए, Devices.update
को कॉल करके इसे सेट करें. किसी नए डिवाइस को कॉन्फ़िगर करते समय, आपको डिवाइस में मैनेज किया जा रहा Google Play खाता जोड़ने से पहले नीति सेट करनी चाहिए. ऐसा न करने पर, डिवाइस में खाता जोड़ने के बाद कुछ समय के लिए नीति लागू नहीं होगी.
मैनेज किए जा रहे Play Store के व्यवहार को policy.productAvailabilityPolicy
की वैल्यू से तय किया जाता है:
all
: Play Store पर मौजूद सभी सार्वजनिक ऐप्लिकेशन उपलब्ध हैं.whitelist
: सिर्फ़policy.productPolicy
में दिए गए ऐप्लिकेशन उपलब्ध हैं.
दोनों ही मामलों में, policy.productPolicy
में मौजूद सभी ऐप्लिकेशन, डिफ़ॉल्ट रूप से एंटरप्राइज़ के स्टोर लेआउट में जोड़ दिए जाते हैं. whitelist
चुनने पर, कारोबार के स्टोर का लेआउट, मैनेज किए जा रहे Play Store का होम पेज बन जाता है. साथ ही, all
चुनने पर, इसे "काम के लिए ऐप्लिकेशन" टैब में ऐक्सेस किया जा सकता है. अपने ग्राहक को, मैनेज किए जा रहे Google Play iframe को एम्बेड करके, एंटरप्राइज़ के स्टोर लेआउट को पसंद के मुताबिक बनाने की अनुमति दी जा सकती है. मैनेज किए जा रहे Google Play iframe की मदद से ऐप्लिकेशन व्यवस्थित करना लेख पढ़ें.
उपयोगकर्ता के डिवाइसों पर, कहीं से भी ऐप्लिकेशन इंस्टॉल करना
किसी उपयोगकर्ता के डिवाइस पर ऐप्लिकेशन को किसी दूसरे डिवाइस से इंस्टॉल करने के लिए, Device
के policy
में policy.productPolicy.autoInstallPolicy
सेट करें. इसे पुश इंस्टॉल भी कहा जाता है. किसी नए डिवाइस को कॉन्फ़िगर करते समय, आपको डिवाइस में मैनेज किया जा रहा Google Play खाता जोड़ने से पहले नीति सेट करनी चाहिए. ऐसा न करने पर, डिवाइस में खाता जोड़ने के बाद कुछ समय के लिए नीति लागू नहीं होगी.
autoInstallMode
को इन पर सेट किया जा सकता है:
doNotAutoInstall
: ऐप्लिकेशन अपने-आप इंस्टॉल नहीं होता.autoInstallOnce
: ऐप्लिकेशन एक बार अपने-आप इंस्टॉल हो जाता है. अगर उपयोगकर्ता ऐप्लिकेशन को अनइंस्टॉल करता है, तो वह फिर से इंस्टॉल नहीं होगा.forceAutoInstall
: ऐप्लिकेशन अपने-आप इंस्टॉल हो जाता है. अगर उपयोगकर्ता ऐप्लिकेशन को अनइंस्टॉल करता है, तो वह फिर से इंस्टॉल हो जाएगा. मैनेज किए जा रहे डिवाइसों पर, डीपीसी कोDevicePolicyManager.setUninstallBlocked
का इस्तेमाल करके, ऐप्लिकेशन को अनइंस्टॉल करने से रोकना चाहिए.
अगर इंस्टॉल नहीं हो पाता है (कनेक्शन बंद हो जाता है, स्टोरेज की कमी होती है वगैरह), तो इंस्टॉल की प्रोसेस अपने-आप फिर से शुरू हो जाती है. ऐसा तब तक होता रहता है, जब तक कि इंस्टॉल नहीं हो जाता. एक्सपोनेंशियल बैकऑफ़ रीट्राइ की रणनीति का इस्तेमाल किया जाता है, ताकि ठीक न की जा सकने वाली गड़बड़ियों के मामले में बैटरी और डेटा बर्बाद न हो.
इंस्टॉल करने की प्राथमिकता
autoInstallPriority
सेटिंग की मदद से, इंस्टॉल करने का क्रम चुना जा सकता है. प्राथमिकता, बिना साइन वाला पूर्णांक होना चाहिए. इसकी डिफ़ॉल्ट वैल्यू 0 होती है. ऐप्लिकेशन, बढ़ते क्रम या प्राथमिकता के हिसाब से इंस्टॉल किए जाएंगे. इसका मतलब है कि कम प्राथमिकता वाले ऐप्लिकेशन पहले इंस्टॉल किए जाएंगे.
पाबंदियां इंस्टॉल करना
autoInstallConstraint
सेट करके, हर ऐप्लिकेशन के लिए इंस्टॉल से जुड़ी पाबंदियां सेट की जा सकती हैं. इससे, इंस्टॉल के दौरान डिवाइस की ज़रूरी स्थिति को कंट्रोल किया जा सकता है:
- डिवाइस को वाई-फ़ाई नेटवर्क से कनेक्ट करना ज़रूरी है या नहीं,
- डिवाइस चार्ज हो रहा है या नहीं,
- और डिवाइस के खाली होने पर (उपयोगकर्ता का डिवाइस इस्तेमाल में न होने पर) भी सूचनाएं भेजी जा सकती हैं.
अगर ये शर्तें तुरंत पूरी नहीं होती हैं, तो जिन इंस्टॉल पर असर पड़ा है उन्हें तब तक कतार में रखा जाएगा, जब तक ये शर्तें पूरी नहीं हो जातीं.
autoInstallConstraint
में, फ़ील्ड के बीच AND नियम लागू होता है. उदाहरण के लिए, नीचे दिए गए autoInstallConstraint
के साथ, ऐप्लिकेशन इंस्टॉल करने के लिए, डिवाइस को चार्ज होना चाहिए और वह बिना शुल्क वाले नेटवर्क (जैसे, वाई-फ़ाई) से कनेक्ट होना चाहिए:
"autoInstallConstraint": [
"chargingStateConstraint" : "chargingRequired",
"networkTypeConstraint" : "unmeteredNetwork"
]
नए डिवाइसों पर ऐप्लिकेशन अपने-आप इंस्टॉल होने की सुविधा
जब किसी डिवाइस को पहली बार प्रोविज़न किया जाता है, तो Google Play EMM API एक NewDeviceEvent
सूचना भेजता है. नए डिवाइसों पर ऐप्लिकेशन अपने-आप इंस्टॉल होने की सुविधा चालू करने के लिए, NewDeviceEvent
सूचनाएं सुनें. हर NewDeviceEvent
से userId
और deviceId
को वापस पाएं. इसके बाद, उस डिवाइस के लिए नीति सेट करने के लिए, Devices.update
को कॉल करें.
ईएमएम सूचनाओं की सदस्यता लेने का तरीका जानने के लिए, ईएमएम सूचनाएं सेट अप करना लेख पढ़ें.
ऐप्लिकेशन अपने-आप इंस्टॉल होने की सुविधा से जुड़ी गड़बड़ी का सुझाव/राय देना या शिकायत करना
ऐप्लिकेशन इंस्टॉल करने से जुड़ी गड़बड़ियों की शिकायत, ऐप्लिकेशन के लिए सुझाव/राय दें या शिकायत करें सेक्शन में की जाती है. साथ ही, डीपीसी, KeyedAppStatesService
से भेजे गए EnterprisePolicyStatus
मैसेज को मॉनिटर कर सकता है.
Base64 कोड में बदले गए डेटा को डिकोड करने के लिए, डीपीसी को EnterprisePolicyStatus
की प्रोटो परिभाषा के आधार पर क्लास जनरेट करनी होंगी. प्रोटो क्लास जनरेट करने के निर्देशों के लिए, प्रोटोकॉल बफ़र के दस्तावेज़ देखें.
जनरेट की गई क्लास की मदद से, डीपीसी EnterprisePolicyStatus
ऑब्जेक्ट को डिकोड कर सकता है:
EnterprisePolicyStatus enterprisePolicyStatus = EnterprisePolicyStatus.parseFrom(
BaseEncoding.base64().decode(base64EncodedString)
);
डिवाइस नीति में अब एक नया वैकल्पिक फ़ील्ड PolicyId
शामिल है.
नीति बनाते या अपडेट करते समय, EMM किसी खास डिवाइस नीति के वर्शन की पहचान करने के लिए, PolicyId
को किसी भी स्ट्रिंग वैल्यू पर सेट कर सकता है.
अगर उपलब्ध हो, तो ऐप्लिकेशन इंस्टॉल करने से जुड़े सुझाव/राय/शिकायत/राय देने की सुविधा, PolicyId
की शिकायत करेगी, ताकि डीपीसी, मिली गड़बड़ियों को खास नीतियों से मैच कर सके.
EnterprisePolicyStatus
message EnterprisePolicyStatus {
// Individual status for an app in the policy
repeated ApplicationStatus app_status = 1;
// Version of the policy for which this status applies.
PolicyVersion version = 2;
}
ApplicationStatus
// Individual status for an app.
message ApplicationStatus {
// The package name for the app.
string package_name = 1;
// The install status for the app. Only includes status for apps scheduled
// to be auto-installed via the policy resource.
AutoInstallStatus install_status = 2;
}
AutoInstallStatus
// Auto-install status for an app.
message AutoInstallStatus {
// The error causing the install to fail if state is INSTALL_ERROR.
EnterpriseAutoInstallError error = 1;
// The current install state of the app.
EnterpriseAutoInstallState state = 2;
}
PolicyVersion
// The version of the policy which these install states apply to.
message PolicyVersion {
// A policy id which may be optionally set by the EMM.
string policy_id = 1;
}
EnterpriseAutoInstallError
// Install errors resulting in failure to install an app.
enum EnterpriseAutoInstallError {
// Catch-all for unrecognized enum values.
ENTERPRISE_AUTO_INSTALL_ERROR_UNKNOWN = 0;
// The app could not be found.
ENTERPRISE_AUTO_INSTALL_ERROR_NOT_FOUND = 1;
// The app is not available in the user's country.
ENTERPRISE_AUTO_INSTALL_ERROR_UNAVAILABLE_COUNTRY = 2;
// The app is not compatible with the device hardware.
ENTERPRISE_AUTO_INSTALL_ERROR_NOT_COMPATIBLE_WITH_DEVICE = 3;
// No license remained to grant ownership of the app, and the user did not
// already own the app.
ENTERPRISE_AUTO_INSTALL_ERROR_NO_LICENSES_REMAINING = 4;
// Required permissions for the app have not been accepted.
ENTERPRISE_AUTO_INSTALL_ERROR_MISSING_PERMISSION = 5;
// The app is not available based on the enterprise availability policy.
ENTERPRISE_AUTO_INSTALL_ERROR_NOT_APPROVED_OR_UNAVAILABLE = 6;
// The app is not available to the user or device.
ENTERPRISE_AUTO_INSTALL_ERROR_APP_UNAVAILABLE = 7;
// Failed to grant license because the user already has ownership.
ENTERPRISE_AUTO_INSTALL_ERROR_INCOMPATIBLE_OWNERSHIP = 8;
// The admin has not accepted the terms of service.
ENTERPRISE_AUTO_INSTALL_ERROR_TOS_NOT_ACCEPTED = 9;
// The device does not have enough RAM.
ENTERPRISE_AUTO_INSTALL_ERROR_INSUFFICIENT_RAM = 10;
// The app is incompatible with the device carrier.
ENTERPRISE_AUTO_INSTALL_ERROR_NOT_COMPATIBLE_WITH_DEVICE_CARRIER = 11;
// The app is incompatible with the country or carrier.
ENTERPRISE_AUTO_INSTALL_ERROR_NOT_COMPATIBLE_WITH_DEVICE_COUNTRY_OR_CARRIER = 12;
// The app is incompatible with the safe search level.
ENTERPRISE_AUTO_INSTALL_ERROR_NOT_COMPATIBLE_WITH_DEVICE_SAFE_SEARCH_LEVEL = 13;
// The app could not be installed due to an installer error.
ENTERPRISE_AUTO_INSTALL_ERROR_INSTALL_FAILED = 14;
// The app could not be installed due to network errors.
ENTERPRISE_AUTO_INSTALL_ERROR_NETWORK_FAILED = 15;
// The device does not have enough storage.
ENTERPRISE_AUTO_INSTALL_ERROR_INSUFFICIENT_STORAGE = 16;
}
EnterpriseAutoInstallState
// The current install state for an app.
enum EnterpriseAutoInstallState {
// Catch-all for unrecognized enum values.
INSTALL_STATE_UNKNOWN = 0;
// The app has been received by Play but an install attempt has not completed
// yet.
INSTALL_STATE_PENDING = 1;
// The latest install attempt failed and will be retried automatically.
INSTALL_STATE_ERROR = 2;
// The app has been installed.
INSTALL_STATE_INSTALLED = 3;
}
क्लोज़्ड टेस्टिंग के लिए ऐप्लिकेशन उपलब्ध कराना
क्लोज़्ड टेस्टिंग की सुविधा से, ऐप्लिकेशन डेवलपर को भरोसेमंद उपयोगकर्ताओं से, अपने ऐप्लिकेशन के शुरुआती वर्शन के बारे में सुझाव, शिकायत या राय मिलती है. डेवलपर, Google Play Console में क्लोज़्ड टेस्ट सेट अप कर सकते हैं. Play EMM API का इस्तेमाल करके, आईटी एडमिन खास उपयोगकर्ताओं को ऐप्लिकेशन के क्लोज़्ड वर्शन (जिन्हें ट्रैक भी कहा जाता है) उपलब्ध करा सकते हैं. आपके एंटरप्राइज़ के ग्राहक, इस सुविधा का इस्तेमाल करके तीसरे पक्ष के ऐप्लिकेशन के साथ-साथ, अपने संगठन के लिए बनाए गए निजी ऐप्लिकेशन की भी जांच कर सकते हैं.
ज़रूरी शर्तें पूरी करने वाले ऐप्लिकेशन
डेवलपर, किसी एंटरप्राइज़ को ऐप्लिकेशन के क्लोज़्ड टेस्टर की सूची में जोड़ने से पहले, यह देख लें कि ऐप्लिकेशन इन शर्तों को पूरा करता हो:
- ऐप्लिकेशन का प्रोडक्शन वर्शन, Google Play पर पब्लिश किया गया हो.
- Google Play Console में, ऐप्लिकेशन के बेहतर सेटिंग पेज पर, कारोबार के लिए Google Play चालू हो.
- ऐप्लिकेशन के सभी क्लोज़्ड वर्शन, वर्शन कोड से जुड़ी ज़रूरी शर्तों को पूरा करते हों.
क्लोज़्ड टेस्ट में किसी एंटरप्राइज़ को जोड़ना
ऐप्लिकेशन डेवलपर, क्लोज़्ड ऐल्फ़ा टेस्टिंग या Google Groups की मदद से ऐल्फ़ा टेस्टिंग के तरीकों का इस्तेमाल करने वाले टेस्ट में एंटरप्राइज़ जोड़ सकते हैं. निर्देशों के लिए, ओपन, क्लोज़्ड या इंटरनल टेस्ट सेट अप करने का तरीका बताने वाली गाइड देखें. डेवलपर को कार्यक्रम में हिस्सा लेने वाले हर एंटरप्राइज़ का संगठन आईडी डालना होगा. इसे एंटरप्राइज़ आईडी भी कहा जाता है. आईटी एडमिन, तीसरे पक्ष के ऐप्लिकेशन डेवलपर को अपने संगठन का आईडी दे सकते हैं. इसके लिए, यह तरीका अपनाएं:
- कारोबार के लिए Google Play Store में साइन इन करें.
- एडमिन सेटिंग पर क्लिक करें.
- संगठन की जानकारी वाले बॉक्स से संगठन आईडी की स्ट्रिंग कॉपी करें और उसे डेवलपर को भेजें.
निजी ऐप्लिकेशन के लिए अन्य ज़रूरी शर्तें
निजी ऐप्लिकेशन के लिए, डेवलपर को ऐप्लिकेशन के ऐडवांस सेटिंग पेज पर मौजूद कारोबार के लिए Google Play टैब में, हिस्सा लेने वाले हर एंटरप्राइज़ का संगठन आईडी भी जोड़ना होगा. निर्देशों के लिए, निजी ऐप्लिकेशन पब्लिश करना लेख पढ़ें.
उपयोगकर्ताओं को क्लोज़्ड ट्रैक उपलब्ध कराना
किसी खास ऐप्लिकेशन के लिए, किसी एंटरप्राइज़ के लिए उपलब्ध ट्रैक की सूची देखने के लिए, Products.get
को कॉल करें. जवाब में मौजूद appTracks[]
सूची में, हर ऐप्लिकेशन के लिए उपलब्ध ट्रैक शामिल होते हैं. appTracks[].trackAlias
, ट्रैक का ऐसा नाम होता है जिसे उपयोगकर्ता पढ़ सकता है. इसे ईएमएम कंसोल में दिखाया जा सकता है. वहीं, appTracks[].trackId
ट्रैक का ऐसा आईडी होता है जिसे मशीन पढ़ सकती है.
किसी उपयोगकर्ता को ऐप्लिकेशन के क्लोज़्ड ट्रैक को दिखाने के लिए, Device
के policy
में policy.productPolicy[].trackIds[]
सेट करें. अगर किसी डिवाइस के लिए एक से ज़्यादा ट्रैक उपलब्ध हैं, तो सबसे ज़्यादा वर्शन कोड वाला उपलब्ध वर्शन इंस्टॉल किया जाएगा.
कुछ मामलों में, Products.get
कॉल से ट्रैक आईडी अपने-आप हट जाएंगे. जैसे:
- ट्रैक के ऐप्लिकेशन वर्शन को किसी दूसरे ट्रैक या प्रोडक्शन में प्रमोट किया जाता है.
- प्रोडक्शन वर्शन को ट्रैक के वर्शन से नए वर्शन पर अपडेट किया गया हो.
- डेवलपर, ट्रैक को रोकता है.
पैसे चुकाकर डाउनलोड किए जाने वाले ऐप्लिकेशन के लाइसेंस का ट्रैक रखना
पैसे चुकाकर डाउनलोड किए जाने वाले ऐप्लिकेशन के लिए, Grouplicenses
ऑब्जेक्ट यह ट्रैक करता है कि किसी एंटरप्राइज़ के पास कितने लाइसेंस हैं और कितने लाइसेंस इस्तेमाल में हैं. किसी ऐप्लिकेशन के लाइसेंस की जानकारी पाने के लिए, Grouplicenses.get
पर कॉल करें.
किसी डिवाइस पर पैसे चुकाकर डाउनलोड किया जाने वाला ऐप्लिकेशन इंस्टॉल करने से पहले, ज़रूरी है कि एंटरप्राइज़ के पास उस ऐप्लिकेशन का लाइसेंस हो. लाइसेंस उपलब्ध होने पर, ऐप्लिकेशन को डिवाइस पर इंस्टॉल किया जाता है और एक Entitlements
ऑब्जेक्ट बनाया जाता है. Entitlements
ऑब्जेक्ट, किसी लाइसेंस को उपयोगकर्ता से लिंक करता है और ऐप्लिकेशन के लिए उपलब्ध लाइसेंस की संख्या कम करता है. अगर कोई लाइसेंस उपलब्ध नहीं है, तो ऐप्लिकेशन इंस्टॉल नहीं हो पाता और कोई Entitlements
ऑब्जेक्ट नहीं बनता.
Grouplicenses
और Entitlements
ऑब्जेक्ट का इस्तेमाल, बिना किसी शुल्क के डिस्ट्रिब्यूट किए जाने वाले ऐप्लिकेशन में नहीं किया जाता.