অ্যান্ড্রয়েড আপগ্রেড আমন্ত্রণ

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

এই প্রক্রিয়াটির উদ্দেশ্য হলো ব্যবহারকারীদের তাদের ডিভাইসটি সর্বশেষ ওএস সংস্করণে আপগ্রেড করতে উৎসাহিত করা।

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

ডিভাইস প্রস্তুতকারকরা "অ্যান্ড্রয়েড আপগ্রেড আমন্ত্রণ সক্রিয় করার অনুরোধ" ফর্মটি জমা দিয়ে তাদের অ্যান্ড্রয়েড ওএস ডিভাইসগুলির জন্য আপগ্রেড পার্টি সক্রিয় করতে পারেন।

আপগ্রেড আমন্ত্রণের অভিজ্ঞতা কাস্টমাইজ করুন

আপনি নিম্নলিখিত উপায়ে আপগ্রেড আমন্ত্রণের অভিজ্ঞতাটি কাস্টমাইজ করতে পারেন:

  • অপ্রাসঙ্গিক বৈশিষ্ট্যগুলো সরিয়ে ফেলুন।
  • টেক্সট ব্লকগুলোর ভাষা আপডেট করুন।
  • আপনার ব্র্যান্ডের সাথে সামঞ্জস্য রেখে অ্যানিমেশন, রং এবং ফন্ট পরিবর্তন করুন।

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

আপগ্রেড আমন্ত্রণ শৈলী নির্দেশিকা

আপনার নিজস্ব ব্র্যান্ডের সাথে মানানসই করে আপগ্রেড ইনভাইটের ডিজাইন (স্ক্রিন, রঙ, ফন্ট) পরিবর্তন করতে এই স্টাইল গাইডটি ব্যবহার করুন। আমরা দৃঢ়ভাবে সুপারিশ করছি যে এর আকার এবং কাঠামো মূল ডিজাইনের কাছাকাছি রাখুন।

আপগ্রেড আমন্ত্রণ ফ্লো-তে নিম্নলিখিত তিনটি উপাদান রয়েছে:

  • ভূমিকা পর্দা
  • ফিচার স্ক্রিন
  • আউটরো স্ক্রিন
চিত্র ১. আপগ্রেড আমন্ত্রণ প্রবাহের তিনটি স্ক্রিন প্রকার

প্রতিটি স্ক্রিনের একটি অ্যানিমেশন প্রতিটি বৈশিষ্ট্য ব্যাখ্যা করতে সাহায্য করে।

ভূমিকা পর্দা

ইন্ট্রো স্ক্রিনে একটি সংক্ষিপ্ত অ্যানিমেশন রয়েছে যা ব্যবহারকারীকে স্বাগত জানায় এবং সেখানে দেখানো কার্যপ্রবাহটি শুরু করতে উৎসাহিত করে।

লেআউট
চিত্র ২. আপগ্রেড আমন্ত্রণ ইন্ট্রো স্ক্রিনের ওয়্যারফ্রেম লেআউট

ডিভাইস অ্যানিমেশনটিতে সর্বদা নিম্নলিখিত বিষয়গুলো থাকে:

  • সাদা পটভূমি এবং রঙিন আকার
  • ডিভাইস ফ্রেম
  • UI বিষয়বস্তু
স্টাইলিং

আপনি যদি Material You স্টাইলিং পরিবর্তন করতে চান, তাহলে উদাহরণে দেখানো ডিফল্ট রং এবং আকারগুলো ব্যবহার করতে পারেন।

চিত্র ৩. আপগ্রেড আমন্ত্রণ প্রবাহের জন্য ডিফল্ট রঙের বিন্যাস।

আপনি যদি আপনার নিজস্ব ব্র্যান্ডের রঙ ব্যবহার করেন, তাহলে নিশ্চিত করুন যে এটি UI ব্যাকগ্রাউন্ডের সাথে ভালোভাবে মানিয়ে যায়।

গতি

