सामान्य मैनेजमेंट टास्क

ईएमएम, Android के लिए अपने एंटरप्राइज़ समाधानों में कई तरह के सामान्य मैनेजमेंट टास्क लागू कर सकते हैं. जैसे, इस गाइड में दिखाए गए टास्क. सैंपल कोड, Java के लिए Google Play EMM API क्लाइंट लाइब्रेरी® का इस्तेमाल करता है.

उपयोगकर्ताओं को खोजना और उपयोगकर्ताओं की जानकारी पाना

कई Google Play ईएमएम एपीआई को लोगों से जुड़े कुछ काम करने के लिए, userId (enterpriseId के साथ) की ज़रूरत होती है. जैसे, ऐप्लिकेशन इंस्टॉल करने, एनटाइटलमेंट पाने, और लाइसेंस देने के लिए. कुछ कॉल के लिए उपयोगकर्ता ऑब्जेक्ट की ज़रूरत होती है.

अगर कोई संगठन 'कारोबार के लिए Google Play खातों' का इस्तेमाल करता है, तो आपके पास उन खातों के उपयोगकर्ता ईमेल पतों और यूज़र आईडी के बीच मैप करने की सुविधा होती है. Google खातों के साथ आप UsersListResponse इस्तेमाल करते हैं.

उपयोगकर्ताओं को खोजें

यह कोड सैंपल, Google खातों से जुड़े यूज़र आईडी पाता है. यह उन संगठनों पर लागू नहीं होती जो मैनेज किए जा रहे Google Play खातों का इस्तेमाल करते हैं.

इस उदाहरण में यह माना गया है कि आपने अपने कोड में User और UsersListResponse मॉडल इंपोर्ट किए हैं. कोई खास उपयोगकर्ता खाता पाने के लिए, UsersListResponse को enterpriseId और ईमेल भेजकर उसका userId पाएं.

public UsersListResponse list(String enterpriseId, String email) throws
   IOException {
    return androidEnterprise
        .users()
        .list(enterpriseId, email)
        .execute();
}

उपयोगकर्ता की जानकारी पाएं

userId मिल जाने के बाद, आपको अन्य जानकारी मिल सकती है. Users.Get देखें.

public User get(String enterpriseId, String userId) throws IOException {
    return androidEnterprise
        .users()
        .get(enterpriseId, userId)
        .execute();
}

उपयोगकर्ता को ऐप्लिकेशन का ऐक्सेस देना

Google Play ईएमएम एपीआई का इस्तेमाल करके यह तय किया जा सकता है कि उपयोगकर्ता, 'कारोबार के लिए Google Play Store' से कौनसे ऐप्लिकेशन ऐक्सेस कर सकते हैं. किसी ऐप्लिकेशन को ऐक्सेस करने में उसे खोजने, देखने, इंस्टॉल करने, और अपडेट करने की सुविधा शामिल है. ये तीन अलग-अलग ऐक्सेस लेवल हैं:

  • सिर्फ़ अनुमति वाले ऐप्लिकेशन: उपयोगकर्ता के पास सिर्फ़ कुछ खास ऐप्लिकेशन का ऐक्सेस होता है.
  • मंज़ूरी दिए गए सभी ऐप्लिकेशन: उपयोगकर्ता के पास उन सभी ऐप्लिकेशन का ऐक्सेस होता है जिन्हें एंटरप्राइज़ के लिए मंज़ूरी मिली है.
  • सभी ऐप्लिकेशन: उपयोगकर्ता के पास उन सभी ऐप्लिकेशन का ऐक्सेस होता है जो Google Play Store पर सार्वजनिक तौर पर उपलब्ध हैं.

उपयोगकर्ता को सिर्फ़ कुछ खास ऐप्लिकेशन का ऐक्सेस देना

नीचे दिए गए उदाहरण में, 'कारोबार के लिए Google Play Store' से किसी उपयोगकर्ता को ऐप्लिकेशन के खास सेट का ऐक्सेस देने का तरीका बताया गया है. इस प्रोसेस में ये चरण शामिल हैं:

  • ऐसे productIds (ऐप्लिकेशन) की सूची इकट्ठा करें जिन्हें उपयोगकर्ता (प्रॉडक्टसेट) के लिए मंज़ूरी मिली हो.
  • productSetBehavior स्ट्रिंग की वैल्यू को "whitelist" पर सेट करके, तय करें कि उपयोगकर्ता सिर्फ़ दी गई सूची में ऐप्लिकेशन ऐक्सेस कर सकता है.
  • setAvailableProductSet का इस्तेमाल करके, उपयोगकर्ता के लिए उपलब्ध प्रॉडक्ट सेट पर, productIds की सूची और व्यवहार की सेटिंग लागू करें.
