ব্যবহারকারী অ্যাকাউন্ট বাস্তবায়ন

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

একসময় ম্যানেজড গুগল প্লে অ্যাকাউন্টই প্রচলিত ছিল। তবে, গুগল এখন সমস্ত নতুন ডেভেলপমেন্টের জন্য উন্নত এনরোলমেন্ট প্রক্রিয়া ব্যবহার করতে উৎসাহিত করে, যা ডিফল্টভাবে ম্যানেজড গুগল অ্যাকাউন্ট তৈরি করে।

প্রাসঙ্গিকতার জন্য এই নথির শেষে পুরোনো বাস্তবায়নের নির্দেশিকা দেওয়া হলেও, সমস্ত নতুন উন্নয়নের ক্ষেত্রে এখানে বিস্তারিতভাবে বর্ণিত নতুন তালিকাভুক্তি প্রক্রিয়াটি অনুসরণ করা উচিত।

সংক্ষিপ্ত বিবরণ

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

AMAPI SDK সরাসরি ডিভাইসে অ্যান্ড্রয়েড ডিভাইস পলিসির সাথে ইন্টারঅ্যাক্ট করার জন্য প্রয়োজনীয় API প্রদান করে। সার্ভার সাইডে, এন্টারপ্রাইজ মোবিলিটি ম্যানেজমেন্ট (EMM) সলিউশনগুলো ডিভাইস এনরোলমেন্ট প্রক্রিয়া শুরু করার জন্য প্রয়োজনীয় এনরোলমেন্ট টোকেন তৈরি করতে Play EMM API ব্যবহার করবে।

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

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

এপিআই ইন্টিগ্রেশন

শুরু করার আগে, যাচাই করে নিন যে আপনি প্লে ইএমএম এপিআই ক্লায়েন্ট এবং এএমএপিআই এসডিকে-এর সর্বশেষ সংস্করণ ব্যবহার করছেন।

তালিকাভুক্তি বাস্তবায়ন নির্দেশিকা

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

পরিবেশ প্রস্তুত করুন

অ্যাকাউন্ট সেটআপ শুরু করার আগে, ডিভাইসের পরিবেশ প্রস্তুত করা আবশ্যক। এই প্রস্তুতির মধ্যে রয়েছে প্লে স্টোরকে তার সর্বশেষ সংস্করণে আপডেট করা এবং ডিভাইসে অ্যান্ড্রয়েড ডিভাইস পলিসি ( com.google.android.apps.work.clouddpc ) সাইলেন্টলি ইনস্টল করা। অ্যান্ড্রয়েড ডিভাইস পলিসি ইনস্টলেশন অপরিহার্য, কারণ এটি অ্যাকাউন্ট সেটআপ প্রক্রিয়ার গুরুত্বপূর্ণ উপাদানগুলো ধারণ করে। EMM-দের ম্যানুয়ালি পরিবেশ প্রস্তুত করার প্রয়োজন নেই। পরিবর্তে, তাদের EnvironmentClient ব্যবহার করা উচিত, যেমনটি এখানে নথিভুক্ত করা হয়েছে এবং প্রদত্ত কোড উদাহরণগুলো অনুসরণ করা উচিত।

নমুনা কোড

ডিভাইসে ওয়ার্ক অ্যাকাউন্ট যোগ করার জন্য AccountSetup API ব্যবহার করার আগে, DPC-কে প্রথমে যাচাই করতে হবে যে ডিভাইসের পরিবেশ প্রস্তুত আছে।

  • EnvironmentClientFactory ব্যবহার করে একটি EnvironmentClient ইনস্ট্যানশিয়েট করুন এবং prepareEnvironment বা prepareEnvironmentAsync কল করুন।

    val notificationReceiverServiceName = ComponentName(context,
    NotificationReceiver::class.java)
    
    // An EMM should implement android.app.admin.DeviceAdminReceiver and use that
    // class to instantiate a ComponentName
    
    val admin = ComponentName(this, com.example.dpc.DeviceAdminReceiver::class.java)
    
    EnvironmentClientFactory.create(context)
        .prepareEnvironment(
            PrepareEnvironmentRequest.builder()
                .setRoles(
                    listOf(
                        Role.builder().setRoleType(
                            Role.RoleType.DEVICE_POLICY_CONTROLLER
                        ).build()
                    )
                )
        .setAdmin(admin)
                .build(),
              notificationReceiverServiceName,
            )
    
    [Proceed with AccountSetup]
    
    