বিকল্প ১: হোম স্ক্রিনে ঘড়ি সহ

  1. স্ক্রিনে সংখ্যাগুলো ভেসে ওঠে।
  2. সংখ্যাগুলো আকারে ছোট হতে হতে কেন্দ্রের দিকে সরে আসে। মোবাইল ফোনের ফ্রেমটি দেখা যায়।
  3. ফোনটির আকার ছোট হয়ে আসে। আকৃতিগুলো পর্দায় প্রবেশ করতে শুরু করে।
  4. অ্যানিমেশনটি সম্পন্ন হয়েছে। আকৃতিগুলো ধীরে ধীরে নড়তে থাকে।
চিত্র ৪. ঘড়িসহ আপগ্রেড ইনভাইট ইন্ট্রো স্ক্রিন অ্যানিমেশনের ওয়্যারফ্রেম লেআউট।
চিত্র ৫. ঘড়িসহ ইন্ট্রো স্ক্রিনের একটি অ্যানিমেশনের উদাহরণ।

বিকল্প ২: হোম স্ক্রিনে কোনো ঘড়ি থাকবে না

  1. মোবাইল ফোনটি স্ক্রিনে প্রবেশ করে।
  2. ফোনটি আকারে বাড়তে বাড়তে কেন্দ্রের দিকে চলে আসে। আকৃতিগুলো স্ক্রিনে প্রবেশ করতে শুরু করে।
  3. ফোনটি সর্বোচ্চ আকারে পৌঁছায় এবং আকৃতিগুলো নড়াচড়া করতে থাকে।
চিত্র ৬. ঘড়ি ছাড়া আপগ্রেড ইনভাইট ইন্ট্রো স্ক্রিন অ্যানিমেশনের ওয়্যারফ্রেম লেআউট।
চিত্র ৭। ঘড়ি ছাড়া ইন্ট্রো স্ক্রিনের একটি অ্যানিমেশনের উদাহরণ।

ফিচার স্ক্রিন

প্রতিটি ফিচার স্ক্রিন নতুন ওএস-এর একটি ফিচার তুলে ধরে।

লেআউট
চিত্র ৮. আপগ্রেড ইনভাইট ফিচার স্ক্রিনগুলোর ওয়্যারফ্রেম লেআউট।

ডিভাইস অ্যানিমেশনটিতে সর্বদা নিম্নলিখিত বিষয়গুলো থাকে:

  • রঙিন পটভূমি
  • ডিভাইস ফ্রেম
  • UI বিষয়বস্তু
স্টাইলিং
  • এমন একটি ব্যাকগ্রাউন্ড রঙ বেছে নিন যা UI কন্টেন্ট এবং সামগ্রিক চেহারার সাথে ভালোভাবে মানিয়ে যায়।
  • স্ক্রিনগুলোর ভেতরে ফন্টের আকার এমনভাবে সেট করুন যাতে তা সহজে পড়া যায়। প্রয়োজনে, ফন্টের আকার আরও বড় করুন।
গতি

টাচ ইন্টারঅ্যাকশন সহ প্রতিটি ফিচারের কার্যপ্রবাহের একটি অ্যানিমেশন রেকর্ড করুন। রেকর্ডিংগুলো Lottie ফাইল হিসেবে এক্সপোর্ট করুন।

আউটরো স্ক্রিন

আউট্রো স্ক্রিনটি প্রবাহটিকে সম্পূর্ণ করে। এটি ব্যবহারকারীদের জানিয়ে দেয় যে তারা সমস্ত স্ক্রিনগুলো দেখে ফেলেছেন।

লেআউট
চিত্র ৯. আপগ্রেড আমন্ত্রণ আউটরো স্ক্রিনের ওয়্যারফ্রেম লেআউট।

ডিভাইস অ্যানিমেশনটিতে সর্বদা নিম্নলিখিত বিষয়গুলো থাকে:

  • পটভূমিতে অর্ধবৃত্ত (সাথে অ্যানিমেটেড আকার)
  • ডিভাইস ফ্রেম
  • UI বিষয়বস্তু
স্টাইলিং
  • এমন একটি ব্যাকগ্রাউন্ড রঙ নির্বাচন করুন যা UI বিষয়বস্তু এবং সামগ্রিক চেহারার সাথে ভালোভাবে মানিয়ে যায়।
  • অর্ধবৃত্তাকার আকৃতি ব্যবহার করুন।
গতি

