یک کنترلر خط مشی دستگاه بسازید

این راهنما نحوه توسعه یک کنترل‌کننده خط‌مشی دستگاه (DPC) را برای دستگاه‌های در استقرار سازمانی Android توضیح می‌دهد. یک برنامه DPC، که قبلاً به عنوان کنترل‌کننده سیاست کاری شناخته می‌شد، خط‌مشی‌های دستگاه محلی و برنامه‌های کاربردی سیستم را در دستگاه‌ها کنترل می‌کند.

درباره DPC ها

در استقرار سازمانی Android، یک شرکت کنترل بر جنبه‌های مختلف دستگاه‌های کاربر، مانند جداسازی اطلاعات مربوط به کار از داده‌های شخصی کاربران، از پیش پیکربندی برنامه‌های تأیید شده برای محیط، یا غیرفعال کردن قابلیت‌های دستگاه (مثلاً دوربین) را حفظ می‌کند. .

به عنوان یک EMM، یک برنامه DPC ایجاد می کنید که می تواند توسط مشتریان شما در ارتباط با کنسول و سرور EMM شما استفاده شود. مشتری شما DPC را در دستگاه های کاربری که مدیریت می کند، مستقر می کند. DPC به عنوان پل بین کنسول EMM (و سرور) و دستگاه عمل می کند. یک سرپرست از کنسول EMM برای انجام طیف وسیعی از کارها از جمله پیکربندی تنظیمات دستگاه و برنامه‌ها استفاده می‌کند.

DPC نمایه کاری را روی دستگاهی که روی آن نصب شده است ایجاد و مدیریت می کند. نمایه کاری اطلاعات مربوط به کار را رمزگذاری می کند و آن را از برنامه ها و داده های شخصی کاربران جدا نگه می دارد. قبل از ایجاد نمایه کاری، DPC همچنین می‌تواند یک حساب Google Play مدیریت شده برای استفاده در دستگاه ارائه دهد.

این راهنما به شما نشان می دهد که چگونه یک DPC ایجاد کنید که می تواند پروفایل های کاری ایجاد و مدیریت کند.

کتابخانه پشتیبانی DPC برای EMM

کتابخانه پشتیبانی DPC برای EMM ها شامل کلاس های کاربردی و کمکی است که تهیه و مدیریت دستگاه های Android را در یک محیط سازمانی تسهیل می کند. این کتابخانه به شما امکان می دهد از ویژگی های مهم در برنامه های DPC خود استفاده کنید:

  • پشتیبانی از تهیه حساب‌های Google Play مدیریت‌شده : تهیه حساب‌های مدیریت‌شده Google Play از برنامه DPC مستلزم آن است که برنامه‌های Google Play و خدمات Google Play حداقل الزامات نسخه را داشته باشند. با این حال، به روز رسانی این برنامه ها می تواند پیچیده باشد. کتابخانه پشتیبانی DPC از به‌روزرسانی این برنامه‌ها مراقبت می‌کند، و همچنین سازگاری با به‌روزرسانی‌های آینده فرآیند تأمین حساب‌های مدیریت‌شده Google Play را تضمین می‌کند. برای جزئیات بیشتر به پشتیبانی ارائه حساب های مدیریت شده Google Play مراجعه کنید.
  • پشتیبانی از پیکربندی‌های مدیریت‌شده : استفاده از Play EMM API برای مدیریت پیکربندی‌های مدیریت‌شده برای برنامه‌های تأییدشده، ساده‌ترین راه برای پیاده‌سازی پیکربندی‌های مدیریت‌شده در DPC شما است. کتابخانه پشتیبانی DPC به شما این امکان را می‌دهد که وظیفه اعمال پیکربندی‌های مدیریت‌شده (که قبلاً محدودیت‌های برنامه بود) را که توسط سرپرست با استفاده از کنسول EMM تنظیم شده است، به Google Play واگذار کنید. استفاده از Play EMM API برای مدیریت پیکربندی های مدیریت شده به پیکربندی برنامه اجازه می دهد تا در حین نصب به صورت اتمی اعمال شود. برای اطلاعات بیشتر درباره نحوه فعال کردن این قابلیت در DPC خود ، به اعمال تنظیمات مدیریت شده در برنامه های کاری مراجعه کنید.

برای دانلود کتابخانه مراحل زیر را دنبال کنید. وظایف مشروح در این راهنما استفاده از کتابخانه پشتیبانی DPC را فرض می کند.

کتابخانه پشتیبانی DPC را دانلود کنید

برای استفاده از کتابخانه پشتیبانی DPC، کتابخانه را از انجمن Android Enterprise EMM Provider دانلود کنید. شما باید کتابخانه را به فایل build.gradle خود اضافه کنید و از وابستگی های دیگر در هنگام ساخت برنامه DPC خود مراقبت کنید. برای مثال، کتابخانه به 11.4.0 Google Play Services auth library client نیاز دارد.

  1. کتابخانه را به فایل build.gradle اضافه کنید:
    implementation(name:'dpcsupport-yyyymmdd', ext:'aar')
    implementation(name = "dpcsupport-yyyymmdd", ext = "aar")
  2. کتابخانه 11.4.0 Google Play Services auth client را به فایل build.gradle اضافه کنید:
    implementation 'com.google.android.gms:play-services-auth:11.4.0'
    implementation("com.google.android.gms:play-services-auth:11.4.0")

کتابخانه برای اجرا به مجوزهای خاصی نیاز دارد، بنابراین هنگام آپلود در Google Play باید اینها را به مانیفست برنامه DPC خود اضافه کنید:

  <uses-permission android:name=
     
"android.permission.DOWNLOAD_WITHOUT_NOTIFICATION"/>
 
<uses-permission android:name=
     
"android.permission.GET_ACCOUNTS"/>
 
<uses-permission android:name=
     
"android.permission.MANAGE_ACCOUNTS"/>
 
<uses-permission android:name=
     
"android.permission.WRITE_SYNC_SETTINGS"/>
 
<uses-permission android:name=
     
"com.google.android.providers.gsf.permission.READ_GSERVICES"/>

علاوه بر این مراحل اولیه راه‌اندازی و استقرار، بسته به قابلیتی که می‌خواهید پیاده‌سازی کنید، باید عملکرد کتابخانه خاصی را نیز در کد DPC خود مقداردهی کنید. جزئیات در بخش های مربوطه در زیر آمده است.

یک DPC ایجاد کنید

DPC خود را بر اساس مدل موجود مورد استفاده برای برنامه های مدیریت دستگاه بسازید. به طور خاص، برنامه شما باید DeviceAdminReceiver (کلاسی از بسته android.app.admin ) را همانطور که در Device Administration توضیح داده شده است، طبقه بندی کند.

یک نمایه کاری ایجاد کنید

برای نمونه ای که نحوه ایجاد یک نمایه کاری پایه را نشان می دهد، به BasicManagedProfile در GitHub مراجعه کنید.

برای ایجاد نمایه کاری در دستگاهی که قبلاً نمایه شخصی دارد، ابتدا با بررسی وجود ویژگی سیستم FEATURE_MANAGED_USERS ، دریابید که آیا دستگاه می‌تواند از نمایه کاری پشتیبانی کند یا خیر:

if (!packageManager.hasSystemFeature(PackageManager.FEATURE_MANAGED_USERS)) {
   
// This device does not support work profiles!
}
PackageManager pm = getPackageManager();
if (!pm.hasSystemFeature(PackageManager.FEATURE_MANAGED_USERS)) {
   
// This device does not support work profiles!
}

اگر دستگاه از نمایه‌های کاری پشتیبانی می‌کند، با ارسال یک هدف با عملکرد ACTION_PROVISION_MANAGED_PROFILE ، یک نمایه کاری ایجاد کنید. (در برخی از اسناد، نمایه مدیریت شده یک اصطلاح کلی است که به معنای همان نمایه کاری در زمینه Android در سازمان است.) نام بسته سرپرست دستگاه را به عنوان یک اضافه اضافه کنید:

val provisioningActivity = getActivity()

// You'll need the package name for the DPC app.
val myDPCPackageName = "com.example.myDPCApp"

// Set up the provisioning intent
val adminComponent = ComponentName(provisioningActivity.applicationContext, MyAdminReceiver::class.java)
provisioningIntent
.putExtra(EXTRA_PROVISIONING_DEVICE_ADMIN_COMPONENT_NAME, adminComponent.flattenToString())
if (provisioningIntent.resolveActivity(provisioningActivity.packageManager) == null) {
   
// No handler for intent! Can't provision this device.
   
// Show an error message and cancel.
} else {
   
// REQUEST_PROVISION_MANAGED_PROFILE is defined
   
// to be a suitable request code
    startActivityForResult
(provisioningIntent,
            REQUEST
_PROVISION_MANAGED_PROFILE)
    provisioningActivity
.finish()
}
Activity provisioningActivity = getActivity();
// You'll need the package name for the DPC app.
String myDPCPackageName = "com.example.myDPCApp";
// Set up the provisioning intent
Intent provisioningIntent =
       
