বিদ্যমান ডিভাইসগুলিকে AMAPI-তে স্থানান্তর করুন৷

আপনার কাস্টম ডিপিসি (DPC) দ্বারা ইতিমধ্যে পরিচালিত ডিভাইসগুলিকে অ্যান্ড্রয়েড ডিভাইস পলিসি (ADP)-তে মাইগ্রেট করা যেতে পারে এবং অ্যান্ড্রয়েড ম্যানেজমেন্ট এপিআই (API)-এর সুবিধা গ্রহণ করা যেতে পারে।

পূর্বশর্ত

  • ডিভাইসটি ইতিমধ্যেই আপনার EMM দ্বারা একটি কাস্টম DPC-এর মাধ্যমে পরিচালিত হচ্ছে।
  • আপনার কাস্টম ডিপিসি AMAPI SDK-এর সাথে সমন্বিত করা হয়েছে।
  • ডিভাইসটি গুগল প্লে ইএমএম এপিআই (Google Play EMM API)- এর সাথে নথিভুক্ত করা হয়েছে।
  • ডিভাইসটি একটি পরিচালিত গুগল প্লে অ্যাকাউন্টস এন্টারপ্রাইজের অন্তর্গত।
  • ডিভাইসটি অ্যান্ড্রয়েড ৯ বা তার পরবর্তী সংস্করণে চলে।
  • কোম্পানির মালিকানাধীন ডিভাইসে কাজের প্রোফাইল ব্যবহারের ক্ষেত্রে, ডিভাইসটিতে অবশ্যই অ্যান্ড্রয়েড ১১ বা তার পরবর্তী সংস্করণ চলতে হবে।

আপনার কাস্টম ডিপিসিতে AMAPI SDK-এর সাথে একীভূত করুন

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

ডিভাইস স্থানান্তরের ধাপসমূহ

  1. AMAPI-তে স্থানান্তরিত হওয়ার পর ডিভাইসটির ব্যবহারের জন্য একটি পলিসি সেট আপ করুন। সর্বোত্তম ব্যবহারকারীর অভিজ্ঞতার জন্য, এটি আপনার DPC দ্বারা ডিভাইসে ইতিমধ্যে প্রয়োগ করা পলিসির সমতুল্য হওয়া উচিত। AMAPI-এর পলিসিটি অবশ্যই সেই একই এন্টারপ্রাইজের অন্তর্ভুক্ত হতে হবে, যেটির অধীনে ডিভাইসটি ইতিমধ্যেই Play EMM API-তে রয়েছে। মনে রাখবেন যে, একটি নির্দিষ্ট এন্টারপ্রাইজের নাম AMAPI এবং Play EMM API উভয় ক্ষেত্রেই একই থাকে।
  2. enterprises.migrationTokens.create কল করে ডিভাইসটির জন্য একটি মাইগ্রেশন টোকেন তৈরি করুন।
  3. এই মাইগ্রেশন টোকেনের value আপনার কাস্টম ডিপিসি-তে পাঠান।
  4. Play EMM API ব্যবহার করে ডিভাইসে Android Device Policy ইনস্টল করা আছে কিনা তা নিশ্চিত করুন।
  5. DpcMigrationClientFactory ব্যবহার করে একটি DpcMigrationClient তৈরি করুন।
  6. DpcMigrationClient এ, migrateDeviceManagementToAndroidManagementApi মেথডটি কল করুন। এর মাধ্যমে মাইগ্রেশন সম্পন্ন হবে।
  7. deviceState পরিবর্তিত হয়ে ACTIVE হবে এবং আপনি Pub/Sub চ্যানেলের মাধ্যমে একটি STATUS_REPORT বার্তা পাবেন।

মাইগ্রেশন সম্পন্ন হলে কলিং অ্যাপটি তার ডিভাইস ওনার (Device Owner) বা প্রোফাইল ওনার (Profile Owner) অধিকার হারায়, কারণ এই অধিকারগুলো অ্যান্ড্রয়েড ডিভাইস পলিসিতে (Android Device Policy) স্থানান্তরিত হয়। এই প্রক্রিয়াটি নিম্নলিখিত সিকোয়েন্স ডায়াগ্রামের মাধ্যমে উপস্থাপন করা যেতে পারে:

