ম্যানেজ করা কনফিগারেশন সেট-আপ করা

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

যেমন, কোনও সংস্থার অনুমোদিত অ্যাপের ক্ষেত্রে আইটি অ্যাডমিনকে নিম্নলিখিত কাজ করার অনুমতি দিতে হতে পারে:

  • ওয়েব ব্রাউজারের জন্য URL ব্লক করা বা অনুমতি দেওয়া
  • কোনও অ্যাপকে মোবাইল নেটওয়ার্কের মাধ্যমে কন্টেন্ট সিঙ্ক করার অনুমতি দেওয়া হবে নাকি শুধু ওয়াই-ফাইয়ের মাধ্যমে তা কনফিগার করুন
  • অ্যাপের ইমেল সেটিংস কনফিগার করুন

এই নির্দেশিকা থেকে আপনার অ্যাপে কীভাবে ম্যানেজ করা কনফিগারেশন সেটিংস প্রয়োগ করবেন তা জানতে পারবেন। ম্যানেজ করা কনফিগারেশন সহ স্যাম্পেল অ্যাপ দেখতে, ManagedConfigurations দেখুন। আপনি এন্টারপ্রাইজ মোবিলিটি ম্যানেজমেন্ট (EMM) ডেভেলপার হলে, Android Management API গাইড দেখুন।

মনে রাখবেন: ঐতিহাসিক কারণে, এই কনফিগারেশন সেটিংস বিধিনিষেধ হিসেবে পরিচিত এবং এই শব্দ ব্যবহার করে এমন ফাইল ও ক্লাসের সাথে প্রয়োগ করা হয় (যেমন RestrictionsManager)। তবে, এই বিধিনিষেধ আসলে কনফিগারেশন বিকল্পের একটি বিস্তৃত রেঞ্জ প্রয়োগ করতে পারে, শুধু অ্যাপের কার্যকারিতার উপর বিধিনিষেধ নয়।

রিমোট কনফিগারেশন ওভারভিউ

অ্যাপ ম্যানেজ করা কনফিগারেশন বিকল্প নির্ধারণ করে যা আইটি অ্যাডমিন রিমোটলি সেট করতে পারেন। এগুলি হল ইচ্ছামত করা সেটিংস যা ম্যানেজ করা কনফিগারেশন প্রদানকারী পরিবর্তন করতে পারে। আপনার অ্যাপ অফিস প্রোফাইলে রান করলে, আইটি অ্যাডমিন আপনার অ্যাপের ম্যানেজ করা কনফিগারেশন পরিবর্তন করতে পারবেন।

ম্যানেজ করা কনফিগারেশন প্রদানকারী হল একই ডিভাইসে চলা অন্য একটি অ্যাপ। এই অ্যাপ সাধারণত আইটি অ্যাডমিন নিয়ন্ত্রণ করেন। আইটি অ্যাডমিন ম্যানেজ করা কনফিগারেশন প্রদানকারী অ্যাপে কনফিগারেশন পরিবর্তন সম্পর্কে জানায়। সেই অ্যাপ, আপনার অ্যাপে কনফিগারেশন পরিবর্তন করে।

এক্সটার্নালভাবে ম্যানেজ করা কনফিগারেশন প্রদান করতে:

  • আপনার অ্যাপ ম্যানিফেস্টে ম্যানেজ করা কনফিগারেশন ঘোষণা করুন। এটি করলে, আইটি অ্যাডমিন Google Play API-এর মাধ্যমে অ্যাপের কনফিগারেশন পড়তে পারবেন।
  • অ্যাপটি যখনই আবার চালু হবে, বর্তমান ম্যানেজ করা কনফিগারেশন চেক করতে RestrictionsManager অবজেক্ট ব্যবহার করুন এবং সেই কনফিগারেশনের সাথে মানানসই করতে আপনার অ্যাপের UI এবং আচরণ পরিবর্তন করুন।
  • ACTION_APPLICATION_RESTRICTIONS_CHANGED অভিপ্রায়ের জন্য শুনুন। আপনি এই ব্রডকাস্ট পেলে, বর্তমান ম্যানেজ করা কনফিগারেশন কী তা দেখতে RestrictionsManager চেক করুন এবং আপনার অ্যাপের আচরণে প্রয়োজনীয় পরিবর্তন করুন।

