Bu kılavuzda, Android Enterprise dağıtımındaki cihazlar için nasıl cihaz politikası denetleyicisi (DPC) geliştirileceği açıklanmaktadır. Daha önce işletme politikası denetleyici olarak bilinen bir DPC uygulaması, cihazlardaki yerel cihaz politikalarını ve sistem uygulamalarını kontrol eder.
DPC'ler hakkında
Android Enterprise dağıtımında bir kuruluş, kullanıcı cihazlarının çeşitli yönleri üzerinde kontrolü elinde tutar. Örneğin, işle ilgili bilgileri kullanıcıların kişisel verilerinden ayırabilir, ortam için onaylanmış uygulamaları önceden yapılandırabilir veya cihaz özelliklerini (ör. kamera) devre dışı bırakabilir.
EMM olarak, müşterilerinizin EMM konsolunuz ve sunucunuzla birlikte kullanabileceği bir DPC uygulaması geliştirirsiniz. Müşteriniz, DPC'yi yönettiği kullanıcı cihazlarına dağıtır. DPC, EMM konsolunuz (ve sunucunuz) ile cihaz arasında köprü görevi görür. Yöneticiler, EMM konsolunu kullanarak cihaz ayarlarını ve uygulamaları yapılandırma gibi çeşitli görevleri yerine getirir.
DPC, yüklendiği cihazda iş profilini oluşturur ve yönetir. İş profili, işle ilgili bilgileri şifreler ve kullanıcıların kişisel uygulamalarından ve verilerinden ayrı tutar. DPC, iş profilini oluşturmadan önce cihazda kullanılmak üzere bir Managed Google Play Hesabı da sağlayabilir.
Bu kılavuzda, iş profilleri oluşturup yönetebilen bir DPC'nin nasıl geliştirileceği açıklanmaktadır.
EMM'ler için DPC Destek Kitaplığı
EMM'ler için DPC Destek Kitaplığı, kurumsal ortamda Android cihazların sağlanmasını ve yönetimini kolaylaştıran yardımcı ve yardımcı sınıflardan oluşur. Kitaplık, DPC uygulamalarınızdaki önemli özelliklerden yararlanmanıza olanak tanır:
- Managed Google Play hesapları için sağlama desteği: Yönetilen Google Play hesaplarının DPC uygulamasından sağlanması için Google Play ve Google Play Hizmetleri uygulamalarının minimum sürüm şartlarını karşılaması gerekir. Ancak bu uygulamaları güncellemek karmaşık olabilir. DPC destek kitaplığı, bu uygulamaların güncellenmesini sağlar ve yönetilen Google Play hesaplarının sağlama sürecinde gelecekte yapılacak güncellemelerle uyumluluğu garanti eder. Ayrıntılar için Managed Google Play Accounts sağlama desteği başlıklı makaleyi inceleyin.
- Yönetilen yapılandırma desteği: Onaylı uygulamalar için yönetilen yapılandırmaları işlemek üzere Play EMM API'yi kullanmak, yönetilen yapılandırmaları DPC'nize uygulamanın en kolay yoludur. DPC Support Library, EMM konsolunuzu kullanarak yönetici tarafından ayarlanan yönetilen yapılandırmaları (eski adıyla uygulama kısıtlamaları) uygulama görevini Google Play'e devretmenize olanak tanır. Yönetilen yapılandırmaları işlemek için Play EMM API'yi kullanmak, uygulama yapılandırmasının yükleme sırasında atomik olarak uygulanmasına olanak tanır. Bu özelliği DPC'nizde etkinleştirme hakkında daha fazla bilgi için Yönetilen yapılandırmaları iş uygulamalarına uygulama başlıklı makaleyi inceleyin.
Kitaplığı indirmek için aşağıdaki adımları uygulayın. Bu rehberde ayrıntılı olarak açıklanan görevlerde DPC Destek Kitaplığı'nın kullanıldığı varsayılır.
DPC Destek Kitaplığı'nı indirme
DPC Destek Kitaplığı'nı kullanmak için kitaplığı Android Enterprise EMM Sağlayıcı topluluğundan indirin. Kitaplığı build.gradle dosyanıza eklemeniz ve DPC uygulamanızı oluştururken diğer bağımlılıkları da dikkate almanız gerekir. Örneğin, kitaplık için 11.4.0 Google Play Hizmetleri kimlik doğrulama istemci kitaplığı gerekir.
- Kitaplığı
build.gradledosyasına ekleyin:
Groovy
implementation(name:'dpcsupport-yyyymmdd', ext:'aar')
Kotlin
implementation(name = "dpcsupport-yyyymmdd", ext = "aar")
- build.gradle dosyasına 11.4.0
Google Play Hizmetleri kimlik doğrulama istemci kitaplığını ekleyin:
Groovy
implementation 'com.google.android.gms:play-services-auth:11.4.0'
Kotlin
implementation("com.google.android.gms:play-services-auth:11.4.0")
Kitaplığın çalışması için belirli izinler gerekir. Bu nedenle, Google Play'e yüklerken bunları DPC uygulamanızın manifestine eklemeniz gerekir:
<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"/>
Bu ön kurulum ve dağıtım adımlarına ek olarak, uygulamak istediğiniz özelliğe bağlı olarak DPC kodunuzda belirli kitaplık işlevlerini de başlatmanız gerekir. Ayrıntılar, aşağıdaki ilgili bölümlerde yer almaktadır.
DPC oluşturma
DPC'nizi, cihaz yönetimi uygulamaları için kullanılan mevcut model üzerinde oluşturun.
Uygulamanız,
Cihaz Yönetimi bölümünde açıklandığı gibi
DeviceAdminReceiver (android.app.admin paketindeki bir sınıf) sınıfının alt sınıfı olmalıdır.
İş profili oluşturun
Temel iş profili oluşturmayı gösteren bir örnek için GitHub'daki BasicManagedProfile'a bakın.
Kişisel profili olan bir cihazda iş profili oluşturmak için önce FEATURE_MANAGED_USERS sistem özelliğinin varlığını kontrol ederek cihazın iş profilini destekleyip desteklemediğini öğrenin:
Kotlin
if (!packageManager.hasSystemFeature(PackageManager.FEATURE_MANAGED_USERS)) { // This device does not support work profiles! }
Java
PackageManager pm = getPackageManager(); if (!pm.hasSystemFeature(PackageManager.FEATURE_MANAGED_USERS)) { // This device does not support work profiles! }
Cihaz iş profillerini destekliyorsa ACTION_PROVISION_MANAGED_PROFILE işlemiyle bir amaç göndererek iş profili oluşturun. (Bazı dokümanlarda yönetilen profil, Android'in kurumsal bağlamında iş profili ile aynı anlama gelen genel bir terimdir.) Cihaz yöneticisi paket adını ek olarak ekleyin:
Kotlin
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() }
Java
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(); }
Sistem, bu amaca aşağıdaki şekilde yanıt verir:
- Cihazın şifrelenmiş olduğunu doğrular. Şifrelenmemişse sistem, devam etmeden önce cihazı şifrelemesini ister.
- İş profili oluşturur.
- Gerekli olmayan uygulamaları iş profilinden kaldırır.
- DPC uygulamasını iş profiline kopyalar ve DPC'yi profil sahibi olarak ayarlar.
Temel hazırlığın başarılı olup olmadığını görmek için
onActivityResult() seçeneğini geçersiz kılın:
Kotlin
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) } }
Java
@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); } }
İş profilini etkinleştirmeyi tamamlayın
Profil sağlandığında sistem, DPC uygulamasının
DeviceAdminReceiver.onProfileProvisioningComplete() yöntemini çağırır. İş profilini etkinleştirmeyi tamamlamak için bu geri çağırma yöntemini geçersiz kılın.
Tipik bir DeviceAdminReceiver.onProfileProvisioningComplete()
geri çağırma uygulaması şunları yapar:
- Cihazın, EMM'nin cihaz politikalarına uyduğunu doğrular. Bu politikalar, Cihaz politikalarını ayarlama bölümünde açıklanmıştır.
- Yöneticinin
DevicePolicyManager.enableSystemApp()kullanarak iş profilinde kullanılabilir hale getirdiği sistem uygulamalarını etkinleştirir. - Cihazda Managed Google Play kullanılıyorsa onaylı uygulamaların cihaza yüklenebilmesi için iş profiline uygun hesabı ekler.
- Managed Google Play Accounts: Ayrıntılı bilgi için Managed Google Play Accounts için çalışma ortamını sağlama ve Managed Google Play hesabı ekleme başlıklı makaleleri inceleyin.
- Google Hesapları:
AccountManager.addAccount()simgesini kullanın.
İş profilini etkinleştirme
Bu görevleri tamamladıktan sonra iş profilini etkinleştirmek için cihaz politikası yöneticisinin
setProfileEnabled() yöntemini çağırın:
Kotlin
// 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)
Java
// 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);
Cihaz politikalarını ayarlama
DPC uygulaması, bir kuruluşun gereksinimlerini ve kısıtlamalarını karşılamak için yönetici tarafından belirlenen cihaz politikalarını uygular. Örneğin, güvenlik politikası belirli sayıda başarısız şifre denemesinden sonra cihazların kilitlenmesini gerektirebilir. DPC, EMM konsoluna mevcut politikaları sorgular ve ardından Device Administration API'sini kullanarak politikaları uygular.
Cihaz politikalarını uygulama hakkında bilgi edinmek için Politikalar başlıklı makaleyi inceleyin.
Yönetilen yapılandırmaları iş uygulamalarına uygulama
Yönetilen yapılandırmalar, müşterilerinize dağıtım için onayladıkları uygulamaları önceden yapılandırma ve yapılandırmanın değiştirilmesi gerektiğinde bu uygulamaları kolayca güncelleme olanağı sunar. Uygulamayı dağıtmadan önce yapılandırmak, hedef cihaza yüklendiğinde kuruluşun güvenlik ve diğer politikalarının karşılanmasını sağlar.
Uygulama özellikleri, uygulama geliştirici tarafından Google Play'e yüklenirken uygulamaya eşlik eden bir XML şemasında (yönetilen yapılandırmalar şeması) tanımlanır (ayrıntılar için uygulama geliştiriciler Yönetilen Yapılandırmaları Ayarlama başlıklı makaleyi inceleyin).
Bu şemayı, EMM konsolunuzda müşteri yöneticilerinize göstermek üzere uygulamadan alırsınız. Şemada tanımlanan çeşitli seçeneklerin görüntülendiği bir kullanıcı arayüzü sağlarsınız ve yöneticilerin uygulamanın ayarlarını önceden yapılandırmasına olanak tanırsınız. Yöneticinin ayarladığı yönetilen yapılandırma, genellikle EMM sunucusunda depolanır. EMM sunucusu, Managedconfigurationsfordevice veya Managedconfigurationsforuser'ı ayarlamak için Play EMM API'yi kullanır. Ayrıntılar için Play üzerinden yönetilen yapılandırmalar başlıklı makaleyi inceleyin.
Yönetilen yapılandırmalar, Play EMM API'si (önerilen yaklaşım) kullanılarak veya doğrudan DPC'den (Yönetilen yapılandırmaları doğrudan DPC'den uygulama başlıklı makalede açıklanmıştır) uygulamaya uygulanabilir. Play EMM API'sini kullanmanın çeşitli avantajları vardır. Örneğin, DPC görevlerini basitleştirmek için DPC Destek Kitaplığı'nı kullanabileceğinizden kolayca uygulanabilir. Ayrıca Play EMM API:
- Yeni bir uygulama yüklendiğinde yapılandırmayı atomik olarak ayarlar. Böylece, kullanıcı uygulamayı ilk kez başlattığında uygulamanın hazır olmasını sağlar.
- Yapılandırmaları kullanıcı bazında yönetmenize olanak tanır. Böylece, temel hazırlık işlemlerini cihaz bazında izlemek zorunda kalmazsınız.
Play EMM API'yi kullanarak yönetilen yapılandırmaları uygulama
Yönetilen yapılandırmalar için Play EMM API'yi kullanmak istiyorsanız DPC'nin Google Play'in yapılandırmaları ayarlamasına izin vermesi gerekir. DPC Destek Kitaplığı, Google Play tarafından gönderilen yapılandırmayı proxy'leyerek bu görevi sizin için yerine getirir.
Play EMM API'yi kullanmak için DPC Destek Kitaplığı'nı indirin ve DPC'nizde yönetilen yapılandırma desteğini etkinleştirin.
Yönetilen yapılandırmalar desteğini DPC'nizde etkinleştirme
Bu sınıfı DPC'nize aktarın:
com.google.android.apps.work.dpcsupport.ManagedConfigurationsSupport
Yönetilen yapılandırmalar kitaplığını başlatın. Bu örnekte, "admin" DeviceAdminReceiver'ın ComponentName'idir.
Kotlin
var managedConfigurationsSupport = ManagedConfigurationsSupport(context, admin)
Java
ManagedConfigurationsSupport managedConfigurationsSupport = new ManagedConfigurationsSupport(context, admin);
Yönetilen yapılandırmaları etkinleştirme:
Kotlin
managedConfigurationsSupport.enableManagedConfigurations()
Java
managedConfigurationsSupport.enableManagedConfigurations();
Bu kitaplık DPC'nizde başlatıldığında, bu görevleri doğrudan DPC'de kodlamak yerine onaylanmış uygulamalara yönetilen yapılandırmalar uygulamak için EMM konsolunuzda ve sunucunuzda Google Play EMM API'yi kullanabilirsiniz. Ayrıntılar için Play aracılığıyla yönetilen yapılandırmalar başlıklı makaleyi inceleyin.
Yönetilen yapılandırmaları doğrudan DPC'den uygulama
Bir uygulamanın yapılandırma ayarlarını doğrudan DPC'den değiştirmek için DevicePolicyManager.setApplicationRestrictions() yöntemini çağırın ve DPC uygulamasının DeviceAdminReceiver'ı, hedef uygulamanın paket adı ve yöneticinin ayarladığı şekilde uygulamanın yönetilen yapılandırmasını içeren Bundle için parametreleri iletin. Ayrıntılar için DPC ve EMM konsolunuzun etkileşimi ve Yönetilen yapılandırmaları ayarlama başlıklı makaleleri inceleyin. Ancak, yönetilen yapılandırmaları uygulamaya yönelik bu alternatif yaklaşımın Managed Google Play Accounts dağıtımlarında önerilmediğini unutmayın.
Managed Google Play Accounts sağlama desteği
DPC Destek Kitaplığı, Managed Google Play hesaplarının sağlanmasıyla ilgili destek içerir. Bu destekten yararlanmak için önce kitaplığı ilk kullanıma hazırlamanız gerekir. Ardından çalışma ortamını sağlayabilir ve Managed Google Play Hesabı ekleyebilirsiniz.
DPC'nizde Managed Google Play hesapları desteğini başlatma
Bu sınıfı DPC'nize aktarın:
com.google.android.apps.work.dpcsupport.AndroidForWorkAccountSupport
Sağlama uyumluluk kitaplığını başlatın. Bu örnekte "admin",
DeviceAdminReceiver öğesinin ComponentName öğesidir.
Kotlin
var androidForWorkAccountSupport = AndroidForWorkAccountSupport(context, admin)
Java
AndroidForWorkAccountSupport androidForWorkAccountSupport = new AndroidForWorkAccountSupport(context, admin);
Managed Google Play Accounts için çalışma ortamını sağlama
DPC, bir cihazı profil sahibi modunda (ACTION_PROVISION_MANAGED_PROFILE) veya cihaz sahibi modunda (ACTION_PROVISION_MANAGED_DEVICE) sağladıktan sonra aşağıdaki işlevi çağırarak cihazın Managed Google Play hesaplarını destekleyebildiğinden emin olun:
Kotlin
androidForWorkAccountSupport.ensureWorkingEnvironment(callback)
Java
androidForWorkAccountSupport.ensureWorkingEnvironment(callback);
Geri arama, bu işlemin başarılı veya başarısız olduğunu bildirir. Geri arama başarılı bir şekilde döndüğünde Managed Google Play hesabı eklenebilir. Geri çağırma bir hata bildirirse kullanıcıya cihazın ağ bağlantısı olduğundan emin olmasını söyleyin (örneğin, indirme işlemi başarısız olursa). Diğer durumlarda hatayı Google'a bildirin.
Kotlin
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) } }
Java
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) } }
Managed Google Play Accounts ekleme
Android çerçevesinin AccountManager
bir cihaza Managed Google Play hesabı ekleyebilir. AccountManager ile etkileşimi kolaylaştırmak için DPC Destek Kitaplığı'ndaki yardımcı işlevi (aşağıdaki örnekte gösterilmiştir) kullanın. İşlev, Google Play sunucusu tarafından döndürülen jetonu işler ve Managed Google Play hesabının sağlanmasını kolaylaştırır. Yönetilen Google Play hesabı geçerli bir durumdayken işlev döndürülür:
Kotlin
androidForWorkAccountSupport.addAndroidForWorkAccount(token, accountAddedCallback)
Java
androidForWorkAccountSupport.addAndroidForWorkAccount(token, accountAddedCallback);
token—Google Play EMM APIUsers.generateAuthenticationToken()çağrısı tarafından oluşturulan kullanıcı kimlik doğrulama jetonu.accountAddedCallback: Cihaza başarıyla eklenen Managed Google Play Hesabı'nı döndürür. Bu geri çağırma,onAccountReady()veonFailure()yöntemlerini içermelidir.
Kotlin
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). } }
Java
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). } };
İlgili belgeler
- Cihaz Yönetimi API'si hakkında daha fazla bilgi edinmek için Cihaz Yönetimi başlıklı makaleyi inceleyin.
- Android Enterprise'da cihaz sağlama yöntemleri hakkında bilgi edinmek için Android Enterprise geliştirici kılavuzundaki Cihaz sağlama bölümüne bakın.
- Temel bir iş profili oluşturmanın nasıl yapılacağını gösteren GitHub örneği için BasicManagedProfile'a bakın.
- Diğer uygulamalarda yapılandırmaları profil sahibi olarak ayarlamayı gösteren bir GitHub örneği için AppRestrictionEnforcer'a bakın.