বিজ্ঞপ্তি রানটাইম অনুমতি

অ্যান্ড্রয়েড ১৩ (এপিআই লেভেল ৩৩) এবং এর পরবর্তী সংস্করণগুলোতে অ্যাপ থেকে নন-এক্সেম্পট (ফোরগ্রাউন্ড সার্ভিসেস (FGS) সহ) নোটিফিকেশন পাঠানোর জন্য একটি রানটাইম পারমিশন রয়েছে: POST_NOTIFICATIONS । এই পরিবর্তনটি ব্যবহারকারীদের জন্য সবচেয়ে গুরুত্বপূর্ণ নোটিফিকেশনগুলোতে মনোযোগ দিতে সাহায্য করে।

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

অনুমতি ঘোষণা করুন

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

আপনার অ্যাপের ম্যানিফেস্ট ফাইলে যে পারমিশনটি ঘোষণা করতে হবে, তা নিম্নলিখিত কোড স্নিপেটে দেখানো হয়েছে:

<manifest ...>
    <uses-permission android:name="android.permission.POST_NOTIFICATIONS"/>
    <application ...>
        ...
    </application>
</manifest>

অ্যাপের কার্যকারিতা পারমিশন ডায়ালগে ব্যবহারকারীর পছন্দের উপর নির্ভর করে।

এই ডায়ালগে, ব্যবহারকারীরা নিম্নলিখিত কাজগুলো করতে পারেন:

ব্যবহারকারীর নেওয়া পদক্ষেপের ওপর ভিত্তি করে আপনার অ্যাপটি কীভাবে কাজ করে, তা নিম্নলিখিত বিভাগগুলিতে বর্ণনা করা হয়েছে।

ব্যবহারকারী "অনুমতি দিন" নির্বাচন করেন

যদি ব্যবহারকারী ' অনুমতি দিন ' বিকল্পটি নির্বাচন করেন, তাহলে আপনার অ্যাপ নিম্নলিখিত কাজগুলো করতে পারবে:

ব্যবহারকারী 'অনুমতি দেবেন না' নির্বাচন করেন।

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