public ProductSet setProductSet(String enterpriseId, String userId,
    List<String> productIds) throws IOException {
  ProductSet productSet = new ProductSet();
  productSet.setProductId(productIds);
  productSet.setProductSetBehavior("whitelist");

  return androidEnterprise
      .users()
      .setAvailableProductSet(enterpriseId, userId, productSet)
      .execute();
}

उपयोगकर्ता को उन सभी ऐप्लिकेशन का ऐक्सेस देना जिन्हें मंज़ूरी मिली है

नीचे दिए गए उदाहरण में, उपयोगकर्ता को ऐसे किसी भी ऐप्लिकेशन का ऐक्सेस देने का तरीका बताया गया है जिसे 'कारोबार के लिए Google Play Store' से एंटरप्राइज़ के लिए मंज़ूरी मिली है. इस प्रोसेस में ये चरण शामिल हैं:

  • productSetBehavior स्ट्रिंग की वैल्यू को "allApproved" पर सेट करके, यह तय करें कि उपयोगकर्ता, एंटरप्राइज़ के लिए मंज़ूर किए गए सभी ऐप्लिकेशन को ऐक्सेस कर सकता है.
  • setAvailableProductSet का इस्तेमाल करने वाले उपयोगकर्ता पर यह सेटिंग लागू करें.
public ProductSet setUserIncludeApprovedApps(String enterpriseId, String userId)
    throws IOException {
  ProductSet productSet = new ProductSet();
  productSet.setProductSetBehavior("allApproved");

  return androidEnterprise
      .users()
      .setAvailableProductSet(enterpriseId, userId, productSet)
      .execute();
}

ध्यान दें: जब productSetBehavior को "allApproved" पर सेट किया जाता है, तो आपको प्रॉडक्टसेट के लिए कोई productIds तय करने की ज़रूरत नहीं होती.

उपयोगकर्ता को सभी ऐप्लिकेशन का ऐक्सेस देना

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

कुछ भरोसेमंद उपयोगकर्ताओं, जैसे कि आईटी एडमिन को एंटरप्राइज़ में ऐप्लिकेशन को अनुमति देने से पहले, उनकी जांच और आकलन करने के लिए इस बड़े लेवल के ऐक्सेस की ज़रूरत पड़ सकती है. उपयोगकर्ता को सभी ऐप्लिकेशन का ऐक्सेस देने की प्रोसेस में ये चरण शामिल हैं:

  • productSetBehavior स्ट्रिंग की वैल्यू को "includeAll" पर सेट करके, यह बताएं कि उपयोगकर्ता Google Play Store में मौजूद सभी ऐप्लिकेशन ऐक्सेस कर सकता है.
  • setAvailableProductSet का इस्तेमाल करने वाले उपयोगकर्ता पर यह सेटिंग लागू करें.
public ProductSet setUserIncludeAllApps(String enterpriseId, String userId)
    throws IOException {
  ProductSet productSet = new ProductSet();
  productSet.setProductSetBehavior("includeAll");

  return androidEnterprise
      .users()
      .setAvailableProductSet(enterpriseId, userId, productSet)
      .execute();
}

ध्यान दें: जब productSetBehavior को "includeAll" पर सेट किया जाता है, तो आपको प्रॉडक्टसेट के लिए कोई productIds तय करने की ज़रूरत नहीं होती.

स्टोर का लेआउट बनाना

उपयोगकर्ताओं को ऐप्लिकेशन का ऐक्सेस देने के बाद, ऐप्लिकेशन को 'कारोबार के लिए Google Play Store फ़्रंट' में दिखाने के लिए क्लस्टर में रखें.

Storelayoutpages और Storelayoutclusters एपीआई का इस्तेमाल करके, अपने हर ग्राहक के लिए पसंद के मुताबिक यूनीक स्टोर लेआउट बनाया जा सकता है. एक सामान्य लेआउट में पेजों का एक सेट होता है और हर लेआउट में कई ऐप्लिकेशन हो सकते हैं. मिलते-जुलते ऐप्लिकेशन को एक ही क्लस्टर में रखा जा सकता है. जानकारी और सैंपल कोड के लिए, कस्टम स्टोर लेआउट बनाना देखें.

किसी ऐप्लिकेशन की अनुमतियां पाना

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

सबसे सही तरीका यह है कि आप अपने ईएमएम कंसोल में, अनुमति iframe को एम्बेड करें. इसका मतलब है कि उपयोगकर्ता को मैनेज किए जा रहे Google Play Console पर अलग से जाने की ज़रूरत नहीं है. iframe का यूआरएल पाने के लिए, Products.getApprovalUrl का इस्तेमाल करें.