স্ট্যান্ডার্ড আউটরো স্ক্রিন অ্যানিমেশন প্রবাহ অনুসরণ করুন:

  1. মোবাইল ফোনটা একটু উপরে উঠে আসে।
  2. পটভূমিতে একটি বৃত্ত দেখা যায়।
  3. মোবাইল ফোনের পেছন থেকে বিভিন্ন আকৃতি উঠে আসে।
  4. আকৃতিগুলো পটভূমি থেকে রঙিন কাগজের টুকরোর মতো উড়ে আসে।
চিত্র ১০। আপগ্রেড ইনভাইট আউটরো স্ক্রিন অ্যানিমেশনের ওয়্যারফ্রেম লেআউট।
চিত্র ১১। আউটরো স্ক্রিন অ্যানিমেশনের একটি উদাহরণ।

আপগ্রেড আমন্ত্রণ প্রবাহ পরীক্ষা করুন

  1. অ্যান্ড্রয়েড ডিভাইসে, এখানে যান: সেটিংস > গুগল > আপগ্রেড পার্টি ডিবাগ
  2. প্রাসঙ্গিক ডিভাইস OS-এর জন্য আপগ্রেড ইনভাইটের ট্রিগার প্রস্তুত করুন (আপনার বর্তমান OS সংস্করণ এবং পরীক্ষা করার জন্য নির্দিষ্ট আপগ্রেড ইনভাইট ফ্লো-এর উপর নির্ভর করে)। হয়:
    1. 'Write Fake upgrade (current version)' -এ ক্লিক করুন। (উদাহরণস্বরূপ, আপনি যদি Android 13 OS চালান, তাহলে এটি Android 13 টেস্ট ফ্লো চালু করবে)
    2. রাইট পেন্ডিং আপগ্রেড (বর্তমান সংস্করণ + ১)-এ ক্লিক করুন। (উদাহরণস্বরূপ, আপনি যদি অ্যান্ড্রয়েড ১২ ওএস ব্যবহার করেন, তাহলে এটি অ্যান্ড্রয়েড ১৩ পরীক্ষার প্রক্রিয়াটি চালু করবে)
    3. রিপোর্ট ওএস আপগ্রেড-এ ক্লিক করুন
  3. প্রাপ্ত নোটিফিকেশনটিতে ক্লিক করুন, অথবা 'ওপেন আপগ্রেড ইনভাইট'-এ ক্লিক করুন।

আপগ্রেড আমন্ত্রণের জন্য ট্রিগার বিকল্পগুলি

আপগ্রেড ইনভাইট ফ্লো চালু করার ৩টি ভিন্ন উপায় রয়েছে: ১. স্বয়ংক্রিয় ২. ব্রডকাস্ট ৩. প্লে সার্ভিসেস এসডিকে দ্বারা চালিত

স্বয়ংক্রিয় - গুগল দ্বারা প্রেরিত বিজ্ঞপ্তি (শুধুমাত্র gOTA চালিত ডিভাইসগুলির জন্য)

যেসব OEM ডিভাইসে gOTA চলে, সেগুলোর ক্ষেত্রে ইন্টিগ্রেশন স্বয়ংক্রিয় এবং কোনো আপগ্রেড ইনভাইট ইন্টিগ্রেশন ধাপের প্রয়োজন হয় না। যখনই কোনো আসন্ন প্রধান OS আপগ্রেড শনাক্ত হয়, তখন এটি গুগল প্লে সার্ভিসেস থেকে ডিভাইসে একটি পুশ নোটিফিকেশন পাঠাবে, যা আপগ্রেড ইনভাইট ফ্লো-কে সক্রিয় করবে।

অ্যান্ড্রয়েড ব্রডকাস্ট - গুগল দ্বারা চালিত বিজ্ঞপ্তি (প্রস্তাবিত)

আপগ্রেড ইনভাইট ফ্লো ইন্টিগ্রেট করার জন্য অ্যাপ ব্রডকাস্ট হলো সবচেয়ে সহজ এবং প্রস্তাবিত উপায়।

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

সম্প্রচারের পূর্বশর্ত

আপনার অ্যাপটি প্রস্তুত করতে, নিচের বিভাগগুলিতে দেওয়া ধাপগুলি সম্পূর্ণ করুন।