এই প্রক্রিয়াটি সম্পন্ন হতে কয়েক সেকেন্ড বা মিনিট সময় লাগতে পারে, কারণ একটি সঠিক কার্যকরী পরিবেশ যাচাই করার জন্য অ্যাপ্লিকেশন ইনস্টল বা আপডেট করা হতে পারে। গুগল পরামর্শ দেয় যে, এই প্রক্রিয়াটি যত তাড়াতাড়ি সম্ভব ব্যাকগ্রাউন্ডে শুরু করা হোক এবং ব্যবহারকারী অপেক্ষা করার সময় উপযুক্ত UI দেখানো হোক। প্রক্রিয়াটি সম্পন্ন হলে, DPC-এর AccountSetup API ব্যবহারের জন্য ডিভাইসটি প্রস্তুত হয়ে যায়।

তালিকাভুক্তি প্রবাহ

সকল ডিভাইসের জন্য EMM-কে অবশ্যই users.generateAuthenticationToken() এবং users.insert() ব্যবহার করা বন্ধ করতে হবে। এর পরিবর্তে, এন্ড-ইউজার অথেন্টিকেশন সম্পন্ন করার জন্য EMM-কে অবশ্যই অন-ডিভাইস API কল করতে হবে। নতুন API-টি DPC-কে userId এবং email ফেরত দেবে। যদি Google ব্যবহারকারীকে অথেন্টিকেট করতে না পারে, তাহলে একটি ম্যানেজড গুগল প্লে অ্যাকাউন্ট তৈরি করে ডিভাইসে যুক্ত করা হবে। এক্ষেত্রে, Google সেই অ্যাকাউন্টের userId ফেরত দেবে।

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

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

পূর্ববর্তী এপিআইগুলির সাথে সাধারণ ডিপিসি ইন্টিগ্রেশন
চিত্র ১. পূর্ববর্তী এপিআইগুলোর সাথে ডিপিসি-র সাধারণ একীকরণ
ব্যবহারকারীবিহীন ডিভাইসগুলির জন্য নতুন এপিআই সহ ডিপিসি ইন্টিগ্রেশনের উদাহরণ
চিত্র ২. ব্যবহারকারীবিহীন ডিভাইসগুলির জন্য নতুন এপিআই সহ ডিপিসি ইন্টিগ্রেশনের উদাহরণ
ব্যবহারকারীর ডিভাইসগুলির জন্য নতুন এপিআই সহ ডিপিসি ইন্টিগ্রেশনের উদাহরণ
চিত্র ৩. ব্যবহারকারীর ডিভাইসগুলির জন্য নতুন এপিআই সহ ডিপিসি ইন্টিগ্রেশনের উদাহরণ

উন্নত কাস্টম ডিপিসি তালিকাভুক্তি প্রক্রিয়ায় নিম্নলিখিত ধাপগুলো অন্তর্ভুক্ত রয়েছে:

ডিভাইসের গুরুত্বপূর্ণ প্রাথমিক অবস্থা: একটি কাস্টম ডিপিসি (DPC) দিয়ে কোনো ডিভাইস এনরোল করার সময়, ডিভাইসে যোগ করা গুগল অ্যাকাউন্টটি নিষ্ক্রিয় অবস্থায় শুরু হয়। এর মানে হলো, গুগল প্লে (Google Play) সহ গুগল পরিষেবাগুলিতে অ্যাক্সেস প্রাথমিকভাবে সীমাবদ্ধ থাকে।