public String getApprovalUrl(String enterpriseId, String productId)
    throws IOException {
  return androidEnterprise
      .products()
      .generateApprovalUrl(enterpriseId, productId)
      .execute()
      .getUrl();
}

उन अनुमतियों को स्वीकार करने के लिए, Products.approve का इस्तेमाल करें.

public void approveProduct(String enterpriseId,
    String productId,
    String approvalUrl) throws IOException {
  ProductsApproveRequest productsApproveRequest =
      new ProductsApproveRequest()
          .setApprovalUrlInfo(
              new ApprovalUrlInfo().setApprovalUrl(approvalUrl));
  androidEnterprise
      .products()
      .approve(enterpriseId, productId, productsApproveRequest)
      .execute();
  }

उपयोगकर्ता के डिवाइस पाएं

डिवाइस से जुड़ी खास कार्रवाइयां करने के लिए, आपको उपयोगकर्ता से जुड़े डिवाइसों की पहचान करनी होगी. यह उदाहरण DevicesListResponse का इस्तेमाल करके, दिए गए userID के लिए डिवाइसों की सूची दिखाता है.

public DevicesListResponse list(String enterpriseId, String userId) throws
   IOException {

    return androidEnterprise
        .devices()
        .list(enterpriseId, userId)
        .execute();
}

कारोबार के लिए Google Play को पहली बार ऐक्सेस करते समय अगर उपयोगकर्ता के पास दी गई सेवा की शर्तों से सहमति है, तो रिस्पॉन्स में मैनेज नहीं किए जा रहे डिवाइस (unmanagedProfile मैनेजमेंट टाइप वाले डिवाइस) शामिल होते हैं.

डिवाइस पाएं और उसकी स्थिति सेट करें

यह मैनेजमेंट टास्क, सिर्फ़ उन संगठनों पर लागू होता है जो Google खातों का इस्तेमाल करते हैं. यह मैनेज किए जा रहे Google Play खातों का इस्तेमाल करने वाले संगठनों पर लागू नहीं होता है.

जब किसी मैनेज किए जा रहे डिवाइस पर उपयोगकर्ता का मैनेज किया जा रहा Google खाता चालू किया जाता है, तो Google की सेवाओं का ऐक्सेस इन बातों के आधार पर चालू या बंद किया जाता है:

अगर ईएमएम एनफ़ोर्समेंट बंद है, तो डिवाइस की स्थिति को अनदेखा कर दिया जाता है. साथ ही, जब भी किसी Android डिवाइस पर खाता चालू होता है, तो उसे Google की सेवाओं का ऐक्सेस मिल जाता है. अगर ईएमएम एनफ़ोर्समेंट चालू है, लेकिन डिवाइस की स्थिति चालू नहीं है, तो उपयोगकर्ता Google Play से ऐप्लिकेशन इंस्टॉल नहीं कर पाएंगे. साथ ही, Google Play ईएमएम एपीआई उस उपयोगकर्ता के लिए, डिवाइस पर ऐप्लिकेशन को बिना किसी सूचना के इंस्टॉल नहीं कर पाएंगे.

इस उदाहरण में डिवाइस की स्थिति जानने का तरीका बताया गया है (यह जानकारी enterpriseId, userId, और deviceId को पास करके दी गई है).

getState() और setState() ये काम, सिर्फ़ managedDevice या managedProfile (सिर्फ़ Devices रिसॉर्स पर) वाले managementType डिवाइसों पर काम करते हैं. unmanagedProfile में से managementType वाले डिवाइसों को इन एपीआई से कंट्रोल नहीं किया जा सकता.

public DeviceState getState(String enterpriseId, String userId, String
   deviceId) throws IOException {

    return androidEnterprise
        .devices()
        .getState(enterpriseId, userId, deviceId)
        .execute();
}

AccountState स्ट्रिंग को सही कॉन्सटेंट पर सेट करके, किसी डिवाइस पर खाते के लिए Google की सेवाओं को चालू या बंद करें.

public DeviceState setState(String enterpriseId, String userId, String
   deviceId, String accountState) throws IOException {

    DeviceState deviceState = new DeviceState();
    deviceState.setAccountState(accountState);

    return androidEnterprise
        .devices()
        .setState(enterpriseId, userId, deviceId, deviceState)
        .execute();
}

किसी डिवाइस पर ऐप्लिकेशन को पुश इंस्टॉल करना

एडमिन, बिना सूचना दिए ऐप्लिकेशन इंस्टॉल कर सकते हैं. इसके लिए, उपयोगकर्ता के इंटरैक्शन की ज़रूरत नहीं होती. इस उदाहरण में, किसी ऐप्लिकेशन (productId ने इसकी पहचान की है) को बिना किसी सूचना के (deviceId ने पहचाना) को इंस्टॉल करने के लिए Installs.Update का इस्तेमाल किया है.

