उपयोगकर्ता खाते लागू करना

Android Enterprise में रजिस्टर करने के लिए, उपयोगकर्ता की पहचान के दो मुख्य टाइप होते हैं: मैनेज किए जा रहे Google Play खाते और मैनेज किए जा रहे Google खाते. Managed Google Play खाते, डिवाइस के हिसाब से होते हैं. इसका मतलब है कि ये किसी खास उपयोगकर्ता की Google पहचान से नहीं जुड़े होते. इसके उलट, मैनेज किए जा रहे Google खाते, उपयोगकर्ता की कॉर्पोरेट Google पहचान से लिंक होते हैं. इससे उपयोगकर्ता को बेहतर अनुभव मिलता है, क्योंकि वे अपने डिवाइसों पर लॉग इन रहते हैं.

Managed Google Play खातों का इस्तेमाल पहले स्टैंडर्ड के तौर पर किया जाता था. हालांकि, Google अब सभी नए डेवलपमेंट को बेहतर एनरोलमेंट फ़्लो का इस्तेमाल करने के लिए प्रोत्साहित करता है. इससे डिफ़ॉल्ट रूप से मैनेज किए जा रहे Google खाते बनाए जाते हैं.

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

खास जानकारी

डिवाइस रजिस्टर करने की बेहतर सुविधा से, डिवाइस सेटअप करने की प्रोसेस आसान हो जाती है. ऐसा कई नए कॉम्पोनेंट का इस्तेमाल करके किया जाता है. साथ ही, कस्टम डिवाइस नीति कंट्रोलर (डीपीसी) को लागू करने के तरीके में बदलाव करके भी ऐसा किया जाता है. इस नए तरीके के लिए, कस्टम DPC समाधानों को Android Management API (AMAPI) SDK और Android Device Policy के साथ इंटिग्रेट करना ज़रूरी है. इससे डिवाइस तैयार करने और उपयोगकर्ता के रजिस्ट्रेशन से जुड़े फ़ंक्शन पूरे किए जा सकते हैं.

AMAPI SDK, डिवाइस पर Android डिवाइस की नीति के साथ इंटरैक्ट करने के लिए ज़रूरी एपीआई उपलब्ध कराता है. सर्वर साइड पर, एंटरप्राइज़ मोबिलिटी मैनेजमेंट (ईएमएम) समाधान, Play EMM API का इस्तेमाल करके, डिवाइस के रजिस्ट्रेशन की प्रोसेस शुरू करने के लिए ज़रूरी रजिस्ट्रेशन टोकन जनरेट करेंगे.

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

एपीआई इंटिग्रेशन

शुरू करने से पहले, पुष्टि करें कि Play EMM API क्लाइंट और AMAPI SDK टूल के सबसे नए वर्शन का इस्तेमाल किया जा रहा हो.

रजिस्ट्रेशन की सुविधा लागू करने की गाइड

इस गाइड में, रजिस्टर करने का तरीका बताया गया है. इसमें एनवायरमेंट तैयार करना, रजिस्ट्रेशन के अलग-अलग तरीकों को मैनेज करना, और डिवाइस के लाइफ़साइकल को मैनेज करना शामिल है.

एनवायरमेंट तैयार करना

खाता सेट अप करने से पहले, डिवाइस का एनवायरमेंट तैयार करना ज़रूरी है. इसके लिए, Play Store को उसके नए वर्शन पर अपडेट किया जाता है. साथ ही, डिवाइस पर Android Device Policy (com.google.android.apps.work.clouddpc) को साइलेंट मोड में इंस्टॉल किया जाता है. Android Device Policy ऐप्लिकेशन इंस्टॉल करना ज़रूरी है, क्योंकि इसमें खाता सेट अप करने की प्रोसेस के अहम कॉम्पोनेंट होते हैं. ईएमएम को मैन्युअल तरीके से एनवायरमेंट तैयार करने की ज़रूरत नहीं होती. इसके बजाय, उन्हें EnvironmentClient का इस्तेमाल करना चाहिए. इसके बारे में यहां बताया गया है. साथ ही, उन्हें कोड के दिए गए उदाहरणों का पालन करना चाहिए.

नमूना कोड