ম্যানেজ করা কনফিগারেশন নির্ধারণ করুন

আপনি যে ম্যানেজ করা কনফিগারেশন নির্ধারণ করতে চান, আপনার অ্যাপ সেটি সাপোর্ট করতে পারে। আপনি অ্যাপের ম্যানেজ করা কনফিগারেশন ম্যানেজ করা কনফিগারেশন ফাইলে ঘোষণা করেন এবং ম্যানিফেস্টে কনফিগারেশন ফাইল ঘোষণা করেন। কনফিগারেশন ফাইল তৈরি করলে, আপনার অ্যাপের প্রদান করা ম্যানেজ করা কনফিগারেশন অন্যান্য অ্যাপ পরীক্ষা করতে পারে। EMM পার্টনাররা Google Play API ব্যবহার করে আপনার অ্যাপের কনফিগারেশন পড়তে পারবেন।

আপনার অ্যাপের রিমোট কনফিগারেশন বিকল্প নির্ধারণ করতে, আপনার ম্যানিফেস্টের <application> এলিমেন্টে নিম্নলিখিত এলিমেন্ট যোগ করুন:

<meta-data android:name="android.content.APP_RESTRICTIONS"
    android:resource="@xml/app_restrictions" />

আপনার অ্যাপের res/xml ডিরেক্টরিতে app_restrictions.xml নামের একটি ফাইল তৈরি করুন। সেই ফাইলের গঠন RestrictionsManager-এর রেফারেন্সে বর্ণনা করা হয়েছে। ফাইলে একটি সিঙ্গেল টপ-লেভেল <restrictions> এলিমেন্ট আছে, যার মধ্যে অ্যাপের প্রতিটি কনফিগারেশন বিকল্পের জন্য একটি <restriction> চাইল্ড এলিমেন্ট আছে।

মনে রাখবেন: ম্যানেজ করা কনফিগারেশন ফাইলের লোকালাইজ করা ভার্সন তৈরি করবেন না। আপনার অ্যাপে শুধুমাত্র একটি ম্যানেজ করা কনফিগারেশন ফাইল থাকতে পারে, তাই আপনার অ্যাপের কনফিগারেশন সব লোকেলে একই রকম হবে।

এন্টারপ্রাইজ পরিবেশে, EMM সাধারণত আইটি অ্যাডমিনের জন্য রিমোট কনসোল তৈরি করতে ম্যানেজ করা কনফিগারেশন স্কিমা ব্যবহার করবে, যাতে অ্যাডমিন দূরবর্তীভাবে আপনার অ্যাপ্লিকেশন কনফিগার করতে পারেন।

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

যেমন, ধরুন আপনার অ্যাপটি মোবাইল কানেকশনের মাধ্যমে ডেটা ডাউনলোড করার অনুমতি দিতে বা নিষিদ্ধ করতে রিমোটলি কনফিগার করা যেতে পারে। আপনার অ্যাপে এই ধরনের <restriction> এলিমেন্ট থাকতে পারে:

<?xml version="1.0" encoding="utf-8"?>
<restrictions xmlns:android="http://schemas.android.com/apk/res/android">

  <restriction
    android:key="downloadOnCellular"
    android:title="@string/download_on_cell_title"
    android:restrictionType="bool"
    android:description="@string/download_on_cell_description"
    android:defaultValue="true" />

</restrictions>

ম্যানেজ করা কনফিগারেশন বান্ডেল থেকে প্রতিটি কনফিগারেশনের ভ্যালু পড়তে আপনি সেটির android:key অ্যাট্রিবিউট ব্যবহার করেন। এই কারণে, প্রতিটি কনফিগারেশনে একটি অনন্য কী স্ট্রিং থাকতে হবে এবং স্ট্রিংটি লোকালাইজ করা যাবে না। এটি অবশ্যই একটি স্ট্রিং লিটারেল দিয়ে নির্দিষ্ট করতে হবে।

মনে রাখবেন: প্রোডাকশন অ্যাপে, android:title এবং android:description লোকালাইজ করা রিসোর্স ফাইল থেকে ড্র করতে হবে, যেমন রিসোর্সের মাধ্যমে লোকালাইজ করা লিঙ্কে বর্ণনা করা হয়েছে।