new Intent("android.app.action.PROVISION_MANAGED_PROFILE");
ComponentName adminComponent = new ComponentName(provisioningActivity.getApplicationContext(), MyAdminReceiver.class);
provisioningIntent
.putExtra(EXTRA_PROVISIONING_DEVICE_ADMIN_COMPONENT_NAME, adminComponent.flattenToString());
if (provisioningIntent.resolveActivity(provisioningActivity.getPackageManager())
         
== null) {
   
// No handler for intent! Can't provision this device.
   
// Show an error message and cancel.
} else {
   
// REQUEST_PROVISION_MANAGED_PROFILE is defined
   
// to be a suitable request code
    startActivityForResult
(provisioningIntent,
            REQUEST_PROVISION_MANAGED_PROFILE
);
    provisioningActivity
.finish();
}

سیستم با انجام موارد زیر به این هدف پاسخ می دهد:

  • تأیید می کند که دستگاه رمزگذاری شده است. اگر اینطور نیست، سیستم از کاربر می خواهد قبل از ادامه، دستگاه را رمزگذاری کند.
  • نمایه کاری ایجاد می کند.
  • برنامه های غیر ضروری را از نمایه کاری حذف می کند.
  • برنامه DPC را در نمایه کاری کپی می کند و خود DPC را به عنوان مالک نمایه تنظیم می کند.

برای مشاهده موفقیت آمیز بودن تجهیز، onActivityResult() را لغو کنید:

override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent) {
   
// Check if this is the result of the provisioning activity
   
if (requestCode == REQUEST_PROVISION_MANAGED_PROFILE) {
       
// If provisioning was successful, the result code is
       
// Activity.RESULT_OK
       
if (resultCode == Activity.RESULT_OK) {
           
// Work profile created and provisioned.
       
} else {
           
// Provisioning failed.
       
}
       
return
   
} else {
       
// This is the result of some other activity. Call the superclass.
       
super.onActivityResult(requestCode, resultCode, data)
   
}
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
   
// Check if this is the result of the provisioning activity
   
if (requestCode == REQUEST_PROVISION_MANAGED_PROFILE) {
       
// If provisioning was successful, the result code is
       
// Activity.RESULT_OK
       
if (resultCode == Activity.RESULT_OK) {
           
// Work profile created and provisioned.
       
} else {
           
// Provisioning failed.
       
}
       
return;
   
} else {
       
// This is the result of some other activity. Call the superclass.
       
super.onActivityResult(requestCode, resultCode, data);
   
}
}

فعال کردن نمایه کاری را تمام کنید

هنگامی که نمایه فراهم شد، سیستم متد DeviceAdminReceiver.onProfileProvisioningComplete() برنامه DPC را فراخوانی می کند. این روش برگشت به تماس را لغو کنید تا فعال کردن نمایه کاری تمام شود.

یک اجرای معمولی DeviceAdminReceiver.onProfileProvisioningComplete() callback کارهای زیر را انجام می دهد:

پروفایل کاری را فعال کنید

پس از تکمیل این وظایف، برای فعال کردن نمایه کاری، متد setProfileEnabled() مدیر خط مشی دستگاه را فراخوانی کنید:

// Get the device policy manager
val myDevicePolicyMgr = getSystemService(Context.DEVICE_POLICY_SERVICE) as DevicePolicyManager
val componentName = myDeviceAdminReceiver.getComponentName(this)
// Set the name for the newly created work profile.
myDevicePolicyMgr
.setProfileName(componentName, "My New Work Profile")
// ...and enable the profile
myDevicePolicyMgr
.setProfileEnabled(componentName)
// Get the device policy manager
DevicePolicyManager myDevicePolicyMgr =
       
(DevicePolicyManager) getSystemService(Context.DEVICE_POLICY_SERVICE);
ComponentName componentName = myDeviceAdminReceiver.getComponentName(this);
// Set the name for the newly created work profile.
myDevicePolicyMgr
.setProfileName(componentName, "My New Work Profile");
// ...and enable the profile
myDevicePolicyMgr
.setProfileEnabled(componentName);

خط‌مشی‌های دستگاه را تنظیم کنید

برنامه DPC خط‌مشی‌های دستگاه را که توسط سرپرست تنظیم شده است برای برآورده کردن الزامات و محدودیت‌های سازمان اعمال می‌کند. برای مثال، سیاست امنیتی ممکن است مستلزم قفل شدن دستگاه‌ها پس از تعداد معینی از تلاش‌های ناموفق رمز عبور باشد. DPC از کنسول EMM برای خط‌مشی‌های فعلی سؤال می‌کند، سپس خط‌مشی‌ها را با استفاده از Device Administration API اعمال می‌کند.

برای اطلاعات در مورد نحوه اعمال خط‌مشی‌های دستگاه، به خط‌مشی‌ها مراجعه کنید.

پیکربندی های مدیریت شده را در برنامه های کاری اعمال کنید

پیکربندی‌های مدیریت‌شده به شما این امکان را می‌دهند که به مشتریان خود این امکان را بدهید که برنامه‌هایی را که برای استقرار تأیید کرده‌اند، از قبل پیکربندی کنند و در صورت نیاز به تغییر پیکربندی، آن برنامه‌ها را به راحتی به‌روزرسانی کنند. پیکربندی یک برنامه قبل از استقرار تضمین می کند که امنیت سازمان و سایر سیاست ها پس از نصب برنامه در دستگاه مورد نظر رعایت می شود.

قابلیت‌های برنامه توسط توسعه‌دهنده برنامه در یک طرح XML (شما پیکربندی‌های مدیریت‌شده) تعریف می‌شود که برنامه را هنگام آپلود در Google Play همراهی می‌کند (توسعه‌دهندگان برنامه برای جزئیات، به تنظیم تنظیمات مدیریت‌شده مراجعه کنید).

شما این طرح را از برنامه بازیابی می‌کنید تا برای مدیران مشتریانتان در کنسول EMM خود نمایش داده شود، یک رابط کاربری ارائه می‌دهید که در آن گزینه‌های مختلف تعریف شده در صفحه نمایش طرحواره تعریف شده است، و مدیران را قادر می‌سازید تا تنظیمات برنامه را از قبل پیکربندی کنند. پیکربندی مدیریت شده به دست آمده توسط سرپرست معمولاً در سرور EMM ذخیره می‌شود که سپس از Play EMM API برای تنظیم Managedconfigurationsfordevice یا Managedconfigurationsforuser استفاده می‌کند. برای جزئیات بیشتر به تنظیمات مدیریت شده از طریق Play مراجعه کنید.

پیکربندی‌های مدیریت‌شده را می‌توان با استفاده از Play EMM API (رویکرد توصیه‌شده) یا مستقیماً از DPC (در قسمت اعمال پیکربندی‌های مدیریت‌شده مستقیماً از DPC ) روی برنامه اعمال کرد. استفاده از Play EMM API چندین مزیت دارد، از جمله اجرای آسان زیرا می توانید از کتابخانه پشتیبانی DPC برای ساده کردن وظایف DPC استفاده کنید. علاوه بر این، Play EMM API:

  • هنگامی که یک برنامه جدید نصب می شود، پیکربندی را به صورت اتمی تنظیم می کند، بنابراین از آماده بودن برنامه در اولین باری که کاربر برنامه را راه اندازی می کند، اطمینان حاصل می کند.
  • به شما امکان می‌دهد پیکربندی‌ها را بر اساس هر کاربر مدیریت کنید، بنابراین می‌توانید از نظارت بر تأمین بر اساس هر دستگاه اجتناب کنید.

تنظیمات مدیریت شده را با استفاده از Play EMM API اعمال کنید

برای استفاده از Play EMM API برای پیکربندی‌های مدیریت‌شده، DPC باید به Google Play اجازه دهد پیکربندی‌ها را تنظیم کند. کتابخانه پشتیبانی DPC با پروکسی کردن پیکربندی ارسال شده توسط Google Play، این کار را برای شما انجام می دهد.

برای استفاده از Play EMM API، کتابخانه پشتیبانی DPC را دانلود کنید و سپس پشتیبانی از تنظیمات مدیریت شده را در DPC خود فعال کنید.

پشتیبانی از تنظیمات مدیریت شده را در DPC خود فعال کنید

این کلاس را در DPC خود وارد کنید:

com.google.android.apps.work.dpcsupport.ManagedConfigurationsSupport

کتابخانه تنظیمات مدیریت شده را راه اندازی کنید. در این مثال، "admin" نام مؤلفه DeviceAdminReceiver است.

var managedConfigurationsSupport = ManagedConfigurationsSupport(context, admin)
ManagedConfigurationsSupport managedConfigurationsSupport =
   
new ManagedConfigurationsSupport(context, admin);

فعال کردن تنظیمات مدیریت شده:

managedConfigurationsSupport.enableManagedConfigurations()
managedConfigurationsSupport.enableManagedConfigurations();

با راه‌اندازی این کتابخانه در DPC، می‌توانید از Google Play EMM API در کنسول و سرور EMM خود برای اعمال پیکربندی‌های مدیریت‌شده در برنامه‌های تأییدشده، به جای کدگذاری مستقیم این وظایف در DPC استفاده کنید. برای جزئیات بیشتر به تنظیمات مدیریت شده از طریق Play مراجعه کنید.