নিশ্চিত করুন যে আপনার অ্যাপের কনফিগারেশন ফাইলগুলিতে নিম্নলিখিত মানগুলি ব্যবহার করা হয়েছে:

  • minSdkVersion ১৪ বা তার বেশি
  • compileSdkVersion ২৮ বা তার বেশি
  • android.permission.RECOVERY-এর usesPermission

সম্প্রচার পাঠান

পুশ নোটিফিকেশন চালু করার জন্য অ্যান্ড্রয়েড ব্রডকাস্ট পাঠাতে OEM অ্যাপ (বা কোড)-এর নির্দেশাবলী নিচে দেখুন:

  1. অ্যাকশনটির সাথে ব্রডকাস্ট পাঠান।

    com.google.android.gms.growth.upgradeparty.upgradeinvite.ACTION_SYSTEM_UPDATE
    
  2. ব্রডকাস্টে com.google.android.gms প্যাকেজটি যুক্ত করুন।

    com.google.android.gms
    

অতিরিক্ত প্রয়োজনীয়তা

আপগ্রেড ইনভাইট ফ্লো ব্যবহারকারীদের সরাসরি ফ্লো থেকেই ওএস আপগ্রেড করার সুযোগ দেয়।

এটি কার্যকর করার জন্য, একটি কাস্টম ইন্টেন্ট উন্মুক্ত করুন, যেটিকে গুগল 'আপগ্রেড ইনভাইট' ফ্লো থেকে কল করে আপডেটটি ডাউনলোড করার প্রক্রিয়া শুরু করতে পারবে।

সম্প্রচার ব্যবহারের উদাহরণ

অ্যাপ্লিকেশন ব্রডকাস্টের নিম্নলিখিত উদাহরণটি দেখুন:

Context context = getApplicationContext();
Intent upgradeInviteIntent = new Intent()
  .setAction( "com.google.android.gms.growth.upgradeparty.upgradeinvite.ACTION_SYSTEM_UPDATE")
  .setPackage("com.google.android.gms");
  .putExtra("com.google.android.gms.growth.upgradeparty.upgradeinvite.EXTRA_PENDING_ANDROID_OS_VERSION_NUMBER", 14);

context.sendBroadcast(updateIntent);

EXTRA_PENDING_ANDROID_OS_VERSION_NUMBER কী-টির মান একটি ইন্টিজার, যা অপেক্ষমান ওএস ভার্সন নির্দেশ করে (এই উদাহরণে, যে অ্যান্ড্রয়েড ভার্সনটি ইনস্টল করা হবে তা হলো ১৪)। কোন আপগ্রেড ইনভাইট ফ্লোটি ট্রিগার করা হবে, তা নির্ধারণ করতে এটি ব্যবহৃত হয়।

প্লে সার্ভিসেস এসডিকে - শুধুমাত্র ফ্লো ট্রিগারিং

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

পূর্বশর্ত

আপনার অ্যাপটি প্রস্তুত করতে, নিচের বিভাগগুলিতে দেওয়া ধাপগুলি সম্পূর্ণ করুন।

নিশ্চিত করুন যে আপনার অ্যাপের বিল্ড ফাইলে নিম্নলিখিত মানগুলি ব্যবহৃত হয়েছে:

  • minSdkVersion ১৪ বা তার বেশি
  • compileSdkVersion ২৮ বা তার বেশি

আপনার অ্যাপ কনফিগার করুন

আপনার অ্যাপ কনফিগার করতে:

1. Extract the library from the provided .zip file, and place it in your

