অ্যাপ্লিকেশন ভূমিকা পরিচালনা করুন

অ্যাপ্লিকেশন রোল বৈশিষ্ট্যটি একজন আইটি অ্যাডমিনকে একটি অ্যান্ড্রয়েড-চালিত ডিভাইসে একটি পরিচালিত অ্যাপ্লিকেশনকে বিশেষ সুবিধা প্রদান করতে দেয়। একটি নির্দিষ্ট ভূমিকা বরাদ্দ করার মাধ্যমে, একটি অ্যাপকে পাওয়ার এবং ব্যাকগ্রাউন্ড সীমাবদ্ধতা, সাসপেনশন, হাইবারনেশন (অ্যান্ড্রয়েড 14+ এ) থেকে অব্যাহতি দেওয়া যেতে পারে এবং ব্যবহারকারীর নিয়ন্ত্রণ (অর্থাৎ অ্যাপ ডেটা জোর করে বন্ধ করা এবং সাফ করার মতো ব্যবহারকারীর ক্রিয়া অন্তর্ভুক্ত) অক্ষম করা যেতে পারে (অ্যান্ড্রয়েড 11+ এ), এটি কোনও বাধা ছাড়াই তার গুরুত্বপূর্ণ কার্য সম্পাদন করতে দেয়। অতিরিক্তভাবে, অ্যাপটিকে তার নির্ধারিত ভূমিকা সম্পর্কে অবহিত করা যেতে পারে, যা এটি ব্যবহারকারীর হস্তক্ষেপ ছাড়াই নিজেকে বুটস্ট্র্যাপ করতে দেয়।

উপলব্ধ অ্যাপ্লিকেশন ভূমিকার তালিকা এবং প্রতিটি ভূমিকার জন্য প্রদত্ত বিশেষ সুযোগ-সুবিধার জন্য, RoleType দেখুন।

পূর্বশর্ত

ডিভাইসটি AMAPI ভিত্তিক EMM দ্বারা পরিচালিত হয় (কাস্টম DPC ব্যবহার করে EMM সমর্থিত নয়)।

বৈশিষ্ট্যটি ব্যবহারের জন্য আপনার অ্যাপটি প্রস্তুত করুন

AMAPI SDK-এর সাথে ইন্টিগ্রেশন শুধুমাত্র তখনই প্রয়োজন যখন অ্যাপটি তার নির্ধারিত ভূমিকা সম্পর্কে অবহিত হতে চায় যা এটিকে নিজেই বুটস্ট্র্যাপ করতে দেয় (অর্থাৎ ব্যবহারকারীর মিথস্ক্রিয়া ছাড়াই স্বয়ংক্রিয়ভাবে লঞ্চ)।

আপনার অ্যাপে AMAPI SDK এর সাথে একীভূত করুন

AMAPI SDK সম্পর্কে আরও তথ্য এবং এটি আপনার অ্যাপে কীভাবে যুক্ত করবেন তা AMAPI SDK ইন্টিগ্রেশন গাইডে পাবেন।

অ্যাপের ম্যানিফেস্টে প্রয়োজনীয় মেটাডেটা যোগ করুন

অ্যান্ড্রয়েড ডিভাইস পলিসি (ADP) কে আপনার ক্লাসের ComponentName জানা প্রয়োজন যা NotificationReceiverService বাস্তবায়ন করে আপনার অ্যাপকে তার নির্ধারিত ভূমিকা সম্পর্কে অবহিত করে। আপনাকে অবশ্যই AndroidManifest.xml এ আপনার পরিষেবাটি যথাযথভাবে ট্যাগ করতে হবে যাতে এটি ADP দ্বারা স্বয়ংক্রিয়ভাবে আবিষ্কার করা যায়।

  • আপনার অ্যাপে অবশ্যই একটি পরিষেবা enabled থাকতে হবে এবং android:name এর সাথে com.google.android.managementapi.notification.NotificationReceiverService.SERVICE_APP_ROLES এর সমান meta-data থাকতে হবে।
  • এই পরিষেবাটিতে android:exported true তে সেট করতে হবে
  • meta-data android:value অবশ্যই একটি খালি স্ট্রিংয়ে সেট করতে হবে।
<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 ভূমিকাটি পরীক্ষা করে থাকেন, তাহলে আপনার পরিষেবাতে নিম্নলিখিত meta-data যোগ করা উচিত যাতে Android ডিভাইস নীতি আপনার অ্যাপে স্থানীয় কমান্ড স্ট্যাটাস আপডেট পাঠাতে পারে:

<meta-data android:name="com.google.android.managementapi.notification.NotificationReceiverService.SERVICE_COMMAND_STATUS" android:value="" />

NotificationReceiverService সম্প্রসারণকারী একটি পরিষেবা তৈরি করুন (অথবা বিদ্যমানটি আপডেট করুন)