डिवाइस पर काम से जुड़ा खाता जोड़ने के लिए, DPC को सबसे पहले यह पुष्टि करनी होगी कि डिवाइस का एनवायरमेंट तैयार है. इसके लिए, उसे AccountSetup API का इस्तेमाल करना होगा.

  • EnvironmentClient को इंस्टैंशिएट करने के लिए, EnvironmentClientFactory का इस्तेमाल करें. साथ ही, prepareEnvironment या prepareEnvironmentAsync को कॉल करें

    val notificationReceiverServiceName = ComponentName(context,
    NotificationReceiver::class.java)
    
    // An EMM should implement android.app.admin.DeviceAdminReceiver and use that
    // class to instantiate a ComponentName
    
    val admin = ComponentName(this, com.example.dpc.DeviceAdminReceiver::class.java)
    
    EnvironmentClientFactory.create(context)
        .prepareEnvironment(
            PrepareEnvironmentRequest.builder()
                .setRoles(
                    listOf(
                        Role.builder().setRoleType(
                            Role.RoleType.DEVICE_POLICY_CONTROLLER
                        ).build()
                    )
                )
        .setAdmin(admin)
                .build(),
              notificationReceiverServiceName,
            )
    
    [Proceed with AccountSetup]
    
    

इस प्रोसेस में कुछ सेकंड या मिनट लग सकते हैं, क्योंकि ऐप्लिकेशन इंस्टॉल किए जा सकते हैं या उन्हें अपडेट किया जा सकता है, ताकि यह पुष्टि की जा सके कि वे सही तरीके से काम कर रहे हैं. Google का सुझाव है कि इस प्रोसेस को बैकग्राउंड में जल्द से जल्द शुरू करें. साथ ही, जब उपयोगकर्ता इंतज़ार कर रहा हो, तब उसे सही यूज़र इंटरफ़ेस (यूआई) दिखाएं. यह प्रोसेस पूरी होने के बाद, डिवाइस पर DPC, AccountSetup API का इस्तेमाल कर सकता है.

रजिस्ट्रेशन फ़्लो

ईएमएम को सभी डिवाइसों के लिए, users.generateAuthenticationToken() और users.insert() का इस्तेमाल बंद करना होगा. इसके बजाय, ईएमएम को असली उपयोगकर्ता की पुष्टि करने के लिए, डिवाइस पर मौजूद एपीआई को कॉल करना होगा. नया एपीआई, DPC को userId और email दिखाएगा. अगर Google उपयोगकर्ता की पुष्टि नहीं कर पाता है, तो एक मैनेज किया गया Google Play खाता बनाया जाएगा और उसे डिवाइस में जोड़ दिया जाएगा. ऐसे में, Google उस खाते का userId वापस कर देगा.

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

हालांकि, Google का सुझाव है कि मांग के हिसाब से टोकन बनाएं और मैनेज किए जा रहे Google Play खातों के लिए मौजूदा एपीआई को नए एपीआई से बदलें, ताकि बदलाव को कम किया जा सके.

पिछले एपीआई के साथ डीपीसी का सामान्य इंटिग्रेशन
पहली इमेज.
उपयोगकर्ता के बिना डिवाइसों के लिए, नए एपीआई के साथ DPC इंटिग्रेशन का उदाहरण
दूसरी इमेज. उपयोगकर्ता के बिना डिवाइसों के लिए, नए एपीआई के साथ DPC इंटिग्रेशन का उदाहरण
उपयोगकर्ता के डिवाइसों के लिए, नए एपीआई के साथ DPC इंटिग्रेशन का उदाहरण
तीसरी इमेज. उपयोगकर्ता के डिवाइसों के लिए, नए एपीआई के साथ DPC इंटिग्रेशन का उदाहरण

कस्टम डीपीसी में बेहतर तरीके से रजिस्टर करने के लिए, यह तरीका अपनाएं:

  1. रजिस्ट्रेशन टोकन बनाना: ईएमएम, Play EMM API का इस्तेमाल करके रजिस्ट्रेशन टोकन बनाता है.
  2. एनवायरमेंट तैयार करना: कस्टम डीपीसी, एनवायरमेंट तैयार करने के फ़्लो का इस्तेमाल करता है. इससे यह पुष्टि की जाती है कि डिवाइस रजिस्ट्रेशन के लिए तैयार है.
  3. इनरोलमेंट शुरू करना: कस्टम डीपीसी, AMAPI SDK में startAccountSetup एपीआई को शुरू करता है. साथ ही, इनरोलमेंट टोकन पास करता है. ध्यान दें: इस एपीआई को कॉल करने से पहले, DPC को डिवाइस का मालिक या प्रोफ़ाइल का मालिक होना चाहिए.
  4. Google पर पुष्टि करने की गतिविधि शुरू करना: अगर ज़रूरी हो, तो कस्टम डीपीसी, AMAPI SDK में launchAuthenticationActivity एपीआई को कॉल करता है. साथ ही, AccountSetupAttempt को पास करता है. इससे Google की पुष्टि करने की गतिविधि शुरू होती है. पुष्टि हो जाने पर, उपयोगकर्ता को कस्टम डीपीसी पर वापस भेज दिया जाता है. उपयोगकर्ता इस प्रोसेस को स्किप भी कर सकता है. इस मामले में, डिवाइस में मैनेज किया गया Google Play खाता जोड़ा जाएगा. इस विकल्प को googleAuthenticationOptions का इस्तेमाल करके कॉन्फ़िगर किया जा सकता है.
  5. रजिस्ट्रेशन पूरा करना: AMAPI SDK, कस्टम DPC को रजिस्ट्रेशन के नतीजे के बारे में सूचना देता है.
  6. Google की सेवाएं चालू करें: जब किसी उपयोगकर्ता का डिवाइस, मैनेज किए जा रहे Google खाते के साथ एंटरप्राइज़ की नीतियों का पालन करता है, तो EMM को Devices.setState() को कॉल करना होगा. इस कार्रवाई से, डिवाइस पर मौजूद खाते के लिए Google की सेवाओं को ऐक्सेस करने की सुविधा चालू हो जाती है. इस कॉल के बिना, Play Store और Google की अन्य सेवाएं काम नहीं करेंगी.