রিপোজিটরি। ২. আপনার মডিউলের অ্যাপ-লেভেল গ্রেডল ফাইলে, সাধারণত app/build.gradle , গুগল গ্রোথ এসডিকে-এর জন্য ডিপেন্ডেন্সিগুলো যোগ করুন:

   dependencies {
    implementation files(&<#39;PATH_TO_BI>NARY/play-services-growth-16.1.0-eap04.aar';)
   }
  1. ক্লায়েন্টের নির্ভরতা সরবরাহ করতে, নিম্নলিখিত লাইব্রেরিগুলি অন্তর্ভুক্ত করুন:

    com.google.android.gms:play-services-base:18.0.1
    com.google.android.gms:play-services-basement:18.0.0
    com.google.android.gms:play-services-tasks:18.0.1
    

এপিআই প্রারম্ভিকীকরণ

  1. একটি ক্লায়েন্ট ইনিশিয়ালাইজ করতে, UpgradeParty ক্লাসটি ব্যবহার করুন:

    import com.google.android.gms.growth.UpgradeParty;
    UpgradeParty.getClient(activity);
    
  2. অ্যাক্টিভিটি প্যারামিটারটি অবশ্যই সূচনাকারী অ্যাক্টিভিটি অবজেক্ট হতে হবে।

এপিআই ফাংশন

ফলস্বরূপ UpgradePartyClient নিম্নলিখিত কার্যকারিতাগুলো প্রকাশ করে।

আপগ্রেড আমন্ত্রণের জন্য যোগ্য

import com.google.android.gms.growth.UpgradeInviteEligibilityParams;

Task<Boolean> isEligibleForUpgradeInvite(UpgradeInviteEligibilityParams params);

/** Contains parameters for the eligibility query. */
class UpgradeInviteEligibilityParams {


/** Integer indicating the pending OS version (in this example, the Android version to be installed is 14). This is used to determine which Upgrade Invite flow will be triggered. */
  int pendingAndroidOsVersionNumber;
}

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

invokeUpgradeInvite

Task<Void> invokeUpgradeInvite();

আপগ্রেড ইনভাইট অ্যাক্টিভিটি চালু করে। এর ফলে প্রাপ্ত _Task_ অবজেক্টটি নির্দেশ করে যে অ্যাক্টিভিটিটি শুরু করার সময় কোনো ত্রুটি ঘটেছে কিনা।

ত্রুটি কোড

উভয় API মেথডই com.google.android.gms.common.api.ApiException টাইপের একটি এক্সেপশনের কারণে ব্যর্থ হতে পারে। এমন ক্ষেত্রে, কলারকে পরবর্তীতে আবার চেষ্টা করার পরামর্শ দেওয়া হয়। প্রত্যাশিত সাধারণ স্ট্যাটাস কোডগুলোর মধ্যে রয়েছে:

  • অভ্যন্তরীণ ত্রুটি - অন্তর্নিহিত লজিকের প্রবাহে যেকোনো ত্রুটির জন্য
  • টাইমআউট - যদি অনুরোধটি সময়মতো সম্পন্ন করা না যায়
  • API_NOT_CONNECTED - যখন API উপলব্ধ থাকে না (অর্থাৎ, UpgradeParty মডিউলটি এখনও প্রস্তুত নয়)
  • নেটওয়ার্ক ত্রুটি - নেটওয়ার্ক ত্রুটির কারণে অনুরোধটি পরিচালনা করা যায়নি।
  • ডেভেলপার ত্রুটি - কলিং প্যাকেজটিকে UpgradeParty API অ্যাক্সেস করার অনুমতি নেই

এসডিকে ব্যবহারের উদাহরণ

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import com.google.android.gms.growth.UpgradeParty;
import com.google.android.gms.growth.UpgradePartyClient;

public class SampleActivity extends Activity {

 @Override
 protected void onCreate(Bundle savedInstanceState) {
   super.onCreate(savedInstanceState);
   final UpgradePartyClient client = UpgradeParty.getClient(this);

   // Hide the invocation button initially
   View startUpgradeInviteButton = findViewById(R.id.__some_button__);
   startUpgradeInviteButton.setVisibility(View.GONE);

   // Register an onClick handler to invoke the Upgrade Party Activity
   startUpgradeInviteButton
       .setOnClickListener(
           view -> {
             client
                 .invokeUpgradeInvite()
                 .addOnCompleteListener(
                     task -> {
                       if (!task.isSuccessful()) {
                         // Do something with error, see task.getException()
                       }
                     });
           });
   }

   // Check if eligible for an Upgrade Party
   client
       .isEligibleForUpgradeInvite()
       .addOnCompleteListener(
           task -> {
             if (!task.isSuccessful()) {
               // Do something with error, see task.getException()
             } else {
                  // Show/Hide invocation button, based on the result
                  int visibility = 
                        task.getResult() ? View.VISIBLE : View.GONE;
                  startUpgradeInviteButton.setVisibility(visibility);
             }
           });
   }