কোনও অ্যাপ bundle_array-এর মধ্যে বান্ডেল ব্যবহার করে বিধিনিষেধ নির্ধারণ করে। যেমন, একাধিক VPN কানেকশন বিকল্প সহ কোনও অ্যাপ প্রতিটি VPN সার্ভার কনফিগারেশনকে একটি bundle-এ সংজ্ঞায়িত করতে পারে, যেখানে একাধিক বান্ডেল একটি বান্ডেল অ্যারেতে একসাথে গ্রুপ করা থাকে:

<?xml version="1.0" encoding="utf-8"?>
<restrictions xmlns:android="http://schemas.android.com/apk/res/android" >

  <restriction
    android:key="vpn_configuration_list"
    android:restrictionType="bundle_array">
    <restriction
      android:key="vpn_configuration"
      android:restrictionType="bundle">
      <restriction
        android:key="vpn_server"
        android:restrictionType="string"/>
      <restriction
        android:key="vpn_username"
        android:restrictionType="string"/>
      <restriction
        android:key="vpn_password"
        android:restrictionType="string"/>
    </restriction>
  </restriction>

</restrictions>

android:restrictionType এলিমেন্টের জন্য কাজ করে এমন ধরন টেবিল ১-এ তালিকাভুক্ত করা আছে এবং RestrictionsManager ও RestrictionEntry-এর রেফারেন্সে ডকুমেন্ট করা আছে।

টেবিল ১. বিধিনিষেধ এন্ট্রি করার ধরন ও ব্যবহার।

ধরন android:restrictionType সাধারণ ব্যবহার
TYPE_BOOLEAN "bool" একটি বুলিয়ান ভ্যালু, সত্য বা মিথ্যা।
TYPE_STRING "string" স্ট্রিং ভ্যালু, যেমন নাম।
TYPE_INTEGER "integer" MIN_VALUE থেকে MAX_VALUE পর্যন্ত ভ্যালু সহ একটি পূর্ণসংখ্যা।
TYPE_CHOICE "choice" android:entryValues থেকে বেছে নেওয়া স্ট্রিং ভ্যালু, সাধারণত একটি একক-বাছাই তালিকা হিসেবে দেখানো হয়।
TYPE_MULTI_SELECT "multi-select" android:entryValues থেকে বেছে নেওয়া ভ্যালু সহ স্ট্রিং অ্যারে। একাধিক আইটেম বেছে নেওয়ার তালিকা দেখানোর জন্য এটি ব্যবহার করুন, যেখানে একাধিক এন্ট্রি বেছে নেওয়া যাবে, যেমন, নির্দিষ্ট শীর্ষক বেছে নিয়ে তা অনুমোদিত তালিকায় যোগ করা।
TYPE_NULL "hidden" লুকানো বিধিনিষেধের ধরন। এই ধরনের তথ্য ব্যবহার করুন যা ট্রান্সফার করতে হবে কিন্তু UI-তে ব্যবহারকারীকে দেখানো যাবে না। একটি স্ট্রিং ভ্যালু স্টোর করে।
TYPE_BUNDLE_ARRAY "bundle_array" বিধিনিষেধের অ্যারে স্টোর করার জন্য এটি ব্যবহার করুন bundles। Android 6.0 (API লেভেল ২৩)-এ উপলভ্য।

মনে রাখবেন: android:entryValues মেশিনের ক্ষেত্রে গ্রহণযোগ্য এবং লোকালাইজ করা যাবে না। মানুষের-পঠনযোগ্য ভ্যালু দেখাতে android:entries ব্যবহার করুন যা লোকালাইজ করা যেতে পারে। প্রতিটি এন্ট্রির জন্য android:entryValues-এ একটি সংশ্লিষ্ট ইন্ডেক্স থাকতে হবে।

ম্যানেজ করা কনফিগারেশন চেক করুন

অন্যান্য অ্যাপ আপনার অ্যাপের কনফিগারেশন সেটিংস পরিবর্তন করলে, আপনার অ্যাপ অটোমেটিক বিজ্ঞপ্তি পায় না। পরিবর্তে, আপনার অ্যাপ শুরু বা আবার চালু করার সময় ম্যানেজ করা কনফিগারেশনগুলি কী তা আপনাকে চেক করতে হবে এবং আপনার অ্যাপ চলাকালীন কনফিগারেশনগুলি পরিবর্তিত হলে তা খুঁজে বের করার জন্য সিস্টেম ইনটেন্ট শুনতে হবে।