ডিপিসি মাইগ্রেশন সিকোয়েন্স ডায়াগ্রাম

দ্রষ্টব্য: মাইগ্রেশন শুরু করার জন্য ডিভাইসটি অবশ্যই ইন্টারনেটের সাথে সংযুক্ত থাকতে হবে। মাইগ্রেশন প্রক্রিয়া চলাকালীন নেটওয়ার্ক সংযোগ বিচ্ছিন্ন হলেও যাতে কাজ না করে, সেইভাবেই এই প্রক্রিয়াটি ডিজাইন করা হয়েছে, যাতে আপনার ডিপিসি (DPC) থেকে অ্যান্ড্রয়েড ডিভাইস পলিসিতে (Android Device Policy) ডিভাইস মালিক বা প্রোফাইল মালিকের অধিকার প্রকৃত অর্থে স্থানান্তরিত হওয়ার আগেই নেটওয়ার্ক সংযোগের প্রয়োজন হয় এমন মূল কাজগুলো সম্পন্ন হয়ে যায়।

মাইগ্রেশন টোকেন

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

কাস্টম ডিপিসি ইন্টিগ্রেশন

প্রথমে আপনাকে একটি DpcMigrationRequest তৈরি করতে হবে এবং এর বিল্ডারে টোকেন ও প্রয়োজন হলে কনফিগার করা ওয়াই-ফাই নেটওয়ার্কগুলোর তালিকা পাঠাতে হবে:

// Create a DpcMigrationRequest
DpcMigrationRequest request =
        DpcMigrationRequest.builder()
            .setMigrationToken(token)
            .build();

তারপরে আপনি একটি DpcMigrationClient পেতে পারেন এবং migrateDeviceManagementToAndroidManagementApi দিয়ে মাইগ্রেশন প্রক্রিয়া শুরু করতে পারেন:

// Create a DpcMigrationClient
DpcMigrationClient dpcMigrationClient = DpcMigrationClientFactory.create(context);
try {
  // Use helper function to retrieve Admin component name
  var adminComponentName = getAdminComponent(context);

  ListenableFuture<DpcMigrationAttempt> futureAttempt =
          dpcMigrationClient.migrateDeviceManagementToAndroidManagementApi(
              new ComponentName(context, DpcMigrationNotificationReceiver.class),
              adminComponentName,
              request);
  // handle futureAttempt
} catch (RuntimeException e) {
  // send failure feedback: "Error: " + e
}

একটি NotificationReceiverService সেট আপ করা এবং মাইগ্রেশন ট্র্যাক করা

আপনার কাস্টম ডিপিসি-তে একটি NotificationReceiverService প্রয়োগ করুন।

ডিভাইসে একটি DpcMigrationAttempt এর মাধ্যমে মাইগ্রেশন প্রক্রিয়াটি ট্র্যাক করা হয়।

আপনি migrateDeviceManagementToAndroidManagementApi দ্বারা ফেরত আসা মানটি সরাসরি ব্যবহার করতে পারেন, অথবা মাইগ্রেশন প্রচেষ্টাগুলো পেতে ও তালিকাভুক্ত করতে getMigrationAttempt এবং listMigrationAttempts পদ্ধতিগুলো ব্যবহার করতে পারেন।

// Passing an empty name, we retrieve the last attempt
var request = GetDpcMigrationAttemptRequest.builder().build();

var attempt = client.getMigrationAttempt(request);

আপনি চাইলে আপনার NotificationReceiverService ব্যবহার করে একটি DpcMigrationListener সেট আপ করতে পারেন, যা DpcMigrationAttempt এর স্ট্যাটাস আপডেট শুনবে।

// DpcMigrationNotificationReceiver for callback handling
public class DpcMigrationNotificationReceiver extends NotificationReceiverService
    implements DpcMigrationListener {

  @Override
  protected DpcMigrationListener getDpcMigrationListener() {
    return this;
  }

  @Override
  public void onMigrationStateChanged(DpcMigrationAttempt migrationAttempt) {
    // send success feedback
  }
}

ওয়াই-ফাই নেটওয়ার্ক পরিচালনা করুন

