customer API, डिवाइसों का प्रोग्रामैटिक कंट्रोल देता है और Android पर 'पहले से तैयार डिवाइस' सुविधा का कॉन्फ़िगरेशन. इस दस्तावेज़ में एपीआई टू एंटरप्राइज़ मोबिलिटी मैनेजमेंट (ईएमएम) देने वाली कंपनियां और एंटरप्राइज़ आईटी डेवलपर. इस दस्तावेज़ को पढ़ने के बाद, आपको एपीआई में इस्तेमाल किए जाने वाले मुख्य संसाधनों और उनके इंटरैक्ट करने के तरीके के बारे में पता चल जाएगा. अगर आपने पहले से ही 'पहले से तैयार डिवाइस' सुविधा का इस्तेमाल नहीं किया है रजिस्टर करने के लिए, android.com का छोटा वर्शन पढ़ें परिचय.
खास जानकारी
कस्टमर एपीआई, उन संगठनों की मदद करता है जो Android ज़ीरो-टच रजिस्ट्रेशन वाले डिवाइस खरीदते हैं. आपका ऐप्लिकेशन या टूल, आईटी एडमिन को ये काम करने में मदद कर सकता है:
- प्रावधान कॉन्फ़िगरेशन बनाएं, उनमें बदलाव करें, और उन्हें मिटाएं.
- डिवाइस पर कॉन्फ़िगरेशन लागू करें या हटाएं.
- ज़ीरो-टच रजिस्ट्रेशन की सुविधा में जोड़े गए किसी भी डिवाइस के लिए, डिफ़ॉल्ट कॉन्फ़िगरेशन चुनें जा रहा है.
एपीआई की मदद से, आईटी एडमिन, डिवाइसों को 'पहले से तैयार डिवाइस' प्रोग्राम से भी अनरजिस्टर कर सकते हैं. अपने संगठन के उपयोगकर्ताओं को मैनेज करने या सेवा की शर्तें स्वीकार करने के लिए, आईटी एडमिन, ज़ीरो-टच रजिस्ट्रेशन पोर्टल का इस्तेमाल करते हैं.
इस एपीआई के सामान्य उपयोगकर्ता ये हो सकते हैं:
- ईएमएम सेवा देने वाली कंपनियां, अपने कंसोल में ज़ीरो-टच रजिस्ट्रेशन की सुविधा जोड़ रही हैं.
- एंटरप्राइज़ आईटी डेवलपर, ज़ीरो-टच रजिस्ट्रेशन के टास्क को ऑटोमेट करने के लिए टूल बना रहे हैं.
मुख्य संसाधन
कॉन्फ़िगरेशन और डिवाइस, एपीआई में इस्तेमाल किए जाने वाले मुख्य संसाधन होते हैं. अगर आप संगठन, ज़ीरो-टच रजिस्ट्रेशन की सुविधा का इस्तेमाल करके, कॉन्फ़िगरेशन और डिवाइसों को भी सेट कर सकता है रजिस्ट्रेशन पोर्टल पर जाएं.
- कॉन्फ़िगरेशन
- आईटी एडमिन, कॉन्फ़िगरेशन का इस्तेमाल करके डिवाइसों के लिए प्रावधान करने के विकल्प सेट करते हैं. कॉन्फ़िगरेशन में, ईएमएम की मोबाइल नीतियां और दिखने वाली संपर्क जानकारी शामिल होती है लोगों की मदद करते हैं. कॉन्फ़िगरेशन, एपीआई का मुख्य काम होता है. इसलिए, इनका इस्तेमाल कई तरह से किया जा सकता है तरीकों का इस्तेमाल करना होगा. ज़्यादा जानने के लिए, नीचे कॉन्फ़िगरेशन देखें.
- डिवाइस
- पहले से तैयार Android डिवाइस, जिससे संगठन ने खरीदा है दोबारा बेचने वाला हो सकता है. 'पहले से तैयार डिवाइस' सुविधा में डिवाइस को शामिल करने के लिए, कोई कॉन्फ़िगरेशन लागू करें रजिस्ट्रेशन. डिवाइसों में हार्डवेयर आईडी और अटैच किया गया मेटाडेटा होता है. इस बारे में ज़्यादा जानने के लिए, यह देखें डिवाइस नीचे दिए गए हैं.
- डीपीसी
- किसी ईएमएम के डीपीसी (डिवाइस से जुड़ी नीति) का रीड-ओनली रेफ़रंस
कंट्रोलर). डिवाइसों के लिए ईएमएम सलूशन चुनने के लिए, कॉन्फ़िगरेशन में डीपीसी जोड़ें. सूची में शामिल सभी DPC
'पहले से तैयार डिवाइस' सुविधा वाले एपीआई की मदद से, Google Play पर उपलब्ध हैं. यहां की यात्रा पर हूं
ज़्यादा जानने के लिए,
Dpc
देखें.
आपका ऐप्लिकेशन जिन एपीआई के तरीकों और संसाधनों का इस्तेमाल कर सकता है उन्हें सूची में जोड़ने के लिए, एपीआई का संदर्भ.
कॉन्फ़िगरेशन
Configuration
एपीआई रिसॉर्स में,
फ़ॉलो किया जा रहा है:
- डिवाइसों पर इंस्टॉल किया गया EMM का DPC.
- डिवाइसों पर लागू ईएमएम नीतियां.
- सेटअप के दौरान उपयोगकर्ताओं की मदद करने के लिए, डिवाइस पर दिखने वाली संपर्क जानकारी.
एपीआई का इस्तेमाल करके, आपका ऐप्लिकेशन आईटी एडमिन के लिए कॉन्फ़िगरेशन मैनेज कर सकता है. कॉन्फ़िगरेशन फ़ेच करने, बनाने, अपडेट करने, और मिटाने के लिए एपीआई को कॉल करें. नीचे दिया गया उदाहरण दिखाता है कि कोई नया कॉन्फ़िगरेशन बनाएं:
Java
// Add metadata to help the device user during provisioning. Configuration configuration = new Configuration(); configuration.setConfigurationName("Sales team"); configuration.setCompanyName("XYZ Corp."); configuration.setContactEmail("it-support@example.com"); configuration.setContactPhone("+1 (800) 555-0112"); configuration.setCustomMessage("We're setting up your phone. Call or email for help."); // Set the DPC that zero-touch enrollment downloads and installs from Google Play. configuration.setDpcResourcePath(dpc.getName()); // Set the JSON-formatted EMM provisioning extras that are passed to the DPC. configuration.setDpcExtras("{" + "\"android.app.extra.PROVISIONING_LEAVE_ALL_SYSTEM_APPS_ENABLED\":true," + "\"android.app.extra.PROVISIONING_ADMIN_EXTRAS_BUNDLE\":{" + "\"default_min_password_length\":6," + "\"company_name\":\"XYZ Corp\"," + "\"management_server\":\"emm.example.com\"," + "\"terms_url\":\"https://www.example.com/policies/terms/\"," + "\"allowed_user_domains\":\"[\\\"example.com\\\", \\\"example.org\\\"]\"" + "}" + "}"); // Create the new configuration on the server. AndroidProvisioningPartner.Customers.Configurations.Create request = service.customers().configurations().create(customerAccount, configuration); Configuration response = request.execute();
.NET
// Add metadata to help the device user during provisioning. Configuration configuration = new Configuration { ConfigurationName = "Sales team", CompanyName = "XYZ Corp.", ContactEmail = "it-support@example.com", ContactPhone = "+1 (800) 555-0112", CustomMessage = "We're setting up your phone. Call or email for help." }; // Set the DPC that zero-touch enrollment downloads and installs from Google Play. configuration.DpcResourcePath = dpc.Name; // Set the JSON-formatted EMM provisioning extras that are passed to the DPC. configuration.DpcExtras = @"{ ""android.app.extra.PROVISIONING_LEAVE_ALL_SYSTEM_APPS_ENABLED"":true, ""android.app.extra.PROVISIONING_ADMIN_EXTRAS_BUNDLE"":{ ""default_min_password_length"":6, ""company_name"":""XYZ Corp"", ""management_server"":""emm.example.com"", ""terms_url"":""https://www.example.com/policies/terms/"", ""allowed_user_domains"":""[\""example.com\"", \""example.org\""]"" } }"; // Create the new configuration on the server. var request = service.Customers.Configurations.Create(configuration, customerAccount); var response = request.Execute();
Python
# Add metadata to help the device user during provisioning. configuration = { 'configurationName': 'Sales team', 'companyName': 'XYZ Corp.', 'contactEmail': 'it-support@example.com', 'contactPhone': '+1 (800) 555-0112', 'customMessage': 'We\'re setting up your phone. Call or email for help.'} # Set the DPC that zero-touch enrollment installs from Google Play. configuration['dpcResourcePath'] = dpc['name'] # Set the JSON-formatted EMM provisioning extras that are passed to the DPC. configuration['dpcExtras'] = '''{ "android.app.extra.PROVISIONING_LEAVE_ALL_SYSTEM_APPS_ENABLED":true, "android.app.extra.PROVISIONING_ADMIN_EXTRAS_BUNDLE":{ "default_min_password_length":6, "company_name":"XYZ Corp", "management_server":"emm.example.com", "terms_url":"https://www.example.com/policies/terms/", "allowed_user_domains":"[\\"example.com\\", \\"example.org\\"]"} }''' # Create the new configuration on the server. response = service.customers().configurations().create( parent=customer_account, body=configuration).execute()
पैच एपीआई का इस्तेमाल करके, किसी कॉन्फ़िगरेशन को अपडेट करते समय,
फ़ील्ड मास्क—या
वैल्यू, हर उस फ़ील्ड के लिए है जिसे आपको null
नहीं बनाना है. डिफ़ॉल्ट
कॉन्फ़िगरेशन (नीचे) देखें, जिसमें बताया गया है कि
कॉन्फ़िगरेशन को बेहतर तरीके से अपडेट कर सकता है.
कॉन्फ़िगरेशन मिटाएं
अगर किसी कॉन्फ़िगरेशन को अब भी डिवाइसों पर लागू किया गया है, तो उसे मिटाया नहीं जा सकता. अगर आपको
इस्तेमाल किए जा रहे किसी कॉन्फ़िगरेशन को मिटाने के लिए, एपीआई वाला तरीका एचटीटीपी 400 Bad Request
दिखाता है
स्टेटस कोड और एक मैसेज दिखाई देगा, जो बताता है कि कितने डिवाइस कॉन्फ़िगरेशन का इस्तेमाल करते हैं.
कॉल करें
customers.devices.removeConfiguration
फिर से कोशिश करने से पहले डिवाइस से कॉन्फ़िगरेशन हटाने के लिए.
डिफ़ॉल्ट कॉन्फ़िगरेशन
'पहले से तैयार डिवाइस' सुविधा तब सबसे अच्छे तरीके से काम करती है, जब कोई संगठन डिफ़ॉल्ट सेटिंग सेट करता है
कॉन्फ़िगरेशन, जो संगठन के खरीदे गए किसी भी नए डिवाइस पर लागू होता है.
अगर कोई डिफ़ॉल्ट कॉन्फ़िगरेशन सेट नहीं है, तो आईटी एडमिन को उसे सेट करने के लिए कहें.
नीचे दिए गए उदाहरण में, किसी मौजूदा कॉन्फ़िगरेशन को डिफ़ॉल्ट बनाने का तरीका बताया गया है. इसके लिए, isDefault
को true
पर सेट करें:
Java
// Send minimal data with the request. Just the 2 required fields. // targetConfiguration is an existing configuration that we want to make the default. Configuration configuration = new Configuration(); configuration.setIsDefault(true); configuration.setConfigurationId(targetConfiguration.getConfigurationId()); // Call the API, including the FieldMask to avoid setting other fields to null. AndroidProvisioningPartner.Customers.Configurations.Patch request = service .customers() .configurations() .patch(targetConfiguration.getName(), configuration); request.setUpdateMask("isDefault"); Configuration results = request.execute();
.NET
// Send minimal data with the request. Just the 2 required fields. // targetConfiguration is an existing configuration that we want to make the default. Configuration configuration = new Configuration { IsDefault = true, ConfigurationId = targetConfiguration.ConfigurationId, }; // Call the API, including the FieldMask to avoid setting other fields to null. var request = service.Customers.Configurations.Patch(configuration, targetConfiguration.Name); request.UpdateMask = "IsDefault"; Configuration results = request.Execute();
Python
# Send minimal data with the request. Just the 2 required fields. # target_configuration is an existing configuration we'll make the default. configuration = { 'isDefault': True, 'configurationId': target_configuration['configurationId']} # Call the API, including the FieldMask to avoid setting other fields to null. response = service.customers().configurations().patch( name=target_configuration['name'], body=configuration, updateMask='isDefault').execute()
इसमें सिर्फ़ एक डिफ़ॉल्ट कॉन्फ़िगरेशन हो सकता है. नया डिफ़ॉल्ट कॉन्फ़िगरेशन बनाने पर, पिछले कॉन्फ़िगरेशन का isDefault
फ़ील्ड false
पर सेट हो जाता है. आपको ये काम करने पड़ सकते हैं
कैश मेमोरी में सेव किए गए किसी Configuration
इंस्टेंस को रीफ़्रेश करें, ताकि आप सही वैल्यू देख सकें
isDefault
फ़ील्ड.
गाइड डिवाइस उपयोगकर्ताओं
'पहले से तैयार डिवाइस' सुविधा वाले कॉन्फ़िगरेशन की मदद से, डिवाइस के सेटअप के दौरान उपयोगकर्ताओं को उनकी ज़रूरत के मुताबिक दिशा-निर्देश दिखाए जाते हैं
उपयोगकर्ताओं की मदद करने के लिए तैयार विज़र्ड. आपको संपर्क करने के लिए टेलीफ़ोन नंबर और ईमेल पता शामिल करना होगा
में डिवाइस को मैनेज करने वाले संगठन का नाम
कॉन्फ़िगरेशन. हमारा यह भी सुझाव है कि आप
उपयोगकर्ता की गतिविधियों के बारे में ज़्यादा जानकारी देने के लिए, customMessage
फ़ील्ड
डिवाइस.
क्योंकि उपयोगकर्ता अपने सेट किए गए डिवाइस से कॉल या ईमेल नहीं कर पाएंगे अप, टेलीफ़ोन नंबर और ईमेल पते को फ़ॉर्मैट करें, ताकि आपके काम के साथ, जानकारी.
डिवाइस
रीसेलर तब डिवाइस बनाते हैं, जब कोई ग्राहक 'पहले से तैयार डिवाइस' सुविधा के लिए उन्हें खरीदता है
रजिस्ट्रेशन—आईटी एडमिन डिवाइस नहीं बना सकते. डिवाइसों के साथ काम करने के लिए, Device
एपीआई संसाधन पर मौजूद तरीकों को कॉल करें. अगर आपको डिवाइसों को खोजना है, तो सभी डिवाइसों की सूची बनाएं और अपने ऐप्लिकेशन में हर बैच को स्थानीय तौर पर फ़िल्टर करें. उदाहरण के लिए, नीचे पेज के हिसाब से नतीजे देखें.
डिवाइस कॉन्फ़िगर करें
डिवाइस पर कॉन्फ़िगरेशन लागू करने से, डिवाइस 'पहले से तैयार डिवाइस' सुविधा के लिए रजिस्टर हो जाता है
रजिस्ट्रेशन. कॉन्फ़िगरेशन लागू करने के लिए, यहां कॉल करें
customers.devices.applyConfiguration
.
कॉन्फ़िगरेशन लागू करने के बाद, डिवाइस अपने-आप कॉन्फ़िगर होने की सुविधा चालू कर देता है
डिवाइस को पहली बार चालू करने या फ़ैक्ट्री रीसेट करने की सुविधा का इस्तेमाल करें. नीचे दिया गया उदाहरण दिखाता है कि आप
कॉन्फ़िगरेशन:
Java
List<Device> devices = getDevicesToConfigure(service); Configuration configurationToApply = getConfigurationToApply(service); // Loop through the collection and apply the configuration to each device. This might // take some time if the collection contains many devices. for (Device device : devices) { System.out.println(device.getDeviceIdentifier().getImei()); // Wrap the device ID in a DeviceReference. DeviceReference deviceRef = new DeviceReference(); deviceRef.setDeviceId(device.getDeviceId()); // Build and send the request to the API. CustomerApplyConfigurationRequest body = new CustomerApplyConfigurationRequest(); body.setConfiguration(configurationToApply.getName()); body.setDevice(deviceRef); AndroidProvisioningPartner.Customers.Devices.ApplyConfiguration request = service .customers() .devices() .applyConfiguration(customerAccount, body); request.execute(); }
.NET
IList<Device> devices = GetDevicesToConfigure(service); Configuration configurationToApply = GetConfigurationToApply(service); // Loop through the collection and apply the configuration to each device. This might // take some time if the collection contains many devices. foreach (Device device in devices) { Console.WriteLine(device.DeviceIdentifier.Imei); // Wrap the device ID in a DeviceReference. var deviceRef = new DeviceReference { DeviceId = device.DeviceId }; // Build and send the request to the API. CustomerApplyConfigurationRequest body = new CustomerApplyConfigurationRequest { Configuration = configurationToApply.Name, Device = deviceRef }; var request = service.Customers.Devices.ApplyConfiguration(body, customerAccount); request.Execute(); }
Python
devices = get_devices_to_configure(service) configuration = get_configuration_to_apply(service) # Loop through the collection and apply the configuration to each device. # This might take some time if the collection contains many devices. for device in devices: print(device['deviceIdentifier']['imei']) # Wrap the device ID in a DeviceReference. device_ref = {'deviceId': device['deviceId']} # Build and send the request to the API. body = {'configuration': configuration['name'], 'device': device_ref} service.customers().devices().applyConfiguration( parent=customer_account, body=body).execute()
डिवाइस से कॉन्फ़िगरेशन हटाने के लिए, कॉल करें
customers.devices.removeConfiguration
.
डिवाइस को फ़ैक्ट्री रीसेट करने के बाद, यह बदलाव लागू होता है.
डिवाइसों पर दावा करें
आईटी एडमिन, 'पहले से तैयार डिवाइस' सुविधा से किसी डिवाइस को हटाने के लिए, उस पर दावा कर सकते हैं. आईटी
एडमिन किसी ऐसे डिवाइस पर दावा नहीं कर सकता जिसे वह किसी दूसरे खाते पर माइग्रेट करना चाहता है, बेचा जाता है,
या रीसेलर को वापस कर दिया गया हो. किसी संगठन से डिवाइस पर किया गया दावा हटाने के लिए, customers.devices.unclaim
वाले तरीके को कॉल करें.
नीचे दिए गए उदाहरण में, IMEI नंबर से किसी डिवाइस पर दावा हटाने का तरीका बताया गया है और मैन्युफ़ैक्चरर का नाम:
Java
// Wrap the hardware ID and manufacturer values in a DeviceIdentifier. // Then wrap the DeviceIdentifier in a DeviceReference. DeviceIdentifier identifier = new DeviceIdentifier(); identifier.setImei("123456789012347"); identifier.setManufacturer("Google"); DeviceReference reference = new DeviceReference(); reference.setDeviceIdentifier(identifier); // Create the body of the request. CustomerUnclaimDeviceRequest body = new CustomerUnclaimDeviceRequest(); body.setDevice(reference); // Call the API method to unclaim the device from the organization. service.customers().devices().unclaim(customerAccount, body).execute();
.NET
// Wrap the hardware ID and manufacturer values in a DeviceIdentifier. // Then wrap the DeviceIdentifier in a DeviceReference. DeviceIdentifier identifier = new DeviceIdentifier { Imei = "123456789012347", Manufacturer = "Google" }; DeviceReference reference = new DeviceReference(); reference.DeviceIdentifier = identifier; // Create the body of the request. CustomerUnclaimDeviceRequest body = new CustomerUnclaimDeviceRequest(); body.Device = reference; // Call the API method to unclaim the device from the organization. service.Customers.Devices.Unclaim(body, customerAccount).Execute();
Python
# Wrap the hardware ID and manufacturer values in a DeviceIdentifier. # Then wrap the DeviceIdentifier in a DeviceReference. identifier = {'imei': '123456789012347', 'manufacturer': 'Google'} reference = {'deviceIdentifier': identifier} # Create the body of the request. body = {'device': reference} # Call the API method to unclaim the device from the organization. service.customers().devices().unclaim( parent=customer_account, body=body).execute()
डिवाइस का मेटाडेटा
आईटी एडमिन, रीसेलर के डिवाइस पर जोड़ा गया मेटाडेटा देख सकता है. Display Network में दिखने वाले विज्ञापन आपके ऐप्लिकेशन में इस डिवाइस का मेटाडेटा. इससे आईटी एडमिन को डिवाइसों को पहचानने में मदद मिलती है.
आपको दिखाई दे सकने वाले मेटाडेटा के बारे में ज़्यादा जानने के लिए, डिवाइस रीसेलर के लिए मेटाडेटा गाइड.
पेज किए गए नतीजे
ऐसा हो सकता है कि customers.devices.list
एपीआई वाला तरीका दिखे
तो डिवाइस की सूची को भी समझा जा सकता है. रिस्पॉन्स का साइज़ कम करने के लिए, यह और दूसरा एपीआई
सहायता पेज के नतीजे देखने के लिए, customers.list
जैसे तरीकों का इस्तेमाल करें. के साथ
पेज वाले नतीजे हैं, तो आपका ऐप्लिकेशन बार-बार बड़ी सूचियों का अनुरोध कर सकता है और उन्हें प्रोसेस कर सकता है
एक बार में सिर्फ़ एक पेज.
एपीआई मेथड को कॉल करने के बाद, देखें कि जवाब में
nextPageToken
. अगर nextPageToken
नहीं है
null
, आपका ऐप्लिकेशन
फिर से सबमिट करें. आपको इस सीमा में डिवाइस की संख्या के लिए ऊपरी सीमा सेट करनी होगी
pageSize
पैरामीटर. अगर nextPageToken
null
है, तो आपके ऐप्लिकेशन ने
आखिरी पेज.
नीचे दिए गए तरीके का उदाहरण यह दिखाता है कि आपका ऐप्लिकेशन डिवाइस की सूची को कैसे प्रिंट कर सकता है, एक उदाहरण के तौर पर एक बार में कई पेज होने चाहिए:
Java
private void printDevices(AndroidProvisioningPartner service, String customerAccount, String pageToken) throws IOException { // Call the API to get a page of Devices. Send a page token from the method argument. // If the page token is null, the API returns the first page. AndroidProvisioningPartner.Customers.Devices.List request = service.customers().devices().list(customerAccount); request.setPageSize(50L); request.setPageToken(pageToken); CustomerListDevicesResponse response = request.execute(); // Print the devices included in this page of results. for (Device device : response.getDevices()) { System.out.format("Device: %s\n", device.getName()); } System.out.println("---"); // Check to see if another page of devices is available. If yes, fetch & print the devices. if (response.getNextPageToken() != null) { this.printDevices(service, customerAccount, response.getNextPageToken()); } }
.NET
private void PrintDevices(AndroidProvisioningPartnerService service, String customerAccount, String pageToken) { // Call the API to get a page of Devices. Send a page token from the method argument. // If the page token is null, the API returns the first page. var request = service.Customers.Devices.List(customerAccount); request.PageSize = 50; request.PageToken = pageToken; var response = request.Execute(); // Print the devices included in this page of results. foreach (Device device in response.Devices) { Console.WriteLine("Device: {0}", device.Name); } Console.WriteLine("---"); // Check to see if another page of devices is available. If yes, fetch and print the devices. if (response.NextPageToken != null) { this.PrintDevices(service, customerAccount, response.NextPageToken); } }
Python
def print_devices(service, customer_account, page_token): """Demonstrates how to loop through paginated lists of devices.""" # Call the API to get a page of Devices. Send a page token from the method # argument. If the page token is None, the API returns the first page. response = service.customers().devices().list( parent=customer_account, pageSize=50, pageToken=page_token).execute() # Print the devices included in this page of results. for device in response['devices']: print('Device: {0}'.format(device['name'])) print('---') # Check to see if another page of devices is available. If yes, # fetch and print the devices. if 'nextPageToken' in response: print_devices(service, customer_account, response['nextPageToken'])
अपनी प्रोफ़ाइल बनाना शुरू करें
इसके बाद, अनुमति देना में जाकर, एपीआई कॉल की अनुमति देने का तरीका पढ़ें. अगर आपको एपीआई के बारे में ज़्यादा जानें और इनके लिए क्विकस्टार्ट गाइड पर नज़र डालें Java, .NET, और Python. एपीआई कॉल के उदाहरण देखने और खुद एपीआई को कॉल करने के लिए, colab का इस्तेमाल किया जा सकता है.