আপনার বিদ্যমান NotificationReceiverService তৈরি বা আপডেট করুন এবং আপনার অ্যাপে নির্ধারিত ভূমিকাগুলি শোনার জন্য একটি AppRolesListener প্রয়োগ করুন। আপনার অ্যাপে নির্ধারিত ভূমিকাগুলি শোনার জন্য শুধুমাত্র getAppRolesListener() প্রয়োজন। যদি আপনার অ্যাপটি একটি COMPANION_APP ভূমিকা বরাদ্দ করা হয় তবে আপনার getCommandListener() ও প্রয়োগ করা উচিত:

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"
  }
}

আপনার অ্যাপের ভূমিকা একাধিকবার পরিবর্তিত হলে একাধিকবার বিজ্ঞপ্তি পাঠানো যেতে পারে। যদি সমস্ত ভূমিকা সরিয়ে ফেলা হয়, তবুও আপনার অ্যাপটি ভূমিকার একটি খালি তালিকা সহ বিজ্ঞপ্তি পাবে। এই বিজ্ঞপ্তিটি আপনার অ্যাপটিকে বন্ধ অবস্থায় থেকে বের করে দেবে এবং আপনার অ্যাপের জন্য প্রদত্ত ছাড়ের সাথে সাথে, আপনার অ্যাপটি কোনও ব্যবহারকারীর ইন্টারঅ্যাকশন ছাড়াই নিজেই বুটস্ট্র্যাপ করতে পারবে। অ্যাপ রোল বিজ্ঞপ্তি এবং ছাড়ের জন্য ধন্যবাদ, আপনার অ্যাপ ACTION_BOOT_COMPLETED সম্প্রচার শুনতে পারবে। যদি আপনার অ্যাপটি নিজেই বুটস্ট্র্যাপ করার জন্য তার পরিচালিত কনফিগারেশনের উপর নির্ভর করে, তাহলে পরিবর্তনগুলি কীভাবে পড়তে এবং শুনতে হয় সে সম্পর্কে পরিচালিত কনফিগারেশন সেট আপ করুন দেখুন।

ডিভাইসে অ্যাপ রোল নীতিমালা সরবরাহ করুন

অ্যাপ ডেভেলপাররা তাদের অ্যাপ্লিকেশনে অ্যাপ রোল অ্যাসাইন করার পরীক্ষা করতে পারেন এবং EMM ব্যবহার করে অথবা Android Management API quickstart অনুসরণ করে। AMAPI Colab নোটবুক আপনাকে একটি এন্টারপ্রাইজ নথিভুক্ত করতে, একটি নীতি তৈরি করতে এবং একটি ডিভাইস সরবরাহ করতে দেয়।

অ্যাপের ভূমিকা সহ আপনার অ্যাপের জন্য নীতি সেট করুন

ApplicationPolicy.roles ব্যবহার করে আপনার অ্যাপের জন্য যে অ্যাপ রোলগুলি রাখার কথা, সেগুলি দিয়ে একটি policy সেট আপ করুন।

নিম্নলিখিত উদাহরণে MTD অ্যাপগুলির জন্য ভূমিকা কীভাবে কনফিগার করতে হয় তা দেখানো হয়েছে:

{
  "applications": [

    {
      "packageName": "com.example.mtd",
      "installType": "FORCE_INSTALLED",
      "roles": [
        { "roleType": "MOBILE_THREAT_DEFENSE_ENDPOINT_DETECTION_RESPONSE" }
      ]
    }
  ]
}

নীতিমালায় উল্লেখিত ভূমিকাগুলি নির্ধারণের আগে সিস্টেমটি পরীক্ষা করবে যে ডিভাইসে থাকা অ্যাপের সাইনিং কী সার্টিফিকেট ফিঙ্গারপ্রিন্টটি প্লে স্টোরের ফিঙ্গারপ্রিন্টের সাথে মিলে যাচ্ছে কিনা। যদি ফিঙ্গারপ্রিন্টটি ভিন্ন হয়, তাহলে অ্যাপটিতে ভূমিকাগুলি বরাদ্দ করা হবে না এবং NonComplianceReason.APP_SIGNING_CERT_MISMATCH অ-সম্মতি EMM-কে রিপোর্ট করা হবে।

{
  "applications": [

    {
      "packageName": "com.example.mtd",
      "installType": "FORCE_INSTALLED",
      "signingKeyCerts": [
         { "signingKeyCertFingerprintSha256": "base64-encoded-sha256" }
       ],
      "roles": [
        { "roleType": "MOBILE_THREAT_DEFENSE_ENDPOINT_DETECTION_RESPONSE" }
      ]
    }
  ]
}

যদি আপনার অ্যাপের কনফিগারেশন পরিচালিত থাকে, তাহলে আইটি অ্যাডমিন অ্যাপ্লিকেশন নীতিতে প্রাসঙ্গিক restriction জন্য একটি প্রাথমিক কনফিগারেশন সেট আপ করতে পারেন:

{
  "applications": [

    {
      "packageName": "com.example.mtd",
      "installType": "FORCE_INSTALLED",
      "roles": [
        { "roleType": "MOBILE_THREAT_DEFENSE_ENDPOINT_DETECTION_RESPONSE" }
      ],
      "managedConfiguration": {
        "<key>": "<value>"
      }
    }
  ]
}