تنظیمات مدیریت شده را مستقیماً از DPC اعمال کنید

برای تغییر تنظیمات پیکربندی برنامه به طور مستقیم از DPC، روش DevicePolicyManager.setApplicationRestrictions() را فراخوانی کنید و پارامترها را برای DeviceAdminReceiver برنامه DPC، نام بسته برنامه مورد نظر، و بسته شامل پیکربندی مدیریت شده برنامه که توسط سرپرست تنظیم شده است، ارسال کنید. برای جزئیات ، نحوه تعامل کنسول DPC و EMM را ببینید و تنظیمات مدیریت شده را تنظیم کنید . با این حال، توجه داشته باشید که این رویکرد جایگزین برای اعمال پیکربندی های مدیریت شده در استقرار حساب های مدیریت شده Google Play توصیه نمی شود.

پشتیبانی از تهیه حساب Google Play مدیریت شده

کتابخانه پشتیبانی DPC شامل پشتیبانی از تهیه حساب‌های مدیریت‌شده Google Play است. برای استفاده از این پشتیبانی، ابتدا باید کتابخانه را مقداردهی اولیه کنید و سپس می توانید از محیط کاری اطمینان حاصل کنید و یک حساب مدیریت شده Google Play اضافه کنید .

پشتیبانی از حساب های Google Play مدیریت شده را در DPC خود راه اندازی کنید

این کلاس را در DPC خود وارد کنید:

com.google.android.apps.work.dpcsupport.AndroidForWorkAccountSupport

کتابخانه سازگاری تهیه را راه اندازی کنید. در این مثال، «admin» ComponentName DeviceAdminReceiver است.

var androidForWorkAccountSupport = AndroidForWorkAccountSupport(context, admin)
AndroidForWorkAccountSupport androidForWorkAccountSupport =
   
new AndroidForWorkAccountSupport(context, admin);

از محیط کاری حساب‌های مدیریت‌شده Google Play اطمینان حاصل کنید

پس از اینکه DPC دستگاهی را در حالت مالک نمایه ( ACTION_PROVISION_MANAGED_PROFILE ) یا حالت مالک دستگاه ( ACTION_PROVISION_MANAGED_DEVICE ) ارائه کرد، مطمئن شوید که دستگاه می‌تواند از حساب‌های Google Play مدیریت شده با تماس گرفتن پشتیبانی کند:

androidForWorkAccountSupport.ensureWorkingEnvironment(callback)
androidForWorkAccountSupport.ensureWorkingEnvironment(callback);

callback موفقیت یا شکست این فرآیند را گزارش می کند. وقتی پاسخ تماس با موفقیت برگشت، می‌توان یک حساب Google Play مدیریت شده اضافه کرد. اگر پاسخ تماس خطایی را گزارش کرد، از کاربر بخواهید مطمئن شود که دستگاه به شبکه متصل است (به عنوان مثال، اگر دانلود انجام نشد). در موارد دیگر، شکست را به گوگل گزارش دهید.

object : WorkingEnvironmentCallback() {
   
override fun onSuccess() {
       
// Can now provision the managed Google Play Account
   
}
   
override fun onFailure(error: Error) {
       
// Notify user, handle error (check network connection)
   
}
}
new WorkingEnvironmentCallback() {
   
@Override
   
public void onSuccess() {
       
// Can now provision the managed Google Play Account
   
}

   
@Override
   
public void onFailure(Error error) {
       
// Notify user, handle error (check network connection)
   
}
}

یک حساب Google Play مدیریت شده اضافه کنید

AccountManager چارچوب Android می‌تواند یک حساب Google Play مدیریت شده به دستگاه اضافه کند. برای ساده کردن تعامل با AccountManager ، از تابع کمکی (در مثال زیر نشان داده شده است) از کتابخانه پشتیبانی DPC استفاده کنید. این تابع رمز بازگردانده شده توسط سرور Google Play را کنترل می کند و تهیه حساب مدیریت شده Google Play را تسهیل می کند. وقتی حساب مدیریت شده Google Play در حالت معتبر باشد، این تابع برمی گردد:

androidForWorkAccountSupport.addAndroidForWorkAccount(token, accountAddedCallback)
androidForWorkAccountSupport.addAndroidForWorkAccount(token, accountAddedCallback);
  • token — رمز احراز هویت کاربر که توسط تماس Google Play EMM API Users.generateAuthenticationToken() ایجاد می‌شود.
  • accountAddedCallback —حساب مدیریت شده Google Play را که با موفقیت به دستگاه اضافه شده است برمی گرداند. این فراخوانی باید شامل متدهای onAccountReady() و onFailure() باشد.
val workAccountAddedCallback = object : WorkAccountAddedCallback() {
   
override fun onAccountReady(account: Account, deviceHint: String) {
       
// Device account was successfully added to the device
       
// and is ready to be used.
   
}

   
override fun onFailure(error: Error) {
       
// The account was not successfully added. Check that the token
       
// provided was valid (it expires after a certain period of time).
   
}
}
WorkAccountAddedCallback workAccountAddedCallback =
   
new WorkAccountAddedCallback() {
       
@Override
       
public void onAccountReady(Account account, String deviceHint) {
           
// Device account was successfully added to the device
           
// and is ready to be used.
       
}

       
@Override
       
public void onFailure(Error error) {
           
// The account was not successfully added. Check that the token
           
// provided was valid (it expires after a certain period of time).
       
}
};
  • برای اطلاعات بیشتر در مورد Device Administration API، Device Administration را ببینید.
  • برای آشنایی با روش‌های تهیه Android Enterprise، به دستگاه‌های Provision در راهنمای توسعه‌دهنده Android Enterprise مراجعه کنید.
  • برای نمونه GitHub که نحوه ایجاد نمایه کاری پایه را نشان می دهد، به BasicManagedProfile مراجعه کنید.
  • برای نمونه‌ای از GitHub که نحوه تنظیم تنظیمات روی برنامه‌های دیگر را به عنوان مالک نمایه نشان می‌دهد، به AppRestrictionEnforcer مراجعه کنید.
،

این راهنما نحوه توسعه یک کنترل‌کننده خط‌مشی دستگاه (DPC) را برای دستگاه‌های در استقرار سازمانی Android توضیح می‌دهد. یک برنامه DPC، که قبلاً به عنوان کنترل‌کننده سیاست کاری شناخته می‌شد، خط‌مشی‌های دستگاه محلی و برنامه‌های کاربردی سیستم را در دستگاه‌ها کنترل می‌کند.

درباره DPC ها

در استقرار سازمانی Android، یک شرکت کنترل بر جنبه‌های مختلف دستگاه‌های کاربر، مانند جداسازی اطلاعات مربوط به کار از داده‌های شخصی کاربران، از پیش پیکربندی برنامه‌های تأیید شده برای محیط، یا غیرفعال کردن قابلیت‌های دستگاه (مثلاً دوربین) را حفظ می‌کند. .

به عنوان یک EMM، یک برنامه DPC ایجاد می کنید که می تواند توسط مشتریان شما در ارتباط با کنسول و سرور EMM شما استفاده شود. مشتری شما DPC را در دستگاه های کاربری که مدیریت می کند، مستقر می کند. DPC به عنوان پل بین کنسول EMM (و سرور) و دستگاه عمل می کند. یک سرپرست از کنسول EMM برای انجام طیف وسیعی از کارها از جمله پیکربندی تنظیمات دستگاه و برنامه‌ها استفاده می‌کند.

DPC نمایه کاری را روی دستگاهی که روی آن نصب شده است ایجاد و مدیریت می کند. نمایه کاری اطلاعات مربوط به کار را رمزگذاری می کند و آن را از برنامه ها و داده های شخصی کاربران جدا نگه می دارد. قبل از ایجاد نمایه کاری، DPC همچنین می‌تواند یک حساب Google Play مدیریت شده برای استفاده در دستگاه ارائه دهد.

این راهنما به شما نشان می دهد که چگونه یک DPC ایجاد کنید که می تواند پروفایل های کاری ایجاد و مدیریت کند.

کتابخانه پشتیبانی DPC برای EMM