खाता सेटअप - सैंपल कोड

  1. खाता सेट अप करने की कोशिश शुरू करने के लिए, कॉल करने वाला ऐप्लिकेशन AccountSetupClient का इस्तेमाल कर सकता है. साथ ही, startAccountSetup() या startAccountSetupFuture() में से किसी एक तरीके को कॉल कर सकता है. इसे लागू करने का उदाहरण देखने के लिए, यहां दिया गया कोड सैंपल देखें:

    // Create AccountSetupClient
    val client = AccountSetupClientFactory.create(
        this,
        activityResultRegistry
    )
    lifecycle.addObserver(client.lifecycleObserver)
    
    // Create adminComponent
    val notificationReceiver = ComponentName(this, AccountSetupNotificationReceiver::class.java)
    // Helper method to get enrollment token created with Play EMM API
    val enrollmentToken = getEnrollmentToken()
    val request =
              StartAccountSetupRequest.builder()
                  .setEnrollmentToken(enteredText)
                  .setNotificationReceiverServiceComponentName(notificationReceiver)
                  .setAdminComponentName(
                      ComponentName(this, com.example.dpc.DeviceAdminReceiver::class.java))
                  .build()
    try {
        val accountSetupAttempt = client.startAccountSetup(request)
        // handle attempt
    } catch (e: Exception) {
        // handle exception
    }
      ```
    
  2. AccountSetupListener इंटरफ़ेस लागू करें और यह बताएं कि मिले हुए स्टेटस अपडेट को कैसे हैंडल किया जाए.

  3. getAccountSetupListener() को बदलकर, दूसरे चरण में बनाए गए AccountSetupListener इंस्टेंस को बढ़ाएं NotificationReceiverService और उपलब्ध कराएं.

    // Handles account setup changes
    class AccountSetupNotificationReceiver :
          NotificationReceiverService(),
          AccountSetupListener {
    
        override fun getAccountSetupListener(): AccountSetupListener = this
    
        override fun onAccountSetupChanged(accountSetupAttempt:
      AccountSetupAttempt) {
    
            when (accountSetupAttempt.state.kind) {
                StateCase.ADDED_ACCOUNT -> {
                    val enterpriseAccount = state.addedAccount()
                    val userId = enterpriseAccount.userId
                    val deviceId = enterpriseAccount.deviceId
                    // Handle account added state.
    
                }
                StateCase.AUTHENTICATION_ACTIVITY_LAUNCH_REQUIRED -> {
                    val request = LaunchAuthenticationActivityRequest.builder()
                .setAccountSetupAttempt(accountSetupAttempt)
                .build();
                    // Send the attempt to the foreground activity to call:
                    accountSetupClient.launchAuthenticationActivity(request)
                }
                StateCase.ACCOUNT_SETUP_ERROR -> {
                    // Handle error state.
                    val failureReason = state.accountSetupError().failureReason
                }
                else -> {
                    // Handle unknown account setup attempt state.
                }
            }
        }
    }
    
      ```
    
  4. एक्सटेंड की गई NotificationReceiverService क्लास को अपने AndroidManifest.xml में जोड़ें और पुष्टि करें कि इसे एक्सपोर्ट किया गया है.

      <application>
        <service
            android:name = ".accountsetup.AccountSetupNotificationReceiver"
            android:exported = "true" />
      </application>
    

    अगर आपका ऐप्लिकेशन SDK 30 या उसके बाद के वर्शन को टारगेट करता है, तो AndroidManifest.xml में queries एलिमेंट का होना ज़रूरी है. इससे यह पता चलता है कि ऐप्लिकेशन, ADP के साथ इंटरैक्ट करेगा.

      <queries>
        <package android:name="com.google.android.apps.work.clouddpc" />
      </queries>
    

टेस्टिंग से जुड़े दिशा-निर्देश