এই ডিফল্ট "অক্ষম" অবস্থা এবং এর ফলস্বরূপ EMM কর্তৃক ডিভাইসটিকে সঙ্গতিপূর্ণ হিসেবে চিহ্নিত করার আবশ্যকতা (যেমন, Devices.SetState কল করার মাধ্যমে) বিশেষভাবে নিম্নলিখিত শর্তগুলির অধীনে প্রযোজ্য:

  1. সংস্থাটি গুগলের কাছে তাদের ডোমেইনের মালিকানা যাচাই করেছে।
  2. আইটি অ্যাডমিন গুগল অ্যাডমিন কনসোলের মধ্যে ব্যবহারকারীর নির্দিষ্ট অর্গানাইজেশনাল ইউনিট (OU)-এর জন্য তৃতীয় পক্ষের অ্যান্ড্রয়েড মোবাইল ব্যবস্থাপনা স্পষ্টভাবে সক্রিয় করেছেন।
  1. এনরোলমেন্ট টোকেন তৈরি করুন: EMM, Play EMM API ব্যবহার করে একটি এনরোলমেন্ট টোকেন তৈরি করে।
  2. পরিবেশ প্রস্তুত করুন: কাস্টম ডিপিসি ডিভাইসটি এনরোলমেন্টের জন্য প্রস্তুত কিনা তা যাচাই করতে 'পরিবেশ প্রস্তুত করুন' ফ্লোটি ব্যবহার করে।
  3. তালিকাভুক্তি শুরু করুন: কাস্টম ডিপিসি (DPC) তালিকাভুক্তি টোকেনটি পাস করে AMAPI SDK-এর startAccountSetup API-কে কল করে। দ্রষ্টব্য: এই API-কে কল করার আগে ডিপিসি-কে অবশ্যই ডিভাইস ওনার অথবা প্রোফাইল ওনার হতে হবে।
  4. গুগল অথেন্টিকেশন অ্যাক্টিভিটি চালু করুন: প্রয়োজন হলে, কাস্টম ডিপিসি (DPC) AccountSetupAttempt পাস করে AMAPI SDK-এর launchAuthenticationActivity API-কে কল করে। এটি একটি গুগল অথেন্টিকেশন অ্যাক্টিভিটি শুরু করে এবং সফল অথেন্টিকেশনের পর ব্যবহারকারীকে কাস্টম ডিপিসি-তে ফিরিয়ে নিয়ে আসে। ব্যবহারকারী এই প্রক্রিয়াটি এড়িয়েও যেতে পারেন। সেক্ষেত্রে, ডিভাইসে একটি ম্যানেজড গুগল প্লে অ্যাকাউন্ট যুক্ত করা হবে। এই অপশনটি googleAuthenticationOptions ব্যবহার করে কনফিগার করা যায়।
  5. তালিকাভুক্তি চূড়ান্তকরণ: AMAPI SDK কাস্টম DPC-কে তালিকাভুক্তির ফলাফল সম্পর্কে অবহিত করে।
  6. গুগল পরিষেবা সক্রিয় করুন: কাস্টম ডিপিসি ডিভাইসটিকে সম্পূর্ণরূপে প্রোভিশন করার পর এবং এটি সমস্ত এন্টারপ্রাইজ নীতি মেনে চলে তা নিশ্চিত করার পরে, EMM সার্ভারকে অবশ্যই Devices.setState() কল করতে হবে এবং accountState প্যারামিটারটি "enabled" এ সেট করতে হবে।

    • কেন এটি অপরিহার্য: এই এপিআই কলটি ডিভাইসটিকে সঙ্গতিপূর্ণ হিসেবে চিহ্নিত করে।
    • কল না করার পরিণতি: এই Devices.setState(setStateRequest) কলটি ছাড়া, অ্যাকাউন্টটি "disabled" অবস্থায় থেকে যায়। ব্যবহারকারী Google Play (অ্যাপ ইনস্টল বা আপডেট করার জন্য) এবং অ্যাকাউন্ট প্রমাণীকরণের প্রয়োজন হয় এমন অন্যান্য Google পরিষেবা অ্যাক্সেস করতে পারবেন না।

ডিভাইসের অবস্থা এবং পরিষেবা অ্যাক্সেস পরিচালনা করা

প্রাথমিক তালিকাভুক্তির পর, ডিভাইসটির কমপ্লায়েন্স স্ট্যাটাসের উপর ভিত্তি করে গুগল পরিষেবাগুলিতে সেটির অ্যাক্সেস বজায় রাখার দায়িত্ব EMM-এর উপর বর্তায়।

পরিষেবা বিঘ্ন পরিচালনা: BAD_DEVICE_MANAGEMENT

যদি কোনো ডিভাইসের গুগল পরিষেবা ব্যবহারের সুযোগ অবরুদ্ধ করা হয়, তাহলে গুগল প্লে পরিষেবা (GMSCore) com.google.android.gms.auth.BAD_DEVICE_MANAGEMENT অ্যাকশন সহ একটি ইন্টেন্ট সম্প্রচার করবে। এটি বিভিন্ন কারণে ঘটতে পারে:

  • প্রাথমিক ডিভাইস এনরোলমেন্টের পর EMM কখনো Devices.setState("enabled") কল করেনি।
  • ডিভাইসটি এখন আর EMM নীতিমালা মেনে চলে না এবং EMM এখনও এটিকে পুনরায় সক্রিয় করেনি।
  • EMM, accountState-কে "disabled" সেট করে Devices.setState() কল করার মাধ্যমে ডিভাইসের অবস্থা স্পষ্টভাবে "disabled"-এ সেট করেছে। এটি নিরাপত্তাজনিত উদ্বেগ, প্রশাসনিক পদক্ষেপ বা অন্যান্য কারণে হতে পারে।

