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

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

পূর্বশর্ত

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

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

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

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

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

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

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

  • আপনার অ্যাপ্লিকেশানটিতে অবশ্যই একটি পরিষেবা থাকতে হবে যা enabled এবং meta-data সহ android:name সমান com.google.android.managementapi.notification.NotificationReceiverService.SERVICE_APP_ROLES
  • এই পরিষেবাটিতে অবশ্যই android:exported সেট true থাকতে হবে৷
  • android:value meta-data মান একটি খালি স্ট্রিং সেট করা আবশ্যক
<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>"
      }
    }
  ]
}