इस सेक्शन में, लागू करने की प्रोसेस को टेस्ट करने के लिए दिशा-निर्देशों और सबसे सही तरीकों का एक सेट दिया गया है.

टेस्ट PrepareEnvironment

  1. डिवाइस की मौजूदा स्थिति का पता लगाना: ईएमएम,

    adb shell dumpsys package com.google.android.apps.work.clouddpc | grep versionName
    

    डिवाइस पर मौजूद Android Device Policy ऐप्लिकेशन का वर्शन पाने के लिए. अगर Android Device Policy ऐप्लिकेशन इंस्टॉल नहीं है, तो आउटपुट खाली होगा.

  2. PrepareEnvironment को इंटिग्रेट करें: कस्टम DPC, AMAPI SDK में prepareEnvironment एपीआई को लागू करता है और सही अनुरोध पास करता है.

  3. Await PrepareEnvironment result: कस्टम डीपीसी, prepareEnvironment के पूरा होने का इंतज़ार करता है.

  4. PrepareEnvironment की पुष्टि करें: पुष्टि हो जाने के बाद, EMM फिर से चलता है

    adb shell dumpsys package com.google.android.apps.work.clouddpc | grep versionName
    

    इस बार, Android Device Policy का वर्शन पहले चरण में इस्तेमाल किए गए वर्शन से ज़्यादा होना चाहिए.

Google खाते की पुष्टि करने की सुविधा की जांच करना

  1. टेस्ट एंटरप्राइज़ बनाना: ईएमएम, enterprises.generateSignupUrl की मदद से, टेस्ट ईएमएम से लिंक किया गया टेस्ट डोमेन Google एंटरप्राइज़ बनाता है.
  2. Google की मदद से पुष्टि करने की सुविधा चालू करें: EMM, Google Admin console में इन निर्देशों का पालन करके, टेस्ट एंटरप्राइज़ के लिए Google की मदद से पुष्टि करने की सुविधा चालू करता है.
  3. रजिस्ट्रेशन टोकन बनाना: EMM, Play EMM API का इस्तेमाल करके रजिस्ट्रेशन टोकन बनाता है. इसका टाइप userDevice होता है.
  4. इनरोलमेंट शुरू करना: कस्टम डीपीसी, AMAPI SDK में startAccountSetup एपीआई को शुरू करता है. साथ ही, इनरोलमेंट टोकन पास करता है.
  5. लॉन्च गतिविधि ज़रूरी है: AMAPI SDK, कस्टम डीपीसी को सूचना देता है कि उपयोगकर्ता की पुष्टि करने के लिए, किसी गतिविधि को लॉन्च करना ज़रूरी है.
  6. उपयोगकर्ता की पुष्टि करना: कस्टम डीपीसी, गतिविधि शुरू करने के लिए launchAuthenticationActivity को शुरू करता है. उपयोगकर्ता, मैनेज किए जा रहे Google खाते से पुष्टि करता है. यह खाता, पहले चरण में बनाए गए एंटरप्राइज़ का हिस्सा होता है.
  7. रजिस्ट्रेशन पूरा करना: AMAPI SDK, कस्टम DPC को रजिस्ट्रेशन के नतीजे के बारे में सूचना देता है.

Google खाते से पुष्टि करने की सुविधा को स्किप करने की जांच करना

हम पहले बताए गए सेटअप का इस्तेमाल करेंगे.

इस बार, सातवें चरण में उपयोगकर्ता अपने Google खाते से पुष्टि करने के बजाय, अभी नहीं पर क्लिक करता है. डिवाइस पर सेवा खाते के साथ रजिस्ट्रेशन पूरा हो जाता है. इसका मतलब है कि AuthenticationType गुमनाम है.

बिना उपयोगकर्ता वाले डिवाइसों की जांच करना

Google खाते से पुष्टि करने की सुविधा बंद होने पर, कस्टम डीपीसी के बेहतर एनरोलमेंट फ़्लो में यह तरीका अपनाया जाता है:

  1. टेस्ट एंटरप्राइज़ बनाएं: यह वही एंटरप्राइज़ हो सकता है जिसे आपने पहले बनाया था.
  2. रजिस्ट्रेशन टोकन बनाना: ईएमएम, Play EMM API का इस्तेमाल करके एक रजिस्ट्रेशन टोकन बनाता है. इसका टाइप userlessDevice होता है.
  3. इनरोलमेंट शुरू करना: कस्टम डीपीसी, AMAPI SDK में startAccountSetup एपीआई को शुरू करता है. साथ ही, इनरोलमेंट टोकन पास करता है.
  4. रजिस्ट्रेशन पूरा करना: AMAPI SDK, कस्टम DPC को रजिस्ट्रेशन के नतीजे के बारे में सूचना देता है.