کتابخانه پشتیبانی DPC برای EMM ها شامل کلاس های کاربردی و کمکی است که تهیه و مدیریت دستگاه های Android را در یک محیط سازمانی تسهیل می کند. این کتابخانه به شما امکان می دهد از ویژگی های مهم در برنامه های DPC خود استفاده کنید:

  • پشتیبانی از تهیه حساب‌های Google Play مدیریت‌شده : تهیه حساب‌های مدیریت‌شده Google Play از برنامه DPC مستلزم آن است که برنامه‌های Google Play و خدمات Google Play حداقل الزامات نسخه را داشته باشند. با این حال، به روز رسانی این برنامه ها می تواند پیچیده باشد. کتابخانه پشتیبانی DPC از به‌روزرسانی این برنامه‌ها مراقبت می‌کند، و همچنین سازگاری با به‌روزرسانی‌های آینده فرآیند تأمین حساب‌های مدیریت‌شده Google Play را تضمین می‌کند. برای جزئیات بیشتر به پشتیبانی ارائه حساب های مدیریت شده Google Play مراجعه کنید.
  • پشتیبانی از پیکربندی‌های مدیریت‌شده : استفاده از Play EMM API برای مدیریت پیکربندی‌های مدیریت‌شده برای برنامه‌های تأییدشده، ساده‌ترین راه برای پیاده‌سازی پیکربندی‌های مدیریت‌شده در DPC شما است. کتابخانه پشتیبانی DPC به شما این امکان را می‌دهد که وظیفه اعمال پیکربندی‌های مدیریت‌شده (که قبلاً محدودیت‌های برنامه بود) را که توسط سرپرست با استفاده از کنسول EMM تنظیم شده است، به Google Play واگذار کنید. استفاده از Play EMM API برای مدیریت پیکربندی های مدیریت شده به پیکربندی برنامه اجازه می دهد تا در حین نصب به صورت اتمی اعمال شود. برای اطلاعات بیشتر درباره نحوه فعال کردن این قابلیت در DPC خود ، به اعمال تنظیمات مدیریت شده در برنامه های کاری مراجعه کنید.

برای دانلود کتابخانه مراحل زیر را دنبال کنید. وظایف مشروح در این راهنما استفاده از کتابخانه پشتیبانی DPC را فرض می کند.

کتابخانه پشتیبانی DPC را دانلود کنید

برای استفاده از کتابخانه پشتیبانی DPC، کتابخانه را از انجمن Android Enterprise EMM Provider دانلود کنید. شما باید کتابخانه را به فایل build.gradle خود اضافه کنید و از وابستگی های دیگر در هنگام ساخت برنامه DPC خود مراقبت کنید. برای مثال، کتابخانه به 11.4.0 Google Play Services auth library client نیاز دارد.

  1. کتابخانه را به فایل build.gradle اضافه کنید:
    implementation(name:'dpcsupport-yyyymmdd', ext:'aar')
    implementation(name = "dpcsupport-yyyymmdd", ext = "aar")
  2. کتابخانه 11.4.0 Google Play Services auth client را به فایل build.gradle اضافه کنید:
    implementation 'com.google.android.gms:play-services-auth:11.4.0'
    implementation("com.google.android.gms:play-services-auth:11.4.0")

کتابخانه برای اجرا به مجوزهای خاصی نیاز دارد، بنابراین هنگام آپلود در Google Play باید اینها را به مانیفست برنامه DPC خود اضافه کنید:

  <uses-permission android:name=
     
"android.permission.DOWNLOAD_WITHOUT_NOTIFICATION"/>
 
<uses-permission android:name=
     
"android.permission.GET_ACCOUNTS"/>
 
<uses-permission android:name=
     
"android.permission.MANAGE_ACCOUNTS"/>
 
<uses-permission android:name=
     
"android.permission.WRITE_SYNC_SETTINGS"/>
 
<uses-permission android:name=
     
"com.google.android.providers.gsf.permission.READ_GSERVICES"/>

علاوه بر این مراحل اولیه راه‌اندازی و استقرار، بسته به قابلیتی که می‌خواهید پیاده‌سازی کنید، باید عملکرد کتابخانه خاصی را نیز در کد DPC خود مقداردهی کنید. جزئیات در بخش های مربوطه در زیر آمده است.

یک DPC ایجاد کنید

DPC خود را بر اساس مدل موجود مورد استفاده برای برنامه های مدیریت دستگاه بسازید. به طور خاص، برنامه شما باید DeviceAdminReceiver (کلاسی از بسته android.app.admin ) را همانطور که در Device Administration توضیح داده شده است، طبقه بندی کند.

یک نمایه کاری ایجاد کنید

برای نمونه ای که نحوه ایجاد یک نمایه کاری پایه را نشان می دهد، به BasicManagedProfile در GitHub مراجعه کنید.

برای ایجاد نمایه کاری در دستگاهی که قبلاً نمایه شخصی دارد، ابتدا با بررسی وجود ویژگی سیستم FEATURE_MANAGED_USERS ، دریابید که آیا دستگاه می‌تواند از نمایه کاری پشتیبانی کند یا خیر:

if (!packageManager.hasSystemFeature(PackageManager.FEATURE_MANAGED_USERS)) {
   
// This device does not support work profiles!
}
PackageManager pm = getPackageManager();
if (!pm.hasSystemFeature(PackageManager.FEATURE_MANAGED_USERS)) {
   
// This device does not support work profiles!
}

اگر دستگاه از نمایه‌های کاری پشتیبانی می‌کند، با ارسال یک هدف با عملکرد ACTION_PROVISION_MANAGED_PROFILE ، یک نمایه کاری ایجاد کنید. (در برخی از اسناد، نمایه مدیریت شده یک اصطلاح کلی است که به معنای همان نمایه کاری در زمینه Android در سازمان است.) نام بسته سرپرست دستگاه را به عنوان یک اضافه اضافه کنید:

val provisioningActivity = getActivity()

// You'll need the package name for the DPC app.
val myDPCPackageName = "com.example.myDPCApp"

// Set up the provisioning intent
val adminComponent = ComponentName(provisioningActivity.applicationContext, MyAdminReceiver::class.java)
provisioningIntent
.putExtra(EXTRA_PROVISIONING_DEVICE_ADMIN_COMPONENT_NAME, adminComponent.flattenToString())
if (provisioningIntent.resolveActivity(provisioningActivity.packageManager) == null) {
   
// No handler for intent! Can't provision this device.
   
// Show an error message and cancel.
} else {
   
// REQUEST_PROVISION_MANAGED_PROFILE is defined
   
// to be a suitable request code
    startActivityForResult
(provisioningIntent,
            REQUEST
_PROVISION_MANAGED_PROFILE)
    provisioningActivity
.finish()
}
Activity provisioningActivity = getActivity();
// You'll need the package name for the DPC app.
String myDPCPackageName = "com.example.myDPCApp";
// Set up the provisioning intent
Intent provisioningIntent =
       
new Intent("android.app.action.PROVISION_MANAGED_PROFILE");
ComponentName adminComponent = new ComponentName(provisioningActivity.getApplicationContext(), MyAdminReceiver.class);
provisioningIntent
.putExtra(EXTRA_PROVISIONING_DEVICE_ADMIN_COMPONENT_NAME, adminComponent.flattenToString());
if (provisioningIntent.resolveActivity(provisioningActivity.getPackageManager())
         
== null) {
   
// No handler for intent! Can't provision this device.
   
// Show an error message and cancel.
} else {
   
// REQUEST_PROVISION_MANAGED_PROFILE is defined
   
// to be a suitable request code
    startActivityForResult
(provisioningIntent,
            REQUEST_PROVISION_MANAGED_PROFILE
);
    provisioningActivity
.finish();
}

سیستم با انجام موارد زیر به این هدف پاسخ می دهد:

  • تأیید می کند که دستگاه رمزگذاری شده است. اگر اینطور نیست، سیستم از کاربر می خواهد قبل از ادامه، دستگاه را رمزگذاری کند.
  • نمایه کاری ایجاد می کند.
  • برنامه های غیر ضروری را از نمایه کاری حذف می کند.
  • برنامه DPC را در نمایه کاری کپی می کند و خود DPC را به عنوان مالک نمایه تنظیم می کند.

برای مشاهده موفقیت آمیز بودن تجهیز، onActivityResult() را لغو کنید:

override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent) {
   
// Check if this is the result of the provisioning activity
   
if (requestCode == REQUEST_PROVISION_MANAGED_PROFILE) {
       
// If provisioning was successful, the result code is
       
// Activity.RESULT_OK
       
if (resultCode == Activity.RESULT_OK) {
           
// Work profile created and provisioned.
       
} else {
           
// Provisioning failed.
       
}
       
return
   
} else {
       
// This is the result of some other activity. Call the superclass.
       
super.onActivityResult(requestCode, resultCode, data)
   
}
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
   
// Check if this is the result of the provisioning activity
   
if (requestCode == REQUEST_PROVISION_MANAGED_PROFILE) {
       
// If provisioning was successful, the result code is
       
// Activity.RESULT_OK
       
if (resultCode == Activity.RESULT_OK) {
           
// Work profile created and provisioned.
       
} else {
           
// Provisioning failed.
       
}
       
return;
   
} else {
       
// This is the result of some other activity. Call the superclass.
       
super.onActivityResult(requestCode, resultCode, data);
   
}
}

فعال کردن نمایه کاری را تمام کنید

هنگامی که نمایه فراهم شد، سیستم متد DeviceAdminReceiver.onProfileProvisioningComplete() برنامه DPC را فراخوانی می کند. این روش برگشت به تماس را لغو کنید تا فعال کردن نمایه کاری تمام شود.

یک اجرای معمولی DeviceAdminReceiver.onProfileProvisioningComplete() callback کارهای زیر را انجام می دهد:

پروفایل کاری را فعال کنید

پس از تکمیل این وظایف، برای فعال کردن نمایه کاری، متد setProfileEnabled() مدیر خط مشی دستگاه را فراخوانی کنید:

// Get the device policy manager
val myDevicePolicyMgr = getSystemService(Context.DEVICE_POLICY_SERVICE) as DevicePolicyManager
val componentName = myDeviceAdminReceiver.getComponentName(this)
// Set the name for the newly created work profile.
myDevicePolicyMgr
.setProfileName(componentName, "My New Work Profile")
// ...and enable the profile
myDevicePolicyMgr
.setProfileEnabled(componentName)
// Get the device policy manager
DevicePolicyManager myDevicePolicyMgr =
       
(DevicePolicyManager) getSystemService(Context.DEVICE_POLICY_SERVICE);
ComponentName componentName = myDeviceAdminReceiver.getComponentName(this);
// Set the name for the newly created work profile.
myDevicePolicyMgr
.setProfileName(componentName, "My New Work Profile");
// ...and enable the profile
myDevicePolicyMgr
.setProfileEnabled(componentName);

خط‌مشی‌های دستگاه را تنظیم کنید

برنامه DPC خط‌مشی‌های دستگاه را که توسط سرپرست تنظیم شده است برای برآورده کردن الزامات و محدودیت‌های سازمان اعمال می‌کند. برای مثال، سیاست امنیتی ممکن است مستلزم قفل شدن دستگاه‌ها پس از تعداد معینی از تلاش‌های ناموفق رمز عبور باشد. DPC از کنسول EMM برای خط‌مشی‌های فعلی سؤال می‌کند، سپس خط‌مشی‌ها را با استفاده از Device Administration API اعمال می‌کند.

برای اطلاعات در مورد نحوه اعمال خط‌مشی‌های دستگاه، به خط‌مشی‌ها مراجعه کنید.

پیکربندی های مدیریت شده را در برنامه های کاری اعمال کنید

پیکربندی‌های مدیریت‌شده به شما این امکان را می‌دهند که به مشتریان خود این امکان را بدهید که برنامه‌هایی را که برای استقرار تأیید کرده‌اند، از قبل پیکربندی کنند و در صورت نیاز به تغییر پیکربندی، آن برنامه‌ها را به راحتی به‌روزرسانی کنند. پیکربندی یک برنامه قبل از استقرار تضمین می کند که امنیت سازمان و سایر سیاست ها پس از نصب برنامه در دستگاه مورد نظر رعایت می شود.

قابلیت‌های برنامه توسط توسعه‌دهنده برنامه در یک طرح XML (شما پیکربندی‌های مدیریت‌شده) تعریف می‌شود که برنامه را هنگام آپلود در Google Play همراهی می‌کند (توسعه‌دهندگان برنامه برای جزئیات، به تنظیم تنظیمات مدیریت‌شده مراجعه کنید).

شما این طرح را از برنامه بازیابی می‌کنید تا برای مدیران مشتریانتان در کنسول EMM خود نمایش داده شود، یک رابط کاربری ارائه می‌دهید که در آن گزینه‌های مختلف تعریف شده در صفحه نمایش طرحواره تعریف شده است، و مدیران را قادر می‌سازید تا تنظیمات برنامه را از قبل پیکربندی کنند. پیکربندی مدیریت شده به دست آمده توسط سرپرست معمولاً در سرور EMM ذخیره می‌شود که سپس از Play EMM API برای تنظیم Managedconfigurationsfordevice یا Managedconfigurationsforuser استفاده می‌کند. برای جزئیات بیشتر به تنظیمات مدیریت شده از طریق Play مراجعه کنید.

پیکربندی‌های مدیریت‌شده را می‌توان با استفاده از Play EMM API (رویکرد توصیه‌شده) یا مستقیماً از DPC (در قسمت اعمال پیکربندی‌های مدیریت‌شده مستقیماً از DPC ) روی برنامه اعمال کرد. استفاده از Play EMM API چندین مزیت دارد، از جمله اجرای آسان زیرا می توانید از کتابخانه پشتیبانی DPC برای ساده کردن وظایف DPC استفاده کنید. علاوه بر این، Play EMM API:

  • هنگامی که یک برنامه جدید نصب می شود، پیکربندی را به صورت اتمی تنظیم می کند، بنابراین از آماده بودن برنامه در اولین باری که کاربر برنامه را راه اندازی می کند، اطمینان حاصل می کند.
  • به شما امکان می‌دهد پیکربندی‌ها را بر اساس هر کاربر مدیریت کنید، بنابراین می‌توانید از نظارت بر تأمین بر اساس هر دستگاه اجتناب کنید.

تنظیمات مدیریت شده را با استفاده از Play EMM API اعمال کنید

برای استفاده از Play EMM API برای پیکربندی‌های مدیریت‌شده، DPC باید به Google Play اجازه دهد پیکربندی‌ها را تنظیم کند. کتابخانه پشتیبانی DPC با پروکسی کردن پیکربندی ارسال شده توسط Google Play، این کار را برای شما انجام می دهد.

برای استفاده از Play EMM API، کتابخانه پشتیبانی DPC را دانلود کنید و سپس پشتیبانی از تنظیمات مدیریت شده را در DPC خود فعال کنید.

پشتیبانی از تنظیمات مدیریت شده را در DPC خود فعال کنید

این کلاس را در DPC خود وارد کنید:

com.google.android.apps.work.dpcsupport.ManagedConfigurationsSupport

کتابخانه تنظیمات مدیریت شده را راه اندازی کنید. در این مثال، "admin" نام مؤلفه DeviceAdminReceiver است.

var managedConfigurationsSupport = ManagedConfigurationsSupport(context, admin)
ManagedConfigurationsSupport managedConfigurationsSupport =
   
new ManagedConfigurationsSupport(context, admin);

فعال کردن تنظیمات مدیریت شده:

managedConfigurationsSupport.enableManagedConfigurations()
managedConfigurationsSupport.enableManagedConfigurations();

با راه‌اندازی این کتابخانه در DPC، می‌توانید از Google Play EMM API در کنسول و سرور EMM خود برای اعمال پیکربندی‌های مدیریت‌شده در برنامه‌های تأییدشده، به جای کدگذاری مستقیم این وظایف در DPC استفاده کنید. برای جزئیات بیشتر به تنظیمات مدیریت شده از طریق Play مراجعه کنید.

تنظیمات مدیریت شده را مستقیماً از DPC اعمال کنید

برای تغییر تنظیمات پیکربندی برنامه به طور مستقیم از DPC، روش DevicePolicyManager.setApplicationRestrictions() را فراخوانی کنید و پارامترها را برای DeviceAdminReceiver برنامه DPC، نام بسته برنامه مورد نظر، و بسته شامل پیکربندی مدیریت شده برنامه که توسط سرپرست تنظیم شده است، ارسال کنید. برای جزئیات ، نحوه تعامل کنسول DPC و EMM را ببینید و تنظیمات مدیریت شده را تنظیم کنید . با این حال، توجه داشته باشید که این رویکرد جایگزین برای اعمال پیکربندی های مدیریت شده در استقرار حساب های مدیریت شده Google Play توصیه نمی شود.

پشتیبانی از تهیه حساب Google Play مدیریت شده

کتابخانه پشتیبانی DPC شامل پشتیبانی از تهیه حساب‌های مدیریت‌شده Google Play است. برای استفاده از این پشتیبانی، ابتدا باید کتابخانه را مقداردهی اولیه کنید و سپس می توانید از محیط کاری اطمینان حاصل کنید و یک حساب مدیریت شده Google Play اضافه کنید .

پشتیبانی از حساب های Google Play مدیریت شده را در DPC خود راه اندازی کنید

این کلاس را در DPC خود وارد کنید:

com.google.android.apps.work.dpcsupport.AndroidForWorkAccountSupport

کتابخانه سازگاری تهیه را راه اندازی کنید. در این مثال، «admin» ComponentName DeviceAdminReceiver است.

var androidForWorkAccountSupport = AndroidForWorkAccountSupport(context, admin)
AndroidForWorkAccountSupport androidForWorkAccountSupport =
   
new AndroidForWorkAccountSupport(context, admin);

از محیط کاری حساب‌های مدیریت‌شده Google Play اطمینان حاصل کنید

پس از اینکه DPC دستگاهی را در حالت مالک نمایه ( ACTION_PROVISION_MANAGED_PROFILE ) یا حالت مالک دستگاه ( ACTION_PROVISION_MANAGED_DEVICE ) ارائه کرد، مطمئن شوید که دستگاه می‌تواند از حساب‌های Google Play مدیریت شده با تماس گرفتن پشتیبانی کند:

androidForWorkAccountSupport.ensureWorkingEnvironment(callback)
androidForWorkAccountSupport.ensureWorkingEnvironment(callback);

callback موفقیت یا شکست این فرآیند را گزارش می کند. وقتی پاسخ تماس با موفقیت برگشت، می‌توان یک حساب Google Play مدیریت شده اضافه کرد. اگر پاسخ تماس خطایی را گزارش کرد، از کاربر بخواهید مطمئن شود که دستگاه به شبکه متصل است (به عنوان مثال، اگر دانلود انجام نشد). در موارد دیگر، شکست را به گوگل گزارش دهید.

