Uygulama rolleri özelliği, bir BT yöneticisinin Android destekli bir cihazdaki yönetilen uygulamaya özel ayrıcalıklar vermesine olanak tanır. Belirli bir rol atandığında uygulama, güç ve arka plan kısıtlamalarından, askıya alma işleminden, hazırda bekletme işleminden (Android 14 ve sonraki sürümlerde) muaf tutulabilir ve kullanıcı kontrolleri (ör.uygulamayı durdurma ve uygulama verilerini temizleme gibi kullanıcı işlemleri) devre dışı bırakılabilir (Android 11 ve sonraki sürümlerde). Böylece uygulama, kritik işlevini kesintisiz olarak gerçekleştirebilir. Ayrıca, uygulamaya atanan rollerden haberdar olabilir. Bu sayede, kullanıcı müdahalesi olmadan kendi kendini başlatabilir.
Ön koşullar
Cihaz, AMAPI tabanlı bir EMM tarafından yönetiliyor (özel bir DPC kullanan EMM'ler desteklenmez).
Uygulamanızı özelliği kullanmaya hazırlama
AMAPI SDK'sı ile entegrasyon yalnızca uygulamanın, kendisine atanan rollerden haberdar olmak ve böylece kendini başlatmak (ör. kullanıcı etkileşimi olmadan otomatik olarak başlatmak) istemesi durumunda gereklidir.
Uygulamanızda AMAPI SDK'sı ile entegrasyon yapma
AMAPI SDK ve bu SDK'yı uygulamanıza ekleme hakkında daha fazla bilgiyi AMAPI SDK entegrasyon kılavuzunda bulabilirsiniz.
Uygulamanın manifest dosyasına gerekli meta verileri ekleyin.
Android Device Policy (ADP), uygulamanızı atanan roller hakkında bilgilendirmek için NotificationReceiverService
'ı uygulayan sınıfınızın ComponentName
bilgisini bilmelidir. Hizmetinizi AndroidManifest.xml
içinde uygun şekilde etiketlemeniz gerekir. Böylece ADP tarafından otomatik olarak keşfedilebilir.
- Uygulamanızda tam olarak bir hizmet olmalı ve bu hizmet
enabled
olmalıdır. Ayrıca,meta-data
ileandroid:name
değericom.google.android.managementapi.notification.NotificationReceiverService.SERVICE_APP_ROLES
değerine eşit olmalıdır. - Bu hizmette
android:exported
,true
olarak ayarlanmalıdır. meta-data
öğesininandroid:value
özelliği boş bir dize olarak ayarlanmalıdır.
<service
android:name=".MyNotificationReceiverService"
android:exported="true">
<meta-data android:name="com.google.android.managementapi.notification.NotificationReceiverService.SERVICE_APP_ROLES" android:value="" />
</service>
COMPANION_APP
rolünü test ediyorsanız Android Device Policy'nin uygulamanıza yerel komut durumu güncellemeleri gönderebilmesi için hizmetinize aşağıdaki meta-data
öğelerini de eklemeniz gerekir:
<meta-data android:name="com.google.android.managementapi.notification.NotificationReceiverService.SERVICE_COMMAND_STATUS" android:value="" />
NotificationReceiverService'i genişleten bir hizmet oluşturun (veya mevcut hizmeti güncelleyin)
Mevcut NotificationReceiverService
öğenizi oluşturun veya güncelleyin ve uygulamanıza atanan rolleri dinlemek için AppRolesListener
öğesini uygulayın. Uygulamanıza atanan rolleri dinlemek için yalnızca getAppRolesListener()
gereklidir. Uygulamanıza COMPANION_APP
rolü atanırsa getCommandListener()
öğesini de uygulamanız gerekir:
import android.util.Log
import com.google.android.managementapi.approles.AppRolesListener
import com.google.android.managementapi.approles.model.AppRolesSetRequest
import com.google.android.managementapi.approles.model.AppRolesSetResponse
import com.google.android.managementapi.commands.CommandListener
import com.google.android.managementapi.commands.model.Command
import com.google.android.managementapi.notification.NotificationReceiverService
class MyNotificationReceiverService : NotificationReceiverService() {
// If your app wants to listen for roles assigned
override fun getAppRolesListener(): AppRolesListener =
object : AppRolesListener {
override fun onAppRolesSet(request: AppRolesSetRequest): AppRolesSetResponse {
val roleTypes = request.roles.map { role -> role.roleType }
Log.i(TAG, "onAppRolesSet: $roleTypes")
return AppRolesSetResponse.getDefaultInstance()
}
}
// If your app wants to listen for local command status updates
// Only relevant for COMPANION_APP role
override fun getCommandListener(): CommandListener {
return object : CommandListener {
override fun onCommandStatusChanged(command: Command) {
Log.i(TAG, "onCommandStatusChanged")
}
}
}
private companion object {
const val TAG = "MyNotificationReceiverService"
}
}
Rolleri birden fazla kez değişirse uygulamanız birden fazla kez bilgilendirilebilir. Tüm roller kaldırılırsa uygulamanıza yine de boş bir rol listesiyle bildirim gönderilir. Bu bildirim, uygulamanızı durdurulmuş durumdan çıkarır. Uygulamanıza verilen muafiyetlerle birlikte, uygulamanız herhangi bir kullanıcı etkileşimi olmadan kendi kendini başlatabilir. Uygulama rolleri bildirimi ve muafiyetler sayesinde uygulamanız ACTION_BOOT_COMPLETED
yayınlarını dinleyebilir. Uygulamanızın kendi kendini başlatmak için yönetilen yapılandırmalara ihtiyacı varsa değişiklikleri okuma ve dinleme hakkında bilgi edinmek için Yönetilen yapılandırmaları ayarlama başlıklı makaleyi inceleyin.
Cihazı uygulama rolleri politikalarıyla sağlama
Uygulama geliştiriciler, bir EMM kullanarak veya Android Management API hızlı başlangıç kılavuzunu izleyerek uygulamalarına uygulama rolleri atamayı test edebilir. AMAPI Colab not defteri, bir kuruluşu kaydetmenize,politika oluşturmanıza ve cihaz sağlama işlemini gerçekleştirmenize olanak tanır.
Uygulama rolleriyle uygulamanızın politikasını belirleme
ApplicationPolicy.roles
kullanarak uygulamanızın sahip olması amaçlanan uygulama rolleriyle bir policy
oluşturun.
Aşağıdaki örnekte, MTD uygulamaları için rolün nasıl yapılandırılacağı gösterilmektedir:
{
"applications": [
{
"packageName": "com.example.mtd",
"installType": "FORCE_INSTALLED",
"roles": [
{ "roleType": "MOBILE_THREAT_DEFENSE_ENDPOINT_DETECTION_RESPONSE" }
]
}
]
}
Sistem, politikada belirtilen rolleri atamadan önce cihazdaki uygulama imzalama anahtarı sertifikası parmak izinin Play Store'dakiyle eşleşip eşleşmediğini kontrol eder.
Parmak izi farklıysa roller uygulamaya atanmaz ve NonComplianceReason.APP_SIGNING_CERT_MISMATCH
uygunsuzluk EMM'ye bildirilir.
{
"applications": [
{
"packageName": "com.example.mtd",
"installType": "FORCE_INSTALLED",
"signingKeyCerts": [
{ "signingKeyCertFingerprintSha256": "base64-encoded-sha256" }
],
"roles": [
{ "roleType": "MOBILE_THREAT_DEFENSE_ENDPOINT_DETECTION_RESPONSE" }
]
}
]
}
Uygulamanızda yönetilen yapılandırma varsa BT yöneticisi, uygulama politikasındaki ilgili restriction
'ler için ilk yapılandırmayı ayarlayabilir:
{
"applications": [
{
"packageName": "com.example.mtd",
"installType": "FORCE_INSTALLED",
"roles": [
{ "roleType": "MOBILE_THREAT_DEFENSE_ENDPOINT_DETECTION_RESPONSE" }
],
"managedConfiguration": {
"<key>": "<value>"
}
}
]
}