public Install update(String enterpriseId, String userId, String
   deviceId, String productId) throws IOException {

    return androidEnterprise
        .installs()
        .update(enterpriseId, userId, deviceId, productId,
           new Install())
        .execute();
}

अगर डिवाइस में ऐप्लिकेशन पहले से मौजूद है और उसका अपडेट किया गया वर्शन उपलब्ध है, तो ऐप्लिकेशन को नए वर्शन में अपडेट कर दिया जाता है.

मंज़ूर किए गए ऐप्लिकेशन की सूची में से ऐप्लिकेशन खोजें और पाएं

एडमिन, ऐसे ऐप्लिकेशन की सूची बनाते और मैनेज करते हैं जिन्हें उनके उपयोगकर्ताओं के लिए, 'कारोबार के लिए Google Play' में उपलब्ध कराया जाता है. 'ऑफ़िस में निजी डिवाइस का इस्तेमाल' वाले डिवाइस का इस्तेमाल करने वाले ऐसे लोग जिनके पास वर्क प्रोफ़ाइल है और कॉर्पोरेट के लिए इस्तेमाल होने वाले डिवाइस हैं, जिनके उपयोगकर्ता पूरे डिवाइस को संगठन मैनेज करता है, वे सिर्फ़ इस मंज़ूरी वाली सूची से ऐप्लिकेशन डाउनलोड कर सकते हैं.

खोज बॉक्स शामिल करने के लिए, ईएमएम कंसोल को पसंद के मुताबिक बनाया जा सकता है. इससे एडमिन सिर्फ़ उन ऐप्लिकेशन को खोज पाएंगे जो अनुमति वाले ऐप्लिकेशन की सूची में शामिल होने चाहिए. खोजने की सुविधा, 'कारोबार के लिए Google Play' के स्टैंडर्ड तौर पर उपलब्ध खोज फ़ंक्शन की तरह ही एक जैसे पैरामीटर स्वीकार करती है. हालांकि, यह सिर्फ़ उन ही ऐप्लिकेशन की खोज करती है जो अनुमति वाले ऐप्लिकेशन की सूची में शामिल होते हैं.

उदाहरण के लिए, अगर एडमिन अपने एंटरप्राइज़ के डिवाइसों पर, मंज़ूरी दिए गए ऐप्लिकेशन की सूची में शामिल किसी ऐप्लिकेशन को इंस्टॉल करने की अनुमति देना चाहता है, तो वह ऐप्लिकेशन ढूंढने के लिए ईएमएम कंसोल में इस खोज फ़ंक्शन का इस्तेमाल कर सकता है.

अपनी क्वेरी में, आप यह बता सकते हैं कि आपके नतीजे में ज़्यादा से ज़्यादा कितने प्रॉडक्ट शामिल होने चाहिए, जैसे कि setMaxResults(10L), स्क्रीन को भरने के लिए काफ़ी है. डिफ़ॉल्ट वैल्यू 100 है. यह एक बार में दी जा सकने वाली ज़्यादा से ज़्यादा वैल्यू भी है. जब नतीजे में कोई पेजिनेशन टोकन होता है, तो ऐसे और भी नतीजे होते हैं जिन्हें पेज नंबर वाले टोकन का इस्तेमाल करके हासिल किया जा सकता है.

इस उदाहरण में, बेहतर ढंग से काम करने में मदद करने वाले ऐप्लिकेशन के लिए की गई खोज के पहले 10 नतीजे पाने का तरीका बताया गया है. Products.List देखें.

public List searchProducts(String enterpriseId) throws IOException {
  ProductsListResponse executeResult =
      androidEnterprise
          .products()
          .list(enterpriseId)
          .setMaxResults(10L)
          .setQuery("productivity")
          .execute();
  return executeResult.getProduct();
}

अगर खोज के नतीजे में पेज नंबर वाला टोकन है, तो खोज ने setMaxResults से ज़्यादा नतीजे दिए या इस उदाहरण में 10 से ज़्यादा नतीजे मिले. ज़्यादा नतीजे पाने के लिए, खोज को फिर से करें और अनुरोध में पेजिनेशन टोकन शामिल करें. इस उदाहरण में अगले 10 नतीजे शामिल हैं.

public ProductsListResponse continueSearch(
    String enterpriseId, ProductsListResponse previousResponse) throws IOException {
  ProductsListResponse nextResults =
      androidEnterprise
          .products()
          .list(enterpriseId)
          .setMaxResults(10L)
          .setToken(previousResponse.getTokenPagination().getNextPageToken())
          .setQuery("productivity")
          .execute();
  return nextResults;
}