object : WorkingEnvironmentCallback() {
   
override fun onSuccess() {
       
// Can now provision the managed Google Play Account
   
}
   
override fun onFailure(error: Error) {
       
// Notify user, handle error (check network connection)
   
}
}
new WorkingEnvironmentCallback() {
   
@Override
   
public void onSuccess() {
       
// Can now provision the managed Google Play Account
   
}

   
@Override
   
public void onFailure(Error error) {
       
// Notify user, handle error (check network connection)
   
}
}

یک حساب Google Play مدیریت شده اضافه کنید

AccountManager چارچوب Android می‌تواند یک حساب Google Play مدیریت شده به دستگاه اضافه کند. برای ساده کردن تعامل با AccountManager ، از تابع کمکی (در مثال زیر نشان داده شده است) از کتابخانه پشتیبانی DPC استفاده کنید. این تابع رمز بازگردانده شده توسط سرور Google Play را کنترل می کند و تهیه حساب مدیریت شده Google Play را تسهیل می کند. وقتی حساب مدیریت شده Google Play در حالت معتبر باشد، این تابع برمی گردد:

androidForWorkAccountSupport.addAndroidForWorkAccount(token, accountAddedCallback)
androidForWorkAccountSupport.addAndroidForWorkAccount(token, accountAddedCallback);
  • token — رمز احراز هویت کاربر که توسط تماس Google Play EMM API Users.generateAuthenticationToken() ایجاد می‌شود.
  • accountAddedCallback —حساب مدیریت شده Google Play را که با موفقیت به دستگاه اضافه شده است برمی گرداند. این فراخوانی باید شامل متدهای onAccountReady() و onFailure() باشد.
val workAccountAddedCallback = object : WorkAccountAddedCallback() {
   
override fun onAccountReady(account: Account, deviceHint: String) {
       
// Device account was successfully added to the device
       
// and is ready to be used.
   
}

   
override fun onFailure(error: Error) {
       
// The account was not successfully added. Check that the token
       
// provided was valid (it expires after a certain period of time).
   
}
}
WorkAccountAddedCallback workAccountAddedCallback =
   
new WorkAccountAddedCallback() {
       
@Override
       
public void onAccountReady(Account account, String deviceHint) {
           
// Device account was successfully added to the device
           
// and is ready to be used.
       
}

       
@Override
       
public void onFailure(Error error) {
           
// The account was not successfully added. Check that the token
           
// provided was valid (it expires after a certain period of time).
       
}
};
  • برای اطلاعات بیشتر در مورد Device Administration API، Device Administration را ببینید.
  • برای آشنایی با روش‌های تهیه Android Enterprise، به دستگاه‌های Provision در راهنمای توسعه‌دهنده Android Enterprise مراجعه کنید.
  • برای نمونه GitHub که نحوه ایجاد نمایه کاری پایه را نشان می دهد، به BasicManagedProfile مراجعه کنید.
  • برای نمونه‌ای از GitHub که نحوه تنظیم تنظیمات روی برنامه‌های دیگر را به عنوان مالک نمایه نشان می‌دهد، به AppRestrictionEnforcer مراجعه کنید.
،

این راهنما نحوه توسعه یک کنترل‌کننده خط‌مشی دستگاه (DPC) را برای دستگاه‌های در استقرار سازمانی Android توضیح می‌دهد. یک برنامه DPC، که قبلاً به عنوان کنترل‌کننده سیاست کاری شناخته می‌شد، خط‌مشی‌های دستگاه محلی و برنامه‌های کاربردی سیستم را در دستگاه‌ها کنترل می‌کند.

درباره DPC ها

در استقرار سازمانی Android، یک شرکت کنترل بر جنبه‌های مختلف دستگاه‌های کاربر، مانند جداسازی اطلاعات مربوط به کار از داده‌های شخصی کاربران، از پیش پیکربندی برنامه‌های تأیید شده برای محیط، یا غیرفعال کردن قابلیت‌های دستگاه (مثلاً دوربین) را حفظ می‌کند. .

به عنوان یک EMM، یک برنامه DPC ایجاد می کنید که می تواند توسط مشتریان شما در ارتباط با کنسول و سرور EMM شما استفاده شود. مشتری شما DPC را در دستگاه های کاربری که مدیریت می کند، مستقر می کند. DPC به عنوان پل بین کنسول EMM (و سرور) و دستگاه عمل می کند. یک سرپرست از کنسول EMM برای انجام طیف وسیعی از کارها از جمله پیکربندی تنظیمات دستگاه و برنامه‌ها استفاده می‌کند.

DPC نمایه کاری را روی دستگاهی که روی آن نصب شده است ایجاد و مدیریت می کند. نمایه کاری اطلاعات مربوط به کار را رمزگذاری می کند و آن را از برنامه ها و داده های شخصی کاربران جدا نگه می دارد. قبل از ایجاد نمایه کاری، DPC همچنین می‌تواند یک حساب Google Play مدیریت شده برای استفاده در دستگاه ارائه دهد.

این راهنما به شما نشان می دهد که چگونه یک DPC ایجاد کنید که می تواند پروفایل های کاری ایجاد و مدیریت کند.

کتابخانه پشتیبانی DPC برای EMM

کتابخانه پشتیبانی DPC برای EMM ها شامل کلاس های کاربردی و کمکی است که تهیه و مدیریت دستگاه های Android را در یک محیط سازمانی تسهیل می کند. این کتابخانه به شما امکان می دهد از ویژگی های مهم در برنامه های DPC خود استفاده کنید:

  • پشتیبانی از تهیه حساب‌های Google Play مدیریت‌شده : تهیه حساب‌های مدیریت‌شده Google Play از برنامه DPC مستلزم آن است که برنامه‌های Google Play و خدمات Google Play حداقل الزامات نسخه را داشته باشند. با این حال، به روز رسانی این برنامه ها می تواند پیچیده باشد. کتابخانه پشتیبانی DPC از به‌روزرسانی این برنامه‌ها مراقبت می‌کند، و همچنین سازگاری با به‌روزرسانی‌های آینده فرآیند تأمین حساب‌های مدیریت‌شده Google Play را تضمین می‌کند. برای جزئیات بیشتر به پشتیبانی ارائه حساب های مدیریت شده Google Play مراجعه کنید.
  • پشتیبانی از پیکربندی‌های مدیریت‌شده : استفاده از Play EMM API برای مدیریت پیکربندی‌های مدیریت‌شده برای برنامه‌های تأییدشده، ساده‌ترین راه برای پیاده‌سازی پیکربندی‌های مدیریت‌شده در DPC شما است. کتابخانه پشتیبانی DPC به شما این امکان را می‌دهد که وظیفه اعمال پیکربندی‌های مدیریت‌شده (که قبلاً محدودیت‌های برنامه بود) را که توسط سرپرست با استفاده از کنسول EMM تنظیم شده است، به Google Play واگذار کنید. استفاده از Play EMM API برای مدیریت پیکربندی های مدیریت شده به پیکربندی برنامه اجازه می دهد تا در حین نصب به صورت اتمی اعمال شود. برای اطلاعات بیشتر درباره نحوه فعال کردن این قابلیت در DPC خود ، به اعمال تنظیمات مدیریت شده در برنامه های کاری مراجعه کنید.

برای دانلود کتابخانه مراحل زیر را دنبال کنید. وظایف مشروح در این راهنما استفاده از کتابخانه پشتیبانی DPC را فرض می کند.

کتابخانه پشتیبانی DPC را دانلود کنید

برای استفاده از کتابخانه پشتیبانی DPC، کتابخانه را از انجمن Android Enterprise EMM Provider دانلود کنید. شما باید کتابخانه را به فایل build.gradle خود اضافه کنید و از وابستگی های دیگر در هنگام ساخت برنامه DPC خود مراقبت کنید. برای مثال، کتابخانه به 11.4.0 Google Play Services auth library client نیاز دارد.

  1. کتابخانه را به فایل build.gradle اضافه کنید:
    implementation(name:'dpcsupport-yyyymmdd', ext:'aar')
    implementation(name = "dpcsupport-yyyymmdd", ext = "aar")
  2. کتابخانه 11.4.0 Google Play Services auth client را به فایل build.gradle اضافه کنید:
    implementation 'com.google.android.gms:play-services-auth:11.4.0'
    implementation("com.google.android.gms:play-services-auth:11.4.0")

کتابخانه برای اجرا به مجوزهای خاصی نیاز دارد، بنابراین هنگام آپلود در Google Play باید اینها را به مانیفست برنامه DPC خود اضافه کنید:

  <uses-permission android:name=
     
"android.permission.DOWNLOAD_WITHOUT_NOTIFICATION"/>
 
<uses-permission android:name=
     
"android.permission.GET_ACCOUNTS"/>
 
<uses-permission android:name=
     
"android.permission.MANAGE_ACCOUNTS"/>
 
<uses-permission android:name=
     
"android.permission.WRITE_SYNC_SETTINGS"/>
 
<uses-permission android:name=
     
