আপনি যদি এন্টারপ্রাইজ মার্কেটের জন্য অ্যাপস ডেভেলপ করেন, তাহলে আপনাকে একটি প্রতিষ্ঠানের নীতি দ্বারা নির্ধারিত নির্দিষ্ট প্রয়োজনীয়তাগুলি পূরণ করতে হতে পারে। ম্যানেজড কনফিগারেশন, যা আগে অ্যাপ্লিকেশান সীমাবদ্ধতা নামে পরিচিত ছিল, সংস্থার আইটি অ্যাডমিনকে অ্যাপগুলির জন্য দূরবর্তীভাবে সেটিংস নির্দিষ্ট করার অনুমতি দেয়৷ এই ক্ষমতাটি বিশেষভাবে কাজের প্রোফাইলে স্থাপন করা প্রতিষ্ঠান-অনুমোদিত অ্যাপের জন্য উপযোগী।
উদাহরণ স্বরূপ, একটি প্রতিষ্ঠানের প্রয়োজন হতে পারে যে অনুমোদিত অ্যাপগুলি আইটি অ্যাডমিনকে অনুমতি দেয়:
- একটি ওয়েব ব্রাউজারের জন্য URL গুলিকে অনুমতি দিন বা ব্লক করুন৷
- কনফিগার করুন যে একটি অ্যাপকে সেলুলারের মাধ্যমে বা শুধুমাত্র Wi-Fi এর মাধ্যমে সামগ্রী সিঙ্ক করার অনুমতি দেওয়া হয়েছে
- অ্যাপের ইমেল সেটিংস কনফিগার করুন
এই নির্দেশিকাটি দেখায় কিভাবে আপনার অ্যাপে পরিচালিত কনফিগারেশন সেটিংস প্রয়োগ করতে হয়। একটি পরিচালিত কনফিগারেশন সহ নমুনা অ্যাপ্লিকেশন দেখতে, পরিচালিত কনফিগারেশন দেখুন। আপনি যদি একজন এন্টারপ্রাইজ মোবিলিটি ম্যানেজমেন্ট (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
একটি স্থানীয় রিসোর্স ফাইল থেকে আঁকতে হবে, যেমনটি Localizing with Resources- এ বর্ণিত হয়েছে।
একটি অ্যাপ একটি 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
উপাদানের জন্য সমর্থিত প্রকারগুলি সারণি 1 এ তালিকাভুক্ত করা হয়েছে এবং 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 স্তর 23) এ উপলব্ধ। |
দ্রষ্টব্য: android:entryValues
মেশিন পাঠযোগ্য এবং স্থানীয়করণ করা যাবে না। লোকালাইজ করা যেতে পারে এমন মানব-পাঠযোগ্য মানগুলি উপস্থাপন করতে android:entries
ব্যবহার করুন। প্রতিটি এন্ট্রির অবশ্যই android:entryValues
এ একটি সংশ্লিষ্ট সূচক থাকতে হবে।
পরিচালিত কনফিগারেশন চেক করুন
অন্যান্য অ্যাপ তার কনফিগারেশন সেটিংস পরিবর্তন করলে আপনার অ্যাপ স্বয়ংক্রিয়ভাবে সূচিত হয় না। পরিবর্তে, আপনার অ্যাপটি শুরু হলে বা পুনরায় চালু হলে পরিচালিত কনফিগারেশনগুলি কী তা আপনাকে পরীক্ষা করতে হবে এবং আপনার অ্যাপ চলাকালীন কনফিগারেশনগুলি পরিবর্তন হয় কিনা তা খুঁজে বের করার জন্য একটি সিস্টেমের অভিপ্রায় শুনতে হবে।
বর্তমান কনফিগারেশন সেটিংস খুঁজে বের করতে, আপনার অ্যাপ একটি RestrictionsManager
অবজেক্ট ব্যবহার করে। নিম্নলিখিত সময়ে আপনার অ্যাপের বর্তমান পরিচালিত কনফিগারেশনগুলি পরীক্ষা করা উচিত:
- যখন অ্যাপটি শুরু হয় বা পুনরায় চালু হয়, তখন তার
onResume()
পদ্ধতিতে - যখন অ্যাপটিকে একটি কনফিগারেশন পরিবর্তন সম্পর্কে অবহিত করা হয়, যেমনটি লিসেন ফর ম্যানেজড কনফিগারেশন পরিবর্তনে বর্ণিত হয়েছে
একটি RestrictionsManager
অবজেক্ট পেতে, getActivity()
দিয়ে বর্তমান কার্যকলাপটি পান, তারপর সেই কার্যকলাপের Activity.getSystemService()
পদ্ধতিতে কল করুন:
কোটলিন
var myRestrictionsMgr = activity?.getSystemService(Context.RESTRICTIONS_SERVICE) as RestrictionsManager
জাভা
RestrictionsManager myRestrictionsMgr = (RestrictionsManager) getActivity() .getSystemService(Context.RESTRICTIONS_SERVICE);
একবার আপনার একটি RestrictionsManager
থাকলে, আপনি এর getApplicationRestrictions()
পদ্ধতিতে কল করে বর্তমান কনফিগারেশন সেটিংস পেতে পারেন:
কোটলিন
var appRestrictions: Bundle = myRestrictionsMgr.applicationRestrictions
জাভা
Bundle appRestrictions = myRestrictionsMgr.getApplicationRestrictions();
দ্রষ্টব্য: সুবিধার জন্য, আপনি UserManager.getApplicationRestrictions()
এ কল করে একটি UserManager
এর সাথে বর্তমান কনফিগারেশনও আনতে পারেন। এই পদ্ধতিটি RestrictionsManager.getApplicationRestrictions()
এর মতোই আচরণ করে।
getApplicationRestrictions()
পদ্ধতিতে ডেটা স্টোরেজ থেকে পড়া প্রয়োজন, তাই এটি অল্প সময়ের মধ্যে করা উচিত। প্রতিবার বর্তমান কনফিগারেশন জানতে হলে এই পদ্ধতিতে কল করবেন না। পরিবর্তে, আপনার অ্যাপটি শুরু হলে বা পুনরায় চালু হলে একবার কল করা উচিত এবং আনা পরিচালিত কনফিগারেশন বান্ডিলটি ক্যাশে করা উচিত। তারপর ACTION_APPLICATION_RESTRICTIONS_CHANGED
অভিপ্রায় শুনুন যাতে আপনার অ্যাপ সক্রিয় থাকাকালীন কনফিগারেশন পরিবর্তন হয় কিনা, যেমনটি Listen for Managed Configuration Changes- এ বর্ণিত আছে।
পরিচালিত কনফিগারেশন পড়া এবং প্রয়োগ করা
getApplicationRestrictions()
পদ্ধতি সেট করা প্রতিটি কনফিগারেশনের জন্য একটি কী-মান জোড়া সমন্বিত একটি Bundle
প্রদান করে। মানগুলি হল Boolean
, int
, String
, এবং String[]
টাইপ। একবার আপনার পরিচালিত কনফিগারেশন Bundle
হয়ে গেলে, আপনি সেই ডেটা প্রকারের জন্য স্ট্যান্ডার্ড Bundle
পদ্ধতিগুলির সাথে বর্তমান কনফিগারেশন সেটিংস পরীক্ষা করতে পারেন, যেমন getBoolean()
বা getString()
।
দ্রষ্টব্য: পরিচালিত কনফিগারেশন Bundle
প্রতিটি কনফিগারেশনের জন্য একটি আইটেম রয়েছে যা একটি পরিচালিত কনফিগারেশন প্রদানকারী দ্বারা স্পষ্টভাবে সেট করা হয়েছে। যাইহোক, আপনি অনুমান করতে পারবেন না যে একটি কনফিগারেশন বান্ডিলে উপস্থিত থাকবে কারণ আপনি পরিচালিত কনফিগারেশন XML ফাইলে একটি ডিফল্ট মান সংজ্ঞায়িত করেছেন।
বর্তমান পরিচালিত কনফিগারেশন সেটিংসের উপর ভিত্তি করে উপযুক্ত পদক্ষেপ নেওয়া আপনার অ্যাপের উপর নির্ভর করে। উদাহরণস্বরূপ, যদি আপনার অ্যাপের একটি কনফিগারেশন থাকে যা নির্দিষ্ট করে যে এটি একটি সেলুলার সংযোগের মাধ্যমে ডেটা ডাউনলোড করতে পারে এবং আপনি দেখতে পান যে কনফিগারেশনটি false
সেট করা আছে, তবে ডিভাইসটির Wi-Fi সংযোগ থাকা ব্যতীত আপনাকে ডেটা ডাউনলোড অক্ষম করতে হবে। নিম্নলিখিত উদাহরণ কোড দেখানো হয়েছে:
কোটলিন
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 }
একাধিক নেস্টেড সীমাবদ্ধতা প্রয়োগ করতে, Parcelable
বস্তুর সংগ্রহ হিসাবে bundle_array
সীমাবদ্ধতা এন্ট্রি পড়ুন এবং একটি Bundle
হিসাবে কাস্ট করুন। এই উদাহরণে, প্রতিটি VPN এর কনফিগারেশন ডেটা পার্স করা হয় এবং সার্ভার সংযোগ পছন্দগুলির একটি তালিকা তৈরি করতে ব্যবহৃত হয়:
কোটলিন
// 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
অভিপ্রায়টি কেবলমাত্র গতিশীলভাবে নিবন্ধিত শ্রোতাদের কাছে পাঠানো হয়, অ্যাপ ম্যানিফেস্টে ঘোষণা করা শ্রোতাদের নয় ।
নিম্নলিখিত কোড দেখায় কিভাবে গতিশীলভাবে এই অভিপ্রায়ের জন্য একটি সম্প্রচার রিসিভার নিবন্ধন করতে হয়:
কোটলিন
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 প্রদানকারীরা এই প্রতিক্রিয়াটি পুনরুদ্ধার করতে এবং IT অ্যাডমিনদের দেখার জন্য তাদের কনসোলে এটি প্রদর্শন করতে সক্ষম। আপনার অ্যাপে কীভাবে প্রতিক্রিয়া সমর্থন যোগ করতে হয় তার বিস্তারিত নির্দেশিকা সহ এই বিষয়ে আরও তথ্যের জন্য EMM-কে অ্যাপ প্রতিক্রিয়া পাঠান দেখুন।
অতিরিক্ত কোড নমুনা
ManagedConfigurations নমুনা এই পৃষ্ঠায় কভার করা API-এর ব্যবহার আরও প্রদর্শন করে।