সতর্কতা: যদি আপনার অ্যাপটি 12L বা তার কম টার্গেট করে এবং ব্যবহারকারী 'অনুমতি দেবেন না' (Don't allow) বিকল্পটিতে ট্যাপ করেন, এমনকি একবার হলেও, নিম্নলিখিত ঘটনাগুলোর মধ্যে কোনো একটি না ঘটা পর্যন্ত তাকে আর কোনো প্রম্পট দেখানো হবে না:

  • ব্যবহারকারী আপনার অ্যাপটি আনইনস্টল করে আবার ইনস্টল করেন।
  • আপনার অ্যাপটিকে অ্যান্ড্রয়েড ১৩ বা তার উচ্চতর সংস্করণ অনুযায়ী আপডেট করুন।

ব্যবহারকারী ডায়ালগ থেকে সোয়াইপ করে সরে যায়

যদি ব্যবহারকারী ডায়ালগটি থেকে সোয়াইপ করে সরে যান—অর্থাৎ, তিনি ‘অনুমতি দিন’ বা ‘অনুমতি দেবেন না’ কোনোটিই নির্বাচন না করেন—তাহলে নোটিফিকেশন পারমিশনের অবস্থার কোনো পরিবর্তন হয় না।

নতুন ইনস্টল করা অ্যাপের উপর প্রভাব

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

অনুমতি ডায়ালগটি কখন প্রদর্শিত হবে তা আপনার অ্যাপের টার্গেট SDK ভার্সনের উপর ভিত্তি করে নির্ধারিত হয়:

  • আপনার অ্যাপটি যদি অ্যান্ড্রয়েড ১৩ বা তার উচ্চতর সংস্করণকে টার্গেট করে, তাহলে অনুমতির ডায়ালগ বক্সটি কখন দেখানো হবে, তার ওপর আপনার অ্যাপেরই সম্পূর্ণ নিয়ন্ত্রণ থাকে। এই সুযোগটি ব্যবহার করে ব্যবহারকারীদের কাছে ব্যাখ্যা করুন কেন অ্যাপটির এই অনুমতিটি প্রয়োজন, এবং তাদেরকে এটি মঞ্জুর করতে উৎসাহিত করুন।
  • আপনার অ্যাপ যদি 12L (API লেভেল 32) বা তার চেয়ে কম সংস্করণকে টার্গেট করে, তাহলে একটি নোটিফিকেশন চ্যানেল তৈরি করার পর আপনার অ্যাপ যখন প্রথমবার কোনো অ্যাক্টিভিটি শুরু করে, অথবা যখন আপনার অ্যাপ কোনো অ্যাক্টিভিটি শুরু করার পর তার প্রথম নোটিফিকেশন চ্যানেলটি তৈরি করে, তখন সিস্টেম অনুমতির ডায়ালগটি দেখায়। এটি সাধারণত অ্যাপ চালু হওয়ার সময়ই ঘটে থাকে।

বিদ্যমান অ্যাপগুলির আপডেটের উপর প্রভাব

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

অনুমতির পূর্ব-অনুমোদনের যোগ্যতা

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

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

ছাড়

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

মিডিয়া সেশন

মিডিয়া সেশন সম্পর্কিত বিজ্ঞপ্তিগুলো এই আচরণগত পরিবর্তনের আওতামুক্ত।

ফোন কল স্বয়ংক্রিয়ভাবে পরিচালনা করার জন্য কনফিগার করা অ্যাপ

যদি আপনার অ্যাপ ফোন কলগুলো নিজে থেকে পরিচালনা করার জন্য কনফিগার করা থাকে, তাহলে Notification.CallStyle নোটিফিকেশন স্টাইল ব্যবহার করে নোটিফিকেশন পাঠানোর জন্য আপনার POST_NOTIFICATIONS পারমিশনের প্রয়োজন নেই।

সিস্টেম আপনার অ্যাপটিকে ফোন কল স্ব-পরিচালনার জন্য কনফিগার করা হয়েছে বলে মনে করে, যদি এটি নিম্নলিখিত প্রতিটি কাজ সম্পন্ন করে:

  1. MANAGE_OWN_CALLS অনুমতিটি ঘোষণা করে।
  2. ConnectionService ইন্টারফেসটি বাস্তবায়ন করে।
  3. registerPhoneAccount() কল করার মাধ্যমে ডিভাইসটির টেলিকম প্রোভাইডারের কাছে নিবন্ধন করা হয়।

আপনার অ্যাপ পরীক্ষা করুন

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

  • অ্যাপটি অ্যান্ড্রয়েড ১৩ বা তার উচ্চতর সংস্করণে চালিত কোনো ডিভাইসে নতুনভাবে ইনস্টল করা হয়েছে:

    adb shell pm revoke PACKAGE_NAME android.permission.POST_NOTIFICATIONS
    adb shell pm clear-permission-flags PACKAGE_NAME \
      android.permission.POST_NOTIFICATIONS user-set
    adb shell pm clear-permission-flags PACKAGE_NAME \
      android.permission.POST_NOTIFICATIONS user-fixed
  • যখন অ্যাপটি অ্যান্ড্রয়েড ১২এল বা তার নিম্নতর সংস্করণের কোনো ডিভাইসে ইনস্টল করা থাকে এবং পরে ডিভাইসটি অ্যান্ড্রয়েড ১৩ বা উচ্চতর সংস্করণে আপগ্রেড করা হয়, তখন ব্যবহারকারী নোটিফিকেশন চালু রাখেন:

    adb shell pm grant PACKAGE_NAME android.permission.POST_NOTIFICATIONS
    adb shell pm set-permission-flags PACKAGE_NAME \
      android.permission.POST_NOTIFICATIONS user-set
    adb shell pm clear-permission-flags PACKAGE_NAME \
      android.permission.POST_NOTIFICATIONS user-fixed
  • যখন কোনো ডিভাইসে অ্যাপটি অ্যান্ড্রয়েড ১২এল বা তার নিম্নতর সংস্করণে ইনস্টল করা থাকে এবং পরে ডিভাইসটি অ্যান্ড্রয়েড ১৩ বা উচ্চতর সংস্করণে আপগ্রেড করা হয়, তখন ব্যবহারকারী ম্যানুয়ালি নোটিফিকেশন বন্ধ করে দেন:

    adb shell pm revoke PACKAGE_NAME android.permission.POST_NOTIFICATIONS
    adb shell pm set-permission-flags PACKAGE_NAME \
      android.permission.POST_NOTIFICATIONS user-set
    adb shell pm clear-permission-flags PACKAGE_NAME \
      android.permission.POST_NOTIFICATIONS user-fixed

সর্বোত্তম অনুশীলন

এই অংশে এমন কয়েকটি উপায় বর্ণনা করা হয়েছে, যার মাধ্যমে আপনি আপনার অ্যাপে নতুন নোটিফিকেশন পারমিশনটি সবচেয়ে কার্যকরভাবে ব্যবহার করতে পারবেন।

আপনার অ্যাপের টার্গেট SDK ভার্সন আপডেট করুন

অনুমতি ডায়ালগ বক্সটি কখন প্রদর্শিত হবে সে বিষয়ে আপনার অ্যাপকে আরও বেশি নমনীয়তা দিতে, অ্যাপটিকে অ্যান্ড্রয়েড ১৩ বা তার উচ্চতর সংস্করণকে লক্ষ্য করে আপডেট করুন।

নোটিফিকেশন অনুমতি প্রম্পট দেখানোর জন্য অপেক্ষা করুন

ব্যবহারকারীদের কোনো অনুমতি চাওয়ার আগে, তাদেরকে আপনার অ্যাপটির সাথে পরিচিত হতে দিন।

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

  • ব্যবহারকারী একটি 'সতর্কতা ঘণ্টা' বোতামে ট্যাপ করেন।
  • ব্যবহারকারী কারো সোশ্যাল মিডিয়া অ্যাকাউন্ট ফলো করার সিদ্ধান্ত নেন।
  • ব্যবহারকারী খাবার ডেলিভারির জন্য একটি অর্ডার জমা দেন।

চিত্র ১-এ নোটিফিকেশন পারমিশন অনুরোধ করার জন্য একটি প্রস্তাবিত কর্মপ্রবাহ দেখানো হয়েছে। যদি shouldShowRequestPermissionRationale() true রিটার্ন না করে, তাহলে আপনার অ্যাপের মাঝের স্ক্রিনটি—যেটির শিরোনামে "Get notified!" লেখাটি রয়েছে—প্রদর্শন করার প্রয়োজন নেই।

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

ব্যবহারকারী সাইন ইন করার পর, ভ্রমণের আপডেট সম্পর্কে অবহিত হওয়ার জন্য তাদের কাছে একটি আমন্ত্রণ আসে। ব্যবহারকারী 'আমি আছি' বোতামটি চাপার পর, অ্যাপটি নতুন অনুমতির জন্য অনুরোধ করে, যার ফলে সিস্টেম ডায়ালগটি প্রদর্শিত হয়।
চিত্র ১. নোটিফিকেশন অনুমতি অনুরোধ করার জন্য একটি প্রস্তাবিত ব্যবহারকারী-চালিত কর্মপ্রবাহ। মাঝের স্ক্রিনটি কেবল তখনই প্রয়োজন, যখন shouldShowRequestPermissionRationale() true রিটার্ন করে।

প্রাসঙ্গিকভাবে অনুমতির জন্য অনুরোধ করুন

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

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

আপনার অ্যাপ নোটিফিকেশন পাঠাতে পারে কিনা তা পরীক্ষা করুন।

আপনার অ্যাপ নোটিফিকেশন পাঠানোর আগে, ব্যবহারকারী আপনার অ্যাপের জন্য নোটিফিকেশন চালু করেছেন কিনা তা নিশ্চিত করুন। এটি করার জন্য, areNotificationsEnabled() ফাংশনটি কল করুন।

দায়িত্বের সাথে অনুমতিটি ব্যবহার করুন।

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