বর্তমান কনফিগারেশন সেটিংস খুঁজে পেতে, আপনার অ্যাপ একটি RestrictionsManager অবজেক্ট ব্যবহার করে। আপনার অ্যাপকে নিম্নলিখিত সময়ে বর্তমান ম্যানেজ করা কনফিগারেশন চেক করতে হবে:

RestrictionsManager অবজেক্ট পেতে, getActivity()-এর সাথে বর্তমান অ্যাক্টিভিটি পান, তারপর সেই অ্যাক্টিভিটির Activity.getSystemService() মেথড কল করুন:

Kotlin

var myRestrictionsMgr =
        activity?.getSystemService(Context.RESTRICTIONS_SERVICE) as RestrictionsManager

জাভা

RestrictionsManager myRestrictionsMgr =
    (RestrictionsManager) getActivity()
        .getSystemService(Context.RESTRICTIONS_SERVICE);

আপনার কাছে RestrictionsManager থাকলে, আপনি getApplicationRestrictions() পদ্ধতি কল করে বর্তমান কনফিগারেশন সেটিংস পেতে পারেন:

Kotlin

var appRestrictions: Bundle = myRestrictionsMgr.applicationRestrictions

জাভা

Bundle appRestrictions = myRestrictionsMgr.getApplicationRestrictions();

মনে রাখবেন: সুবিধার জন্য, আপনি UserManager.getApplicationRestrictions()-এ কল করে UserManager-এর মাধ্যমে বর্তমান কনফিগারেশন ফেচ করতে পারবেন। এই পদ্ধতিটি ঠিক RestrictionsManager.getApplicationRestrictions()-এর মতোই কাজ করে।

getApplicationRestrictions() মেথডের জন্য ডেটা স্টোরেজ থেকে রিড করতে হয়, তাই এটি খুব কম ব্যবহার করা উচিত। বর্তমান কনফিগারেশন জানার প্রয়োজন হলেই এই পদ্ধতি কল করবেন না। পরিবর্তে, আপনার অ্যাপ শুরু বা আবার চালু করার সময় আপনাকে এটি একবার কল করতে হবে এবং ফেচ করা ম্যানেজ করা কনফিগারেশন বান্ডেল ক্যাশে করতে হবে। তারপর, ম্যানেজ করা কনফিগারেশন পরিবর্তনের জন্য শুনুন-এ যেমন বর্ণনা করা হয়েছে, আপনার অ্যাপ অ্যাক্টিভ থাকার সময় কনফিগারেশন পরিবর্তন হয়েছে কিনা তা জানতে ACTION_APPLICATION_RESTRICTIONS_CHANGED ইনটেন্টের জন্য শুনুন।

ম্যানেজ করা কনফিগারেশন পড়া ও প্রয়োগ করা

getApplicationRestrictions() পদ্ধতিটি একটি Bundle ফেরত দেয় যাতে সেট করা প্রতিটি কনফিগারেশনের জন্য একটি কী-ভ্যালু পেয়ার থাকে। সব ভ্যালু Boolean, int, String ও String[] ধরনের। আপনার কাছে ম্যানেজ করা কনফিগারেশন Bundle থাকলে, আপনি সেইসব ডেটার ধরনের জন্য স্ট্যান্ডার্ড Bundle পদ্ধতির মাধ্যমে বর্তমান কনফিগারেশন সেটিংস চেক করতে পারবেন, যেমন getBoolean() বা getString()।

মনে রাখবেন: ম্যানেজ করা কনফিগারেশন Bundle প্রতিটি কনফিগারেশনের জন্য একটি আইটেম থাকে যা ম্যানেজ করা কনফিগারেশন প্রদানকারী স্পষ্টভাবে সেট করে। তবে, আপনি ধরে নিতে পারবেন না যে ম্যানেজ করা কনফিগারেশন XML ফাইলে ডিফল্ট ভ্যালু নির্ধারণ করেছেন বলেই বান্ডেলে কনফিগারেশন থাকবে।