এই ইন্টেন্টে একটি স্ট্যাটাস কোড অন্তর্ভুক্ত থাকে, যেমন "ThirdPartyDeviceManagementRequired"

এই BAD_DEVICE_MANAGEMENT ইন্টেন্টটি শোনার জন্য কাস্টম ডিপিসি-গুলোকে অবশ্যই একটি BroadcastReceiver ইমপ্লিমেন্ট করতে হবে।

এই সম্প্রচারটি পাওয়ার পর, ডিপিসি-র উচিত:

  1. সম্মতি পুনঃমূল্যায়ন করুন: ডিভাইসটি বর্তমানে EMM দ্বারা নির্ধারিত সমস্ত নীতিমালা মেনে চলছে কিনা তা যাচাই করুন।
  2. পদক্ষেপ নিন:
    • নিয়ম মেনে চললে: DPC-কে EMM সার্ভারকে অবহিত করতে হবে। এরপর EMM সার্ভারটি নির্দিষ্ট ইউজার আইডি এবং ডিভাইস আইডির জন্য পরিষেবা অ্যাক্সেস পুনরুদ্ধার করার চেষ্টা করতে, accountState "enabled" -এ সেট করে Devices.setState() কল করবে।
    • যদি সঙ্গতিপূর্ণ না হয়: সমস্যাগুলি সমাধান হয়ে গেলে এবং ডিভাইসটি সঙ্গতিপূর্ণ হলে, EMM-কে Devices.setState() কল করতে হবে।

এই ব্যবস্থাটি নিশ্চিত করে যে, কোনো ডিভাইস গুগল পরিষেবা ব্যবহারের সুযোগ হারালে তা শনাক্ত করা এবং সেই পরিস্থিতি থেকে পুনরুদ্ধার করার একটি উপায় থাকে।

এন্টারপ্রাইজ অধিগ্রহণের বিবেচ্য বিষয়

প্রতিষ্ঠানের অ্যাকাউন্ট টাইপে পরিবর্তন (যেমন, ManagedGoogleDomainType.TYPE_TEAM থেকে ManagedGoogleDomainType.TYPE_DOMAIN ) ঘটতে পারে। যদিও এই প্রক্রিয়াটি সাধারণত EMM বাইন্ডিংকে নষ্ট করে না, তবে এটি কখনও কখনও ডিভাইসগুলিতে গুগল পরিষেবা অ্যাক্সেসে ব্যাঘাত ঘটাতে পারে।

EMM-দের এই বিষয়ে সচেতন থাকা উচিত যে, কোনো পরিচিত টেকওভার ইভেন্টের পরে যদি ব্যবহারকারীরা পরিষেবা অ্যাক্সেস সংক্রান্ত সমস্যার কথা জানান, তাহলে ডিভাইসটি EMM-এর নীতিমালা মেনে চলছে বলে মনে হলেও, নতুন গ্রাহক কাঠামোর অধীনে Google-এর ব্যাকএন্ডগুলোর সাথে ডিভাইসটির স্টেট পুনরায় সিঙ্ক্রোনাইজ করার জন্য Devices.setState() কল করার প্রয়োজন হতে পারে। টেকওভারের পরে সাধারণত সমস্ত ডিভাইসের জন্য সক্রিয়ভাবে কল করার প্রয়োজন হয় না, কিন্তু অ্যাক্সেস সমস্যা সমাধানের জন্য এটি একটি গুরুত্বপূর্ণ উপায়।