"com.google.android.providers.gsf.permission.READ_GSERVICES"/>

علاوه بر این مراحل اولیه راه‌اندازی و استقرار، بسته به قابلیتی که می‌خواهید پیاده‌سازی کنید، باید عملکرد کتابخانه خاصی را نیز در کد DPC خود مقداردهی کنید. جزئیات در بخش های مربوطه در زیر آمده است.

یک DPC ایجاد کنید

DPC خود را بر اساس مدل موجود مورد استفاده برای برنامه های مدیریت دستگاه بسازید. به طور خاص، برنامه شما باید DeviceAdminReceiver (کلاسی از بسته android.app.admin ) را همانطور که در Device Administration توضیح داده شده است، طبقه بندی کند.

یک نمایه کاری ایجاد کنید

برای نمونه ای که نحوه ایجاد یک نمایه کاری پایه را نشان می دهد، به BasicManagedProfile در GitHub مراجعه کنید.

برای ایجاد نمایه کاری در دستگاهی که قبلاً نمایه شخصی دارد، ابتدا با بررسی وجود ویژگی سیستم FEATURE_MANAGED_USERS ، دریابید که آیا دستگاه می‌تواند از نمایه کاری پشتیبانی کند یا خیر:

if (!packageManager.hasSystemFeature(PackageManager.FEATURE_MANAGED_USERS)) {
   
// This device does not support work profiles!
}
PackageManager pm = getPackageManager();
if (!pm.hasSystemFeature(PackageManager.FEATURE_MANAGED_USERS)) {
   
// This device does not support work profiles!
}

اگر دستگاه از نمایه‌های کاری پشتیبانی می‌کند، با ارسال یک هدف با عملکرد ACTION_PROVISION_MANAGED_PROFILE ، یک نمایه کاری ایجاد کنید. (در برخی از اسناد، نمایه مدیریت شده یک اصطلاح کلی است که به معنای همان نمایه کاری در زمینه Android در سازمان است.) نام بسته سرپرست دستگاه را به عنوان یک اضافه اضافه کنید:

val provisioningActivity = getActivity()

// You'll need the package name for the DPC app.
val myDPCPackageName = "com.example.myDPCApp"

// Set up the provisioning intent
val adminComponent = ComponentName(provisioningActivity.applicationContext, MyAdminReceiver::class.java)
provisioningIntent
.putExtra(EXTRA_PROVISIONING_DEVICE_ADMIN_COMPONENT_NAME, adminComponent.flattenToString())
if (provisioningIntent.resolveActivity(provisioningActivity.packageManager) == null) {
   
// No handler for intent! Can't provision this device.
   
// Show an error message and cancel.
} else {
   
// REQUEST_PROVISION_MANAGED_PROFILE is defined
   
// to be a suitable request code
    startActivityForResult
(provisioningIntent,
            REQUEST
_PROVISION_MANAGED_PROFILE)
    provisioningActivity
.finish()
}
Activity provisioningActivity = getActivity();
// You'll need the package name for the DPC app.
String myDPCPackageName = "com.example.myDPCApp";
// Set up the provisioning intent
Intent provisioningIntent =
       
new Intent("android.app.action.PROVISION_MANAGED_PROFILE");
ComponentName adminComponent = new ComponentName(provisioningActivity.getApplicationContext(), MyAdminReceiver.class);
provisioningIntent
.putExtra(EXTRA_PROVISIONING_DEVICE_ADMIN_COMPONENT_NAME, adminComponent.flattenToString());
if (provisioningIntent.resolveActivity(provisioningActivity.getPackageManager())
         
== null) {
   
// No handler for intent! Can't provision this device.
   
// Show an error message and cancel.
} else {
   
// REQUEST_PROVISION_MANAGED_PROFILE is defined
   
// to be a suitable request code
    startActivityForResult
(provisioningIntent,
            REQUEST_PROVISION_MANAGED_PROFILE
);
    provisioningActivity
.finish();
}

سیستم با انجام موارد زیر به این هدف پاسخ می دهد:

  • تأیید می کند که دستگاه رمزگذاری شده است. اگر اینطور نیست، سیستم از کاربر می خواهد قبل از ادامه، دستگاه را رمزگذاری کند.
  • نمایه کاری ایجاد می کند.
  • برنامه های غیر ضروری را از نمایه کاری حذف می کند.
  • برنامه DPC را در نمایه کاری کپی می کند و خود DPC را به عنوان مالک نمایه تنظیم می کند.

برای مشاهده موفقیت آمیز بودن تجهیز، onActivityResult() را لغو کنید:

override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent) {
   
// Check if this is the result of the provisioning activity
   
if (requestCode == REQUEST_PROVISION_MANAGED_PROFILE) {
       
// If provisioning was successful, the result code is
       
// Activity.RESULT_OK
       
if (resultCode == Activity.RESULT_OK) {
           
// Work profile created and provisioned.
       
} else {
           
// Provisioning failed.
       
}
       
return
   
} else {
       
// This is the result of some other activity. Call the superclass.
       
super.onActivityResult(requestCode, resultCode, data)
   
}
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
   
// Check if this is the result of the provisioning activity
   
if (requestCode == REQUEST_PROVISION_MANAGED_PROFILE) {
       
// If provisioning was successful, the result code is
       
// Activity.RESULT_OK
       
if (resultCode == Activity.RESULT_OK) {
           
// Work profile created and provisioned.
       
} else {
           
// Provisioning failed.
       
}
       
return;
   
} else {
       
// This is the result of some other activity. Call the superclass.
       
super.onActivityResult(requestCode, resultCode, data);
   
}
}

فعال کردن نمایه کاری را تمام کنید

هنگامی که نمایه فراهم شد، سیستم متد DeviceAdminReceiver.onProfileProvisioningComplete() برنامه DPC را فراخوانی می کند. این روش برگشت به تماس را لغو کنید تا فعال کردن نمایه کاری تمام شود.

یک اجرای معمولی DeviceAdminReceiver.onProfileProvisioningComplete() callback کارهای زیر را انجام می دهد:

نمایه کار را فعال کنید

پس از اتمام این کارها ، برای فعال کردن مشخصات کار با روش setProfileEnabled() Manager Manager Manager تماس بگیرید:

// Get the device policy manager
val myDevicePolicyMgr = getSystemService(Context.DEVICE_POLICY_SERVICE) as DevicePolicyManager
val componentName = myDeviceAdminReceiver.getComponentName(this)
// Set the name for the newly created work profile.
myDevicePolicyMgr
.setProfileName(componentName, "My New Work Profile")
// ...and enable the profile
myDevicePolicyMgr
.setProfileEnabled(componentName)
// Get the device policy manager
DevicePolicyManager myDevicePolicyMgr =
       
(DevicePolicyManager) getSystemService(Context.DEVICE_POLICY_SERVICE);
ComponentName componentName = myDeviceAdminReceiver.getComponentName(this);
// Set the name for the newly created work profile.
myDevicePolicyMgr
.setProfileName(componentName, "My New Work Profile");
// ...and enable the profile
myDevicePolicyMgr
.setProfileEnabled(componentName);

خط مشی دستگاه را تنظیم کنید

برنامه DPC خط مشی دستگاه را مطابق با یک مدیر برای پاسخگویی به نیازها و محدودیت های سازمان اعمال می کند. به عنوان مثال ، خط مشی امنیتی ممکن است نیاز به قفل کردن دستگاه ها پس از تعداد مشخصی از تلاش های ناموفق رمز عبور داشته باشد. DPC کنسول EMM را برای خط مشی های فعلی پرس و جو می کند و سپس خط مشی ها را با استفاده از API مدیریت دستگاه اعمال می کند.

برای اطلاعات در مورد نحوه اعمال خط مشی دستگاه ، به سیاست ها مراجعه کنید.

تنظیمات مدیریت شده را برای برنامه های کار اعمال کنید

پیکربندی های مدیریت شده به شما امکان می دهد تا مشتریان خود را در اختیار مشتریان خود قرار دهید تا برنامه هایی را که برای استقرار تصویب کرده اند از قبل پیکربندی کنید و در صورت نیاز به تغییر پیکربندی ، آن برنامه ها را به راحتی به روز کنید. پیکربندی یک برنامه قبل از استقرار تضمین می کند که امنیت سازمان و سایر سیاستها با نصب برنامه در دستگاه هدف برآورده شود.

قابلیت های برنامه توسط توسعه دهنده برنامه در یک طرح XML (طرح تنظیم شده تنظیمات) تعریف شده است که برنامه را با بارگذاری در Google Play همراهی می کند (توسعه دهندگان برنامه ، تنظیمات تنظیم شده برای جزئیات را مشاهده کنید).

شما این طرح را از برنامه بازیابی می کنید تا برای مدیر مشتری خود در کنسول EMM خود نمایش دهید ، UI را ارائه دهید که در آن گزینه های مختلف تعریف شده در صفحه نمایش طرحواره ، و Admins را قادر می سازد تا تنظیمات برنامه را از قبل تنظیم کنند. پیکربندی مدیریت شده حاصل توسط مدیر به طور معمول در سرور EMM ذخیره می شود که سپس از Play EMM API برای تنظیم ManageDconfigurationsFordevice یا ManagedConfigurationsForuser استفاده می کند. برای جزئیات بیشتر به تنظیمات مدیریت شده از طریق بازی مراجعه کنید.