বর্তমান ম্যানেজ করা কনফিগারেশন সেটিংসের উপর ভিত্তি করে উপযুক্ত অ্যাকশন নেওয়া আপনার অ্যাপের উপর নির্ভর করে। যেমন, আপনার অ্যাপে যদি এমন কোনও কনফিগারেশন থাকে যা মোবাইল কানেকশনের মাধ্যমে ডেটা ডাউনলোড করতে পারে কিনা তা নির্দিষ্ট করে এবং আপনি যদি দেখেন যে কনফিগারেশনটি false-এ সেট করা আছে, তাহলে ডিভাইসে ওয়াই-ফাই কানেকশন না থাকলে আপনাকে ডেটা ডাউনলোড করার সুবিধা বন্ধ করতে হবে, যেমনটি নিম্নলিখিত উদাহরণ কোডে দেখানো হয়েছে:

Kotlin

val appCanUseCellular: Boolean =
        if (appRestrictions.containsKey("downloadOnCellular")) {
            appRestrictions.getBoolean("downloadOnCellular")
        } else {
            // cellularDefault is a boolean using the restriction's default value
            cellularDefault
        }

if (!appCanUseCellular) {
    // ...turn off app's cellular-download functionality
    // ...show appropriate notices to user
}

জাভা

boolean appCanUseCellular;

if (appRestrictions.containsKey("downloadOnCellular")) {
    appCanUseCellular = appRestrictions.getBoolean("downloadOnCellular");
} else {
    // cellularDefault is a boolean using the restriction's default value
    appCanUseCellular = cellularDefault;
}

if (!appCanUseCellular) {
    // ...turn off app's cellular-download functionality
    // ...show appropriate notices to user
}

একাধিক নেস্টেড বিধিনিষেধ প্রয়োগ করতে, bundle_array বিধিনিষেধ এন্ট্রিকে Parcelable অবজেক্টের কালেকশন হিসেবে পড়ুন এবং Bundle হিসেবে কাস্ট করুন। এই উদাহরণে, প্রতিটি VPN-এর কনফিগারেশন ডেটা পার্স করা হয় এবং সার্ভার কানেকশন সংক্রান্ত পছন্দের তালিকা তৈরি করতে ব্যবহার করা হয়:

Kotlin

// VpnConfig is a sample class used store config data, not defined
val vpnConfigs = mutableListOf<VpnConfig>()

val parcelables: Array<out Parcelable>? =
        appRestrictions.getParcelableArray("vpn_configuration_list")

if (parcelables?.isNotEmpty() == true) {
    // iterate parcelables and cast as bundle
    parcelables.map { it as Bundle }.forEach { vpnConfigBundle ->
        // parse bundle data and store in VpnConfig array
        vpnConfigs.add(VpnConfig()
                .setServer(vpnConfigBundle.getString("vpn_server"))
                .setUsername(vpnConfigBundle.getString("vpn_username"))
                .setPassword(vpnConfigBundle.getString("vpn_password")))
    }
}

if (vpnConfigs.isNotEmpty()) {
    // ...choose a VPN configuration or prompt user to select from list
}

জাভা

// VpnConfig is a sample class used store config data, not defined
List<VpnConfig> vpnConfigs = new ArrayList<>();

Parcelable[] parcelables =
    appRestrictions.getParcelableArray("vpn_configuration_list");

if (parcelables != null && parcelables.length > 0) {
    // iterate parcelables and cast as bundle
    for (int i = 0; i < parcelables.length; i++) {
        Bundle vpnConfigBundle = (Bundle) parcelables[i];
        // parse bundle data and store in VpnConfig array
        vpnConfigs.add(new VpnConfig()
            .setServer(vpnConfigBundle.getString("vpn_server"))
            .setUsername(vpnConfigBundle.getString("vpn_username"))
            .setPassword(vpnConfigBundle.getString("vpn_password")));
    }
}

if (!vpnConfigs.isEmpty()) {
    // ...choose a VPN configuration or prompt user to select from list
}

ম্যানেজ করা কনফিগারেশন সংক্রান্ত পরিবর্তন শুনুন

কোনও অ্যাপের ম্যানেজ করা কনফিগারেশন পরিবর্তন করা হলে, সিস্টেম ACTION_APPLICATION_RESTRICTIONS_CHANGED ইনটেন্ট ফায়ার করে। আপনার অ্যাপকে এই ইনটেন্ট শুনতে হবে যাতে কনফিগারেশন সেটিংস পরিবর্তন হলে আপনি অ্যাপের আচরণ পরিবর্তন করতে পারেন।