অ্যাকাউন্ট সেটআপ - নমুনা কোড

  1. অ্যাকাউন্ট সেটআপের চেষ্টা শুরু করতে, কলিং অ্যাপটি AccountSetupClient ব্যবহার করে startAccountSetup() অথবা startAccountSetupFuture() মেথডটি কল করতে পারে। একটি উদাহরণ বাস্তবায়নের জন্য, নিম্নলিখিত কোড নমুনাটি দেখুন:

    // Create AccountSetupClient
    val client = AccountSetupClientFactory.create(
        this,
        activityResultRegistry
    )
    lifecycle.addObserver(client.lifecycleObserver)
    
    // Create adminComponent
    val notificationReceiver = ComponentName(this, AccountSetupNotificationReceiver::class.java)
    // Helper method to get enrollment token created with Play EMM API
    val enrollmentToken = getEnrollmentToken()
    val request =
        StartAccountSetupRequest.builder()
            .setEnrollmentToken(enteredText)
            .setNotificationReceiverServiceComponentName(notificationReceiver)
            .setAdminComponentName(
                ComponentName(this, com.example.dpc.DeviceAdminReceiver::class.java))
            .build()
    try {
        val accountSetupAttempt = client.startAccountSetup(request)
        // handle attempt
    } catch (e: Exception) {
        // handle exception
    }
    
  2. AccountSetupListener ইন্টারফেসটি ইমপ্লিমেন্ট করুন এবং প্রাপ্ত স্ট্যাটাস আপডেটগুলো কীভাবে হ্যান্ডেল করা হবে তার একটি ইমপ্লিমেন্টেশন প্রদান করুন।

  3. NotificationReceiverService এক্সটেন্ড করুন এবং getAccountSetupListener() ওভাররাইড করে ধাপ ২-এ তৈরি করা AccountSetupListener ইনস্ট্যান্সটি প্রদান করুন।

    // Handles account setup changes
    class AccountSetupNotificationReceiver :
          NotificationReceiverService(),
          AccountSetupListener {
    
        override fun getAccountSetupListener(): AccountSetupListener = this
    
        override fun onAccountSetupChanged(accountSetupAttempt:
      AccountSetupAttempt) {
    
            when (accountSetupAttempt.state.kind) {
                StateCase.ADDED_ACCOUNT -> {
                    val enterpriseAccount = state.addedAccount()
                    val userId = enterpriseAccount.userId
                    val deviceId = enterpriseAccount.deviceId
                    // Handle account added state.
    
                    // IMPORTANT: The device/account is now added but *DISABLED*
                    // for Google services. Your EMM backend MUST be notified to
                    // perform policy compliance checks and then call Devices.setState()
                    // to activate Google Play and other services.
    
                }
                StateCase.AUTHENTICATION_ACTIVITY_LAUNCH_REQUIRED -> {
                    val request = LaunchAuthenticationActivityRequest.builder()
                .setAccountSetupAttempt(accountSetupAttempt)
                .build();
                    // Send the attempt to the foreground activity to call:
                    accountSetupClient.launchAuthenticationActivity(request)
                }
                StateCase.ACCOUNT_SETUP_ERROR -> {
                    // Handle error state.
                    val failureReason = state.accountSetupError().failureReason
                }
                else -> {
                    // Handle unknown account setup attempt state.
                }
            }
        }
    }
    
    
  4. আপনার AndroidManifest.xml এ এক্সটেন্ডেড NotificationReceiverService ক্লাসটি যোগ করুন এবং এটি এক্সপোর্ট করা হয়েছে কিনা তা যাচাই করুন।

      <application>
        <service
            android:name = ".accountsetup.AccountSetupNotificationReceiver"
            android:exported = "true" />
      </application>
    

    আপনার অ্যাপটি যদি SDK 30 বা তার পরবর্তী সংস্করণকে টার্গেট করে, তাহলে এটি যে ADP-এর সাথে ইন্টারঅ্যাক্ট করবে তা নির্দিষ্ট করার জন্য AndroidManifest.xml এ একটি queries এলিমেন্টের প্রয়োজন হবে।

      <queries>
        <package android:name="com.google.android.apps.work.clouddpc" />
      </queries>
    

পরীক্ষার নির্দেশিকা

এই বিভাগে আপনার বাস্তবায়ন পরীক্ষা করার জন্য কিছু নির্দেশিকা এবং সর্বোত্তম অনুশীলন দেওয়া হয়েছে।

পরীক্ষার PrepareEnvironment

  1. ডিভাইসের বর্তমান অবস্থা জানুন: EMM চালু আছে

    adb shell dumpsys package com.google.android.apps.work.clouddpc | grep versionName
    

    ডিভাইসে উপস্থিত অ্যান্ড্রয়েড ডিভাইস পলিসির সংস্করণটি জানতে। যদি অ্যান্ড্রয়েড ডিভাইস পলিসি ইনস্টল করা না থাকে, তাহলে একটি খালি আউটপুট প্রত্যাশিত।

  2. PrepareEnvironment সংহত করুন: কাস্টম DPC, সঠিক অনুরোধটি প্রেরণ করে AMAPI SDK-এর prepareEnvironment API-কে কল করে।

  3. PrepareEnvironment ফলাফলের জন্য অপেক্ষা করুন: কাস্টম DPC, prepareEnvironment সম্পন্ন হওয়ার জন্য অপেক্ষা করে।

  4. PrepareEnvironment সফল হয়েছে কিনা তা নিশ্চিত করুন: সম্পন্ন হলে, EMM আবার চলে।

    adb shell dumpsys package com.google.android.apps.work.clouddpc | grep versionName
    

    এবার অ্যান্ড্রয়েড ডিভাইস পলিসি ভার্সনটি ধাপ ১-এর চেয়ে বেশি হওয়া উচিত।