پیکربندی های مدیریت شده را می توان با استفاده از Play EMM API (رویکرد توصیه شده) یا مستقیماً از DPC (که در پیکربندی های مدیریت شده به طور مستقیم از DPC توضیح داده شده است) برای برنامه اعمال شود. استفاده از Play EMM API چندین مزیت دارد ، از جمله اجرای آسان زیرا می توانید از کتابخانه پشتیبانی DPC برای ساده سازی کارهای DPC استفاده کنید. علاوه بر این ، نمایشنامه EMM API:

  • پیکربندی را به صورت اتمی هنگام نصب یک برنامه جدید تنظیم می کند ، بنابراین اطمینان حاصل می کند که برنامه برای اولین بار که کاربر برنامه را راه اندازی می کند ، آماده است.
  • به شما امکان می دهد پیکربندی ها را بر اساس هر کاربر مدیریت کنید ، بنابراین می توانید از نظارت بر تهیه بر اساس هر دستگاه خودداری کنید.

تنظیمات مدیریت شده را با استفاده از Play EMM API اعمال کنید

برای استفاده از Play EMM API برای تنظیمات مدیریت شده ، DPC باید به Google Play اجازه دهد تنظیمات را تنظیم کند. کتابخانه پشتیبانی DPC با پروکسی کردن پیکربندی ارسال شده توسط Google Play از این کار مراقبت می کند.

برای استفاده از Play EMM API ، کتابخانه پشتیبانی DPC را بارگیری کرده و سپس پشتیبانی از تنظیمات مدیریت شده را در DPC خود فعال کنید.

پشتیبانی از تنظیمات مدیریت شده را در DPC خود فعال کنید

این کلاس را در DPC وارد کنید:

com.google.android.apps.work.dpcsupport.ManagedConfigurationsSupport

کتابخانه تنظیمات مدیریت شده را اولیه کنید. در این مثال ، "Admin" نام مؤلفه DeviceadminReceiver است.

var managedConfigurationsSupport = ManagedConfigurationsSupport(context, admin)
ManagedConfigurationsSupport managedConfigurationsSupport =
   
new ManagedConfigurationsSupport(context, admin);

تنظیمات مدیریت شده را فعال کنید:

managedConfigurationsSupport.enableManagedConfigurations()
managedConfigurationsSupport.enableManagedConfigurations();

با استفاده از این کتابخانه در DPC خود ، می توانید به جای کدگذاری این کارها به طور مستقیم در DPC ، از Google Play EMM API در کنسول و سرور EMM خود استفاده کنید تا تنظیمات مدیریت شده را برای برنامه های تأیید شده اعمال کنید. برای جزئیات بیشتر به تنظیمات مدیریت شده از طریق بازی مراجعه کنید.

تنظیمات مدیریت شده را مستقیماً از DPC اعمال کنید

برای تغییر تنظیمات پیکربندی یک برنامه به طور مستقیم از DPC ، با روش PocietPolicyManager.setApplicationRestrictions () تماس بگیرید و پارامترهای مربوط به برنامه DeviceadminReceiver برنامه DPC ، نام بسته برنامه هدف را انجام دهید ، و بسته نرم افزاری شامل پیکربندی مدیریت شده برنامه به عنوان تنظیم شده توسط مدیر. ببینید که چگونه کنسول DPC و EMM شما در تعامل است و تنظیمات مدیریت شده را برای جزئیات بیشتر تنظیم می کند . با این حال ، توجه داشته باشید که این رویکرد جایگزین برای استفاده از تنظیمات مدیریت شده در استقرار حساب های Google Play مدیریت شده توصیه نمی شود.

پشتیبانی از ارائه حساب Google Play پشتیبانی پشتیبانی

کتابخانه پشتیبانی DPC شامل پشتیبانی برای تهیه حساب های مدیریت Google Play است. برای استفاده از این پشتیبانی ، ابتدا باید کتابخانه را آغاز کنید ، و سپس می توانید از محیط کار اطمینان حاصل کنید و یک حساب کاربری Google Play اضافه کنید .

پشتیبانی از حساب های Google Play مدیریت شده را در DPC خود راه اندازی کنید

این کلاس را در DPC وارد کنید:

com.google.android.apps.work.dpcsupport.AndroidForWorkAccountSupport

کتابخانه سازگاری ارائه را اولیه کنید. در این مثال ، "Admin" ComponentName DeviceAdminReceiver است.

var androidForWorkAccountSupport = AndroidForWorkAccountSupport(context, admin)
AndroidForWorkAccountSupport androidForWorkAccountSupport =
   
new AndroidForWorkAccountSupport(context, admin);

از محیط کار برای حساب های Google Play مدیریت شده اطمینان حاصل کنید

پس از ارائه DPC ، دستگاهی در حالت صاحب پروفایل ( ACTION_PROVISION_MANAGED_PROFILE ) یا حالت صاحب دستگاه ( ACTION_PROVISION_MANAGED_DEVICE ) ، اطمینان حاصل کنید که دستگاه می تواند با فراخوانی از حساب های مدیریت Google پشتیبانی کند:

androidForWorkAccountSupport.ensureWorkingEnvironment(callback)
androidForWorkAccountSupport.ensureWorkingEnvironment(callback);

پاسخ به تماس با موفقیت یا عدم موفقیت این روند گزارش می دهد. هنگامی که پاسخ به تماس با موفقیت باز می گردد ، می توان یک حساب کاربری Google Play اضافه کرد. اگر پاسخ به تماس خطایی گزارش می دهد ، کاربر را وادار کنید تا اطمینان حاصل کند که دستگاه دارای اتصال شبکه است (به عنوان مثال ، در صورت عدم موفقیت بارگیری). در موارد دیگر ، عدم موفقیت در گوگل را گزارش کنید.

object : WorkingEnvironmentCallback() {
   
override fun onSuccess() {
       
// Can now provision the managed Google Play Account
   
}
   
override fun onFailure(error: Error) {
       
// Notify user, handle error (check network connection)
   
}
}
new WorkingEnvironmentCallback() {
   
@Override
   
public void onSuccess() {
       
// Can now provision the managed Google Play Account
   
}

   
@Override
   
public void onFailure(Error error) {
       
// Notify user, handle error (check network connection)
   
}
}

یک حساب Google Play مدیریت شده اضافه کنید

AccountManager Android Framework می تواند یک حساب کاربری Google Play را به یک دستگاه اضافه کند. برای ساده سازی تعامل با AccountManager ، از عملکرد Helper (که در مثال زیر نشان داده شده است) از کتابخانه پشتیبانی DPC استفاده کنید. این تابع به نشانه های برگشتی توسط Google Play Server بازگردانده می شود و ارائه حساب مدیریت Google Play را تسهیل می کند. هنگامی که حساب Google Play مدیریت شده در یک وضعیت معتبر قرار داشته باشد ، عملکرد برمی گردد:

androidForWorkAccountSupport.addAndroidForWorkAccount(token, accountAddedCallback)
androidForWorkAccountSupport.addAndroidForWorkAccount(token, accountAddedCallback);
  • token - توکن تأیید اعتبار کاربر تولید شده توسط Google Play EMM API Users.generateAuthenticationToken() .
  • accountAddedCallback - حساب مدیریت Google Play را که با موفقیت به دستگاه اضافه شد ، باز می کند. این پاسخ به تماس باید شامل روشهای onAccountReady() و onFailure() باشد.
val workAccountAddedCallback = object : WorkAccountAddedCallback() {
   
override fun onAccountReady(account: Account, deviceHint: String) {
       
// Device account was successfully added to the device
       
// and is ready to be used.
   
}

   
override fun onFailure(error: Error) {
       
// The account was not successfully added. Check that the token
       
// provided was valid (it expires after a certain period of time).
   
}
}
WorkAccountAddedCallback workAccountAddedCallback =
   
new WorkAccountAddedCallback() {
       
@Override
       
public void onAccountReady(Account account, String deviceHint) {
           
// Device account was successfully added to the device
           
// and is ready to be used.
       
}

       
@Override
       
public void onFailure(Error error) {
           
// The account was not successfully added. Check that the token
           
// provided was valid (it expires after a certain period of time).
       
}
};
  • برای کسب اطلاعات بیشتر در مورد API مدیریت دستگاه ، به مدیریت دستگاه مراجعه کنید.
  • برای کسب اطلاعات در مورد روشهای تهیه شرکت Android ، به دستگاه های تهیه در راهنمای توسعه دهنده Android Enterprise مراجعه کنید.
  • برای یک نمونه GitHub که نحوه ایجاد یک پروفایل کار اساسی را نشان می دهد ، به BasicManagedProfile مراجعه کنید.
  • برای یک نمونه GitHub که نحوه تنظیم تنظیمات در برنامه های دیگر را به عنوان صاحب پروفایل نشان می دهد ، به AdmentrictionEnforcer مراجعه کنید.