মনে রাখবেন: ACTION_APPLICATION_RESTRICTIONS_CHANGED ইনটেন্ট শুধুমাত্র ডায়নামিকভাবে রেজিস্টার করা লিসেনারদের পাঠানো হয়, অ্যাপ ম্যানিফেস্টে ঘোষিত লিসেনারদের নয়।

নিম্নলিখিত কোড থেকে বোঝা যায় যে কীভাবে এই ইনটেন্টের জন্য ডায়নামিকভাবে সম্প্রচার রিসিভার রেজিস্টার করতে হয়:

Kotlin

val restrictionsFilter = IntentFilter(Intent.ACTION_APPLICATION_RESTRICTIONS_CHANGED)

val restrictionsReceiver = object : BroadcastReceiver() {
    override fun onReceive(context: Context, intent: Intent) {

        // Get the current configuration bundle
        val appRestrictions = myRestrictionsMgr.applicationRestrictions

        // Check current configuration settings, change your app's UI and
        // functionality as necessary.
    }
}

registerReceiver(restrictionsReceiver, restrictionsFilter)

জাভা

IntentFilter restrictionsFilter =
    new IntentFilter(Intent.ACTION_APPLICATION_RESTRICTIONS_CHANGED);

BroadcastReceiver restrictionsReceiver = new BroadcastReceiver() {
  @Override public void onReceive(Context context, Intent intent) {

    // Get the current configuration bundle
    Bundle appRestrictions = myRestrictionsMgr.getApplicationRestrictions();

    // Check current configuration settings, change your app's UI and
    // functionality as necessary.
  }
};

registerReceiver(restrictionsReceiver, restrictionsFilter);

মনে রাখবেন: সাধারণত, আপনার অ্যাপ পজ করা থাকলে, কনফিগারেশন পরিবর্তন সম্পর্কে বিজ্ঞপ্তি পাঠানোর প্রয়োজন হয় না। পরিবর্তে, অ্যাপ পজ করা থাকলে আপনার ব্রডকাস্ট রিসিভার আনরেজিস্টার করা উচিত। অ্যাপ আবার চালু হলে, আপনি প্রথমে বর্তমান ম্যানেজ করা কনফিগারেশন চেক করুন (যেমন ম্যানেজ করা কনফিগারেশন চেক করুন বিভাগে আলোচনা করা হয়েছে), তারপর আপনার ব্রডকাস্ট রিসিভার রেজিস্টার করুন যাতে অ্যাপ অ্যাক্টিভ থাকাকালীন কনফিগারেশনে কোনও পরিবর্তন হলে আপনি বিজ্ঞপ্তি পান।

EMM-এ ম্যানেজ করা কনফিগারেশন সংক্রান্ত মতামত পাঠান

আপনার অ্যাপে ম্যানেজ করা কনফিগারেশন পরিবর্তন করার পরে, পরিবর্তনের স্ট্যাটাস সম্পর্কে EMM-কে জানানো সবচেয়ে ভালো পদ্ধতি। Android-এ কীড অ্যাপ স্টেট নামক একটি ফিচার আছে, যার সাহায্যে আপনার অ্যাপ যখনই ম্যানেজ করা কনফিগারেশন পরিবর্তন প্রয়োগ করার চেষ্টা করে, তখনই আপনি মতামত পাঠাতে পারবেন। এই মতামত আপনার অ্যাপ ম্যানেজ করা কনফিগারেশন সফলভাবে সেট করেছে কিনা তা নিশ্চিত করতে পারে অথবা আপনার অ্যাপ নির্দিষ্ট পরিবর্তনগুলি প্রয়োগ করতে ব্যর্থ হলে একটি ত্রুটি মেসেজ অন্তর্ভুক্ত করতে পারে।

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

অতিরিক্ত কোড স্যাম্পেল

ManagedConfigurations স্যাম্পেল এই পৃষ্ঠায় কভার করা API-এর ব্যবহার আরও ভালভাবে দেখায়।

ব্যক্তিগত প্রোফাইলে অ্যাপ সাদা তালিকাভুক্ত/ব্লকলিস্ট করা

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