গুগল অ্যাকাউন্টের প্রমাণীকরণ পরীক্ষা করুন

  1. টেস্ট এন্টারপ্রাইজ তৈরি করুন: EMM একটি টেস্ট EMM-এর সাথে লিঙ্কযুক্ত একটি টেস্ট ডোমেইন গুগল এন্টারপ্রাইজ তৈরি করে, যেখানে enterprises.generateSignupUrl থাকে।
  2. গুগল প্রমাণীকরণ সক্রিয় করুন: EMM গুগল অ্যাডমিন কনসোলে এই নির্দেশাবলী অনুসরণ করে টেস্ট এন্টারপ্রাইজের জন্য গুগল প্রমাণীকরণ সক্রিয় করে।
  3. এনরোলমেন্ট টোকেন তৈরি করুন: EMM, Play EMM API ব্যবহার করে userDevice টাইপের একটি এনরোলমেন্ট টোকেন তৈরি করে।
  4. তালিকাভুক্তি শুরু করুন: কাস্টম ডিপিসি, এনরোলমেন্ট টোকেনটি পাস করে AMAPI SDK-এর startAccountSetup API-কে কল করে।
  5. অ্যাক্টিভিটি চালু করা আবশ্যক: AMAPI SDK কাস্টম DPC-কে জানিয়ে দেয় যে ব্যবহারকারীকে প্রমাণীকরণের জন্য একটি অ্যাক্টিভিটি চালু করতে হবে।
  6. ব্যবহারকারীকে প্রমাণীকরণ করুন: কাস্টম ডিপিসি অ্যাক্টিভিটিটি শুরু করার জন্য launchAuthenticationActivity কল করে। ব্যবহারকারী একটি ম্যানেজড গুগল অ্যাকাউন্ট (যা ধাপ ১-এ তৈরি করা এন্টারপ্রাইজের একটি অংশ) দিয়ে প্রমাণীকরণ করেন।
  7. তালিকাভুক্তি চূড়ান্তকরণ: AMAPI SDK কাস্টম DPC-কে তালিকাভুক্তির ফলাফল সম্পর্কে অবহিত করে।

গুগল প্রমাণীকরণ এড়িয়ে যাওয়ার পরীক্ষা

আমরা পূর্বে বর্ণিত ব্যবস্থাটি ব্যবহার করব।

এবার, ৭ নম্বর ধাপে, ব্যবহারকারী তার গুগল অ্যাকাউন্ট দিয়ে প্রমাণীকরণের পরিবর্তে ‘স্কিপ’ চাপেন। ডিভাইসে একটি সার্ভিস অ্যাকাউন্ট দিয়ে তালিকাভুক্তি সফলভাবে সম্পন্ন হয় (অর্থাৎ AuthenticationType হয় Anonymous)।

ব্যবহার অযোগ্য ডিভাইস পরীক্ষা করুন

যখন গুগল অথেন্টিকেশন নিষ্ক্রিয় থাকে, তখন উন্নত কাস্টম ডিপিসি এনরোলমেন্ট ফ্লো নিম্নলিখিত ধাপগুলো ব্যবহার করে:

  1. একটি পরীক্ষামূলক এন্টারপ্রাইজ তৈরি করুন: এটি পূর্বে তৈরি করা এন্টারপ্রাইজটির মতোই হতে পারে।
  2. এনরোলমেন্ট টোকেন তৈরি করুন: EMM, Play EMM API ব্যবহার করে userlessDevice টাইপের একটি এনরোলমেন্ট টোকেন তৈরি করে।
  3. তালিকাভুক্তি শুরু করুন: কাস্টম ডিপিসি, এনরোলমেন্ট টোকেনটি পাস করে AMAPI SDK-এর startAccountSetup API-কে কল করে।
  4. তালিকাভুক্তি চূড়ান্তকরণ: AMAPI SDK কাস্টম DPC-কে তালিকাভুক্তির ফলাফল সম্পর্কে অবহিত করে।