কাস্টম ডিপিসি দ্বারা পরিচালিত ওয়াই-ফাই নেটওয়ার্ক থাকলে, AMAPI-এর সেগুলোকে নির্বিঘ্নে পরিচালনা শুরু করার জন্য AMAPI ONC পলিসিকে অবশ্যই সেই নেটওয়ার্কগুলোর কনফিগারেশনের সাথে মিলতে হবে। ম্যানেজমেন্ট মোডের উপর নির্ভর করে ডিপিসি মাইগ্রেশনের সাথে ওয়াই-ফাই ম্যানেজমেন্টের মিথস্ক্রিয়া ভিন্ন হয়।

কোম্পানির মালিকানাধীন ডিভাইসগুলিতে সম্পূর্ণরূপে পরিচালিত ডিভাইস এবং কাজের প্রোফাইল

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

ব্যক্তিগত ডিভাইসে কাজের প্রোফাইল

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

কিছু বিষয় মনে রাখতে হবে:

  • সক্রিয় নেটওয়ার্কটি যদি কাস্টম ডিপিসি দ্বারা কনফিগার করা কোনো ওয়াই-ফাই নেটওয়ার্ক হয়, তাহলে মাইগ্রেশনের সময় ডিভাইসটি কিছু সময়ের জন্য অফলাইন থাকতে পারে।
  • DpcMigrationRequest এ শুধুমাত্র কাস্টম DPC দ্বারা কনফিগার করা Wi-Fi নেটওয়ার্কগুলোই পাস করা উচিত, অন্যথায় যদি AMAPI SDK দ্বারা কোনো নেটওয়ার্ক সরানো না যায় (যেমন ব্যবহারকারী দ্বারা যোগ করা Wi-Fi নেটওয়ার্ক), তাহলে মাইগ্রেশন ব্যর্থ হবে।
  • DpcMigrationRequest এ ওয়াই-ফাই নেটওয়ার্ক শুধুমাত্র তখনই পাস করা উচিত যখন কাস্টম DPC কোনো ব্যক্তিগত মালিকানাধীন ডিভাইসের প্রোফাইল মালিক হয়, অন্যথায় মাইগ্রেশন ব্যর্থ হয়।
  • প্রযুক্তিগত কারণে, অ্যান্ড্রয়েড ১২ একটি ব্যতিক্রমী ক্ষেত্র, যেখানে DpcMigrationRequest এ পাঠানো নেটওয়ার্কগুলো উপেক্ষা করা হয় এবং কাস্টম DPC দ্বারা কনফিগার করা সমস্ত ওয়াই-ফাই নেটওয়ার্ক স্বয়ংক্রিয়ভাবে মুছে ফেলা হয়। অধিকন্তু, ব্যক্তিগত মালিকানাধীন ডিভাইসগুলোর ওয়ার্ক প্রোফাইলের জন্য অ্যান্ড্রয়েড ১২-এ কাস্টম DPC-এর ACCESS_WIFI_STATE পারমিশন থাকা আবশ্যক, অন্যথায় মাইগ্রেশন ব্যর্থ হয়।

সতর্কতা

এই বৈশিষ্ট্যটি সম্পর্কিত কিছু সীমাবদ্ধতা নিচে দেওয়া হলো।

এন্টারপ্রাইজ-নির্দিষ্ট আইডি

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

সম্পূর্ণরূপে পরিচালিত ডিভাইসগুলিতে কাজের প্রোফাইল

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

RESET_PASSWORD কমান্ড

যদি ডিভাইসটিতে লক স্ক্রিন পাসওয়ার্ড থাকে, তাহলে মাইগ্রেশনের পরে ব্যবহারকারী তার ক্রেডেনশিয়াল (যেমন পিন পুনরায় প্রবেশ করিয়ে) নিশ্চিত করার পরেই RESET_PASSWORD কমান্ডটি সফল হবে। যদি ডিভাইসটিতে কোনো লক স্ক্রিন পাসওয়ার্ড না থাকে, তাহলে মাইগ্রেশনের ঠিক পরেই RESET_PASSWORD কমান্ডটি ব্যবহার করা যেতে পারে।