دو نوع هویت کاربر اصلی برای ثبتنامهای شرکتی Android وجود دارد: حسابهای Google Play مدیریتشده و حسابهای مدیریتشده Google. حسابهای مدیریتشده Google Play دستگاه محور هستند، به این معنی که به هویت Google کاربر خاصی وابسته نیستند. در مقابل، حسابهای مدیریتشده Google به هویت Google شرکتی کاربر پیوند داده میشود، که تجربه کاربر را با وارد نگه داشتن آنها در دستگاههایشان بهبود میبخشد.
حسابهای مدیریتشده Google Play قبلاً استاندارد بودند. با این حال، Google اکنون همه توسعههای جدید را تشویق میکند تا از جریان ثبتنام بهبودیافته استفاده کنند، که پیشفرض ایجاد حسابهای مدیریتشده Google است.
در حالی که راهنمایی برای اجرای قدیمیتر در انتهای این سند برای زمینه ارائه شده است، همه توسعههای جدید باید از جریان ثبت نام جدید که در اینجا شرح داده شده است پیروی کنند.
نمای کلی
جریان ثبت نام بهبودیافته دستگاه، راهاندازی دستگاه را با استفاده از چندین مؤلفه جدید و تغییر نحوه پیادهسازی کنترلکنندههای خط مشی دستگاه (DPC) ساده میکند. این رویکرد جدید به راهحلهای سفارشی DPC برای ادغام با Android Management API (AMAPI) SDK و Android Device Policy برای انجام عملیات آمادهسازی دستگاه و ثبتنام کاربر نیاز دارد.
AMAPI SDK API های لازم را برای تعامل با سیاست دستگاه Android در خود دستگاه فراهم می کند. در سمت سرور، راهحلهای Enterprise Mobility Management (EMM) از Play EMM API برای تولید نشانههای ثبتنام مورد نیاز برای شروع فرآیند ثبتنام دستگاه استفاده میکنند.
برنامه Android Device Policy اکنون نقش اصلی را در مدیریت عملیات سمت دستگاه بر عهده می گیرد. AMAPI SDK برای مدیریت نصب و به روز رسانی های لازم در دستگاه استفاده می شود. Android Device Policy جریان احراز هویت کاربر را نیز در اختیار می گیرد و مستقیماً احراز هویت کاربر را مدیریت می کند و هویت کاربر را در اختیار EMM قرار می دهد. اگر گوگل به هر دلیلی نتواند کاربر را احراز هویت کند، یک حساب Google Play مدیریت شده جدید ایجاد می شود و به عنوان بازگشتی به دستگاه اضافه می شود.
یکپارچه سازی API
قبل از شروع، بررسی کنید که از آخرین نسخه کلاینت Play EMM API و AMAPI SDK استفاده میکنید.
راهنمای اجرای ثبت نام
این راهنما مراحل لازم برای اجرای ثبت نام را ارائه می دهد. این شامل آماده سازی محیط، مدیریت روش های مختلف ثبت نام و مدیریت چرخه عمر دستگاه می شود.
محیط را آماده کنید
قبل از شروع تنظیمات حساب، لازم است محیط دستگاه را آماده کنید. این آمادهسازی مستلزم بهروزرسانی فروشگاه Play به آخرین نسخه آن و نصب بیصدا خطمشی دستگاه Android ( com.google.android.apps.work.clouddpc
) بر روی دستگاه است. نصب خط مشی دستگاه Android ضروری است زیرا اجزای حیاتی فرآیند تنظیم حساب را در خود جای داده است. EMM ها نیازی به آماده سازی محیط دستی ندارند. در عوض، آنها باید از EnvironmentClient
استفاده کنند، همانطور که در نمونه های کد ارائه شده مستند شده و به آن پایبند باشند.
کد نمونه
قبل از اینکه بتوانید از AccountSetup API برای اضافه کردن حساب کاری روی دستگاه استفاده کنید، DPC باید ابتدا بررسی کند که محیط دستگاه آماده است.
از
EnvironmentClientFactory
برای نمونه سازیEnvironmentClient
و فراخوانی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]
این عملیات ممکن است چند ثانیه یا چند دقیقه طول بکشد، زیرا ممکن است برنامهها برای تأیید یک محیط کاری مناسب نصب یا بهروزرسانی شوند. گوگل توصیه میکند این فرآیند را هر چه زودتر در پسزمینه شروع کنید و در زمانی که کاربر منتظر است، رابط کاربری مناسب را نشان دهید. پس از اتمام عملیات، دستگاه برای DPC برای استفاده از AccountSetup API آماده است.
جریان ثبت نام
EMM ها باید استفاده از users.generateAuthenticationToken()
و users.insert()
را برای همه دستگاه ها متوقف کنند. درعوض، EMM ها باید API روی دستگاه را برای احراز هویت کاربر نهایی فراخوانی کنند. API جدید userId
و email
به DPC برمی گرداند. اگر Google نتواند کاربر را احراز هویت کند، یک حساب Google Play مدیریت شده ایجاد و به دستگاه اضافه می شود. در این صورت گوگل userId
آن حساب را برمی گرداند.
گوگل اکنون استفاده از توکن های ثبت نام را معرفی می کند که باید به API احراز هویت منتقل شوند. EMM ها زمان و نحوه ایجاد رمز را تعیین می کنند و می تواند بخشی از بار ثبت نام موجود باشد (مثلاً یک کد QR یا پیکربندی Zero-touch).
با این حال، گوگل توصیه میکند که توکن در صورت تقاضا ایجاد کنید و API موجود برای حسابهای مدیریتشده Google Play را با API جدید جایگزین کنید تا تغییرات را به حداقل برسانید.



جریان ثبت نام DPC سفارشی بهبود یافته شامل مراحل زیر است:
- ایجاد رمز ثبت نام: EMM یک رمز ثبت نام با استفاده از Play EMM API ایجاد می کند.
- Prepare Environment: DPC سفارشی از جریان Prepare Environment برای تأیید اینکه دستگاه برای ثبت نام آماده است استفاده می کند.
- شروع ثبت نام: DPC سفارشی API
startAccountSetup
را در AMAPI SDK فراخوانی می کند و رمز ثبت نام را ارسال می کند. توجه: قبل از تماس با این API، DPC باید یا مالک دستگاه یا مالک نمایه باشد. - راهاندازی فعالیت احراز هویت Google: در صورت لزوم، DPC سفارشی API
launchAuthenticationActivity
را در AMAPI SDK فراخوانی میکند وAccountSetupAttempt
ارسال میکند. این یک فعالیت احراز هویت Google را شروع میکند و پس از احراز هویت موفق، کاربر را به DPC سفارشی برمیگرداند. کاربر همچنین می تواند از این فرآیند صرف نظر کند. در این صورت یک حساب Google Play مدیریت شده به دستگاه اضافه می شود. این گزینه را می توان با استفاده ازgoogleAuthenticationOptions
پیکربندی کرد. - نهایی کردن ثبت نام: AMAPI SDK نتیجه ثبت نام را به DPC سفارشی اطلاع می دهد.
- فعال کردن سرویسهای Google: هنگامی که دستگاه کاربر دارای حساب مدیریتشده Google با خطمشیهای سازمانی مطابقت دارد، EMM باید
Devices.setState()
فراخوانی کند. این عمل دسترسی به خدمات Google را برای حساب موجود در دستگاه امکان پذیر می کند. بدون این تماس، فروشگاه Play و سایر سرویسهای Google کار نمیکنند.
راه اندازی حساب - کد نمونه
برای شروع تلاش برای راهاندازی حساب، برنامه تماسگیرنده میتواند از
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 } ```
رابط
AccountSetupListener
را پیاده سازی کنید و یک پیاده سازی برای نحوه مدیریت به روز رسانی های وضعیت دریافتی ارائه دهید.NotificationReceiverService
گسترش دهید و نمونهAccountSetupListener
ایجاد شده در مرحله 2 را با لغوgetAccountSetupListener()
ارائه دهید.// 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. } } } } ```
کلاس توسعه یافته
NotificationReceiverService
را بهAndroidManifest.xml
خود اضافه کنید و تأیید کنید که صادر شده است.<application> <service android:name = ".accountsetup.AccountSetupNotificationReceiver" android:exported = "true" /> </application>
اگر برنامه شما SDK 30 یا بالاتر را هدف قرار میدهد، یک عنصر query در
AndroidManifest.xml
مورد نیاز است تا مشخص کند که با ADP تعامل داشته باشد.<queries> <package android:name="com.google.android.apps.work.clouddpc" /> </queries>
راهنمای تست
این بخش مجموعه ای از دستورالعمل ها و بهترین روش ها را برای آزمایش پیاده سازی شما ارائه می دهد.
Test PrepareEnvironment
دریافت وضعیت فعلی دستگاه: EMM اجرا می شود
adb shell dumpsys package com.google.android.apps.work.clouddpc | grep versionName
برای دریافت نسخه خط مشی دستگاه Android موجود در دستگاه. اگر خط مشی دستگاه Android نصب نشده باشد، خروجی خالی انتظار می رود.
یکپارچه سازی PrepareEnvironment: DPC سفارشی API
prepareEnvironment
در AMAPI SDK فراخوانی می کند و درخواست صحیح را ارسال می کند.Await PrepareEnvironment نتیجه: DPC سفارشی منتظر می ماند تا
prepareEnvironment
کامل شود.تأیید موفقیت PrepareEnvironment: پس از تکمیل، EMM دوباره اجرا می شود
adb shell dumpsys package com.google.android.apps.work.clouddpc | grep versionName
این بار نسخه Android Device Policy باید بالاتر از مرحله 1 باشد.
احراز هویت حساب Google را آزمایش کنید
- ایجاد شرکت آزمایشی: EMM یک دامنه آزمایشی شرکت Google ایجاد میکند که به یک EMM آزمایشی مرتبط است، با
enterprises.generateSignupUrl
. - فعال کردن احراز هویت Google: EMM احراز هویت Google را برای شرکت آزمایشی با پیروی از این دستورالعملها در کنسول Google Admin فعال میکند.
- ایجاد رمز ثبت نام: EMM با استفاده از Play EMM API با نوع userDevice یک رمز ثبت نام ایجاد می کند.
- شروع ثبت نام: DPC سفارشی API
startAccountSetup
را در AMAPI SDK فراخوانی می کند و رمز ثبت نام را ارسال می کند. - فعالیت راهاندازی مورد نیاز: AMAPI SDK به DPC سفارشی اطلاع میدهد که یک فعالیت باید برای احراز هویت کاربر راهاندازی شود.
- احراز هویت کاربر: DPC سفارشی برای شروع فعالیت،
launchAuthenticationActivity
فراخوانی می کند. کاربر با یک حساب Google مدیریت شده (بخشی از شرکت ایجاد شده در مرحله 1) احراز هویت می کند. - نهایی کردن ثبت نام: AMAPI SDK نتیجه ثبت نام را به DPC سفارشی اطلاع می دهد.
رد شدن از احراز هویت Google را آزمایش کنید
ما از تنظیمات قبلی استفاده خواهیم کرد.
این بار، در مرحله 7، کاربر به جای احراز هویت با حساب Google خود، Skip را فشار می دهد. ثبت نام با یک حساب سرویس در دستگاه (یعنی AuthenticationType
ناشناس است) با موفقیت کامل شد.
دستگاه های بدون کاربر را تست کنید
هنگامی که احراز هویت Google غیرفعال است، جریان ثبت نام سفارشی DPC بهبود یافته از مراحل زیر استفاده می کند:
- ایجاد یک شرکت آزمایشی: این می تواند همان شرکتی باشد که قبلا ایجاد شده بود.
- ایجاد رمز ثبت نام: EMM با استفاده از Play EMM API با نوع userlessDevice یک رمز ثبت نام ایجاد می کند.
- شروع ثبت نام: DPC سفارشی API
startAccountSetup
را در AMAPI SDK فراخوانی می کند و رمز ثبت نام را ارسال می کند. - نهایی کردن ثبت نام: AMAPI SDK نتیجه ثبت نام را به DPC سفارشی اطلاع می دهد.