অ্যান্ড্রয়েড অ্যাপের মধ্যে ওয়েব সামগ্রী রেন্ডার করতে কীভাবে বিভিন্ন উপাদান ব্যবহার করা যেতে পারে।
অ্যান্ড্রয়েড প্ল্যাটফর্মটি প্রায় দশ বছরেরও বেশি সময় ধরে রয়েছে এবং এর প্রথম দিন থেকেই এটি ওয়েবের জন্য দুর্দান্ত সমর্থন পেয়েছে। এটি WebView এর সাথে পাঠানো হয়েছে, একটি উপাদান যা ডেভেলপারদের তাদের নিজস্ব Android Apps-এর মধ্যে ওয়েব ব্যবহার করতে দেয়৷ এর থেকেও বেশি, অ্যান্ড্রয়েড বিকাশকারীদের তাদের নিজস্ব ব্রাউজার ইঞ্জিনকে প্ল্যাটফর্মে আনতে দেয়, প্রতিযোগিতা এবং উদ্ভাবনকে উৎসাহিত করে।
বিকাশকারীরা বিভিন্ন উপায়ে তাদের Android অ্যাপ্লিকেশনগুলিতে ওয়েব অন্তর্ভুক্ত করতে পারে৷ WebView প্রায়শই বিজ্ঞাপন রেন্ডার করতে ব্যবহৃত হয়, Android UI উপাদানগুলির সাথে ব্যবহার করা একটি লেআউট উপাদান হিসাবে, বা HTML 5 গেম প্যাকেজ করার জন্য। কাস্টম ট্যাবগুলি বিকাশকারীদের অ্যাপ-মধ্যস্থ ব্রাউজার তৈরি করতে এবং তৃতীয় পক্ষের ওয়েব সামগ্রীতে একটি বিরামহীন নেভিগেশন অভিজ্ঞতা প্রদান করতে দেয় এবং বিশ্বস্ত ওয়েব অ্যাক্টিভিটি বিকাশকারীদের Android অ্যাপে তাদের প্রগ্রেসিভ ওয়েব অ্যাপস (PWAs) ব্যবহার করতে দেয়, যা প্লে স্টোর থেকে ডাউনলোড করা যেতে পারে। .
অ্যান্ড্রয়েড ওয়েবভিউ
WebView ডেভেলপারদের তাদের Android অ্যাপের মধ্যে আধুনিক HTML, CSS এবং JavaScript-এ অ্যাক্সেস দেয় এবং কন্টেন্টকে APK-এর ভিতরে পাঠানো বা ইন্টারনেটে হোস্ট করার অনুমতি দেয়। এটি অ্যান্ড্রয়েডের সবচেয়ে নমনীয় এবং শক্তিশালী উপাদানগুলির মধ্যে একটি, যা বেশিরভাগ ব্যবহারের ক্ষেত্রে ব্যবহার করা যেতে পারে যেখানে একটি অ্যান্ড্রয়েড অ্যাপে ওয়েব সামগ্রী অন্তর্ভুক্ত থাকে৷ AdMob-এর মতো বিজ্ঞাপন পরিষেবাগুলিকে শক্তিশালী করা থেকে শুরু করে সম্পূর্ণ HTML5 গেম তৈরি এবং শিপিং করা যা আধুনিক API যেমন WebGL ব্যবহার করে৷
কিন্তু, যখন একটি ইন-অ্যাপ-ব্রাউজার তৈরি করতে বা একটি অ্যান্ড্রয়েড অ্যাপ্লিকেশনে একটি পিডব্লিউএ সহ ব্যবহার করা হয়, তখন ওয়েবভিউতে ওয়েব প্ল্যাটফর্মের নিরাপত্তা, বৈশিষ্ট্য এবং ক্ষমতার অভাব থাকে।
ইন-অ্যাপ ব্রাউজার চ্যালেঞ্জ
সময়ের সাথে সাথে, আরও বেশি ডেভেলপাররা তৃতীয় পক্ষের ওয়েবসাইটগুলিতে নেভিগেট করার সময় তাদের ব্যবহারকারীদের জন্য আরও নির্বিঘ্ন অভিজ্ঞতা তৈরি করার লক্ষ্যে তাদের Android অ্যাপ্লিকেশনে তৃতীয় পক্ষের সামগ্রী অন্তর্ভুক্ত করে ব্রাউজার অভিজ্ঞতা তৈরি করেছে। সেই অভিজ্ঞতাগুলো ইন-অ্যাপ ব্রাউজার হিসেবে পরিচিত হয়ে ওঠে।
WebView-এর আধুনিক ওয়েব টেক স্ট্যাকের জন্য ব্যাপক সমর্থন রয়েছে এবং WebGL এর মতো অনেক আধুনিক ওয়েব API সমর্থন করে। কিন্তু WebView প্রাথমিকভাবে একটি ওয়েব UI টুলকিট। এটি ওয়েব প্ল্যাটফর্মের সমস্ত বৈশিষ্ট্যকে সমর্থন করার জন্য নয় - এবং সমর্থন করে না ৷ যখন একটি API-এর ইতিমধ্যেই ওয়েব ব্লুটুথের মতো একটি OS-স্তরের বিকল্প থাকে, বা এটির জন্য ব্রাউজার UI প্রয়োগ করতে হয়, যেমন পুশ বিজ্ঞপ্তি, এটি সমর্থিত নাও হতে পারে। ওয়েব প্ল্যাটফর্ম বিকশিত হওয়ার সাথে সাথে আরও বেশি বৈশিষ্ট্য যোগ করে যা শুধুমাত্র অ্যান্ড্রয়েড অ্যাপে উপলব্ধ ছিল, এই ব্যবধান আরও বড় হবে। যেহেতু অ্যাপ ডেভেলপাররা তৃতীয় পক্ষের সামগ্রী খোলার সময় কোন বৈশিষ্ট্যগুলি ব্যবহার করা হবে তা নিয়ন্ত্রণ করে না, এটি অ্যাপ-মধ্যস্থ ব্রাউজার বা প্রগ্রেসিভ ওয়েব অ্যাপ খোলার জন্য ওয়েবভিউকে একটি দুর্বল পছন্দ করে তোলে। এমনকি যদি WebView সমস্ত ওয়েব প্ল্যাটফর্ম বৈশিষ্ট্যগুলির জন্য সমর্থন প্রয়োগ করে, তবে বিকাশকারীদের এখনও কোড লিখতে হবে এবং অনুমতি বা পুশ বিজ্ঞপ্তিগুলির মতো কার্যকারিতার জন্য তাদের নিজস্ব UI প্রয়োগ করতে হবে, ব্যবহারকারীদের জন্য ধারাবাহিকতা অর্জন করা কঠিন করে তোলে।
একটি ইন-অ্যাপ ব্রাউজার হিসাবে WebView ব্যবহার করার জন্য নিরাপত্তা বিবেচনা
WebView কুকি এবং DOM সহ রেন্ডার করা সামগ্রীতে এমবেডার অ্যাপ্লিকেশনটিকে সম্পূর্ণ অ্যাক্সেস দেয়৷ এগুলি শক্তিশালী বৈশিষ্ট্য যা ব্যবহারকারীদের কাছ থেকে উচ্চ স্তরের আস্থার প্রয়োজন।
যেহেতু ওয়েবভিউ ব্রাউজার তৈরির জন্য একটি কাঠামোর উদ্দেশ্যে নয়, তাই আধুনিক ব্রাউজারগুলিতে উপলব্ধ সুরক্ষা বৈশিষ্ট্যগুলির অভাব রয়েছে৷
মাল্টি-প্রসেস আর্কিটেকচার এবং সাইট আইসোলেশন
ব্রাউজারগুলি অবিশ্বস্ত সামগ্রী রেন্ডারিং এবং কার্যকর করার সময় সুরক্ষিত হওয়ার জন্য ডিজাইন করা হয়েছে৷ সম্ভাব্য অবিশ্বস্ত বা এমনকি দূষিত বিষয়বস্তু নেভিগেট করার সময় ব্যবহারকারী নিরাপদ থাকে তা নিশ্চিত করতে, আধুনিক ব্রাউজারগুলি বহু-প্রক্রিয়া আর্কিটেকচার এবং সাইট আইসোলেশন ব্যবহার করার মতো কৌশল ব্যবহার করে।
মাল্টি-প্রসেস আর্কিটেকচার ব্যতীত, ওয়েব পৃষ্ঠার কারণে একটি ক্র্যাশ পুরো ব্রাউজার অ্যাপটিকে ক্র্যাশ করতে পারে, বা পুরো ডিভাইসের নিয়ন্ত্রণ নিতে একটি দুর্বলতা কাজে লাগানো যেতে পারে। সাইট আইসোলেশন নিরাপত্তার আরেকটি স্তর যোগ করে যা অবিশ্বস্ত সাইটগুলির পক্ষে অ্যাক্সেস করা এবং অন্যান্য সাইট থেকে তথ্য চুরি করা কঠিন করে তোলে।
অ্যান্ড্রয়েড 8.0 ওরিও পর্যন্ত, ওয়েবভিউ রেন্ডারার এমবেডার অ্যাপ্লিকেশনের মতো একই প্রক্রিয়া ব্যবহার করেছিল। OS এর নতুন সংস্করণে, এবং ডিভাইসগুলি যথেষ্ট সক্ষম হলে, রেন্ডারার একটি ভিন্ন প্রক্রিয়ায় চলে। যাইহোক, একটি একক প্রক্রিয়া এখনও সমস্ত পৃষ্ঠা এবং সেগুলি চালানোর ওয়েবভিউ উদাহরণগুলির মধ্যে ভাগ করা হয়, যার ফলে সাইট বিচ্ছিন্নতা সম্পূর্ণরূপে বাস্তবায়ন করা অসম্ভব হয়ে পড়ে৷
একটি মাল্টি-প্রসেস আর্কিটেকচার এবং সাইট আইসোলেশনের অভাব এমন অ্যাপ্লিকেশনগুলির জন্য একটি সমস্যা নয় যা তাদের মালিকানাধীন এবং বিশ্বাসযোগ্য বিষয়বস্তু রেন্ডার করে, তবে অ্যাপ ব্রাউজারগুলির মতো অবিশ্বস্ত তৃতীয় পক্ষের সামগ্রী চালানোর অ্যাপ্লিকেশনগুলির জন্য একটি সমস্যা হতে পারে এবং ব্যবহারকারীদের উন্মুক্ত করে দেয় মেল্টডাউন এবং স্পেকটারের মতো দুর্বলতার জন্য, যা কুকি, ব্যাঙ্কিং বিবরণ, ব্যক্তিগত তথ্য এবং আরও অনেক কিছু চুরি করার জন্য ব্যবহার করা যেতে পারে।
নিরাপদ UI সূচক
ব্যবহারকারীদের ভাল নিরাপত্তা সূচক প্রদান করাও গুরুত্বপূর্ণ, এবং ব্রাউজারগুলি অনেক প্রচেষ্টা করে এবং সর্বদা এই ক্ষেত্রে বিকশিত হয়। যাইহোক, ওয়েবভিউতে একটি সাইটের সংযোগ নিরাপদ কিনা তা পরীক্ষা করার জন্য একটি API নেই যা অ্যাপ্লিকেশন বিকাশকারীদের বিশ্বস্ত নিরাপত্তা সূচক তৈরি করতে দেয়। যেমন একটি API-এর অভাব, উদাহরণস্বরূপ, ঠিকানা বারে প্রদর্শিত একটি URL ব্যবহারকারীর কাছে প্রদর্শিত পৃষ্ঠার সাথে মেলে না, এমনকি নিরাপদ HTTPS সংযোগের ক্ষেত্রেও হতে পারে৷
বিকাশকারীদের জন্য উপলব্ধ আরেকটি বিকল্প হল তাদের অ্যাপ্লিকেশনে একটি ব্রাউজার ইঞ্জিন এম্বেড করা। আবেদনের আকার বৃদ্ধির পাশাপাশি, এই পদ্ধতিটি জটিল এবং সময়সাপেক্ষ উভয়ই।
অ্যাপ-মধ্যস্থ ব্রাউজারগুলির সমাধান হিসাবে কাস্টম ট্যাব
কাস্টম ট্যাবগুলি Chrome 45-এ চালু করা হয়েছিল এবং ডেভেলপারদের তাদের অ্যাপ্লিকেশনের অংশ হিসাবে ব্যবহারকারীর ডিফল্ট ব্রাউজার থেকে একটি ট্যাব ব্যবহার করার অনুমতি দেয়। কাস্টম ট্যাবগুলি মূলত Chrome দ্বারা চালু করা হয়েছিল, এবং তাই "Chrome কাস্টম ট্যাব" নামে পরিচিত। আজ এটি একটি অ্যান্ড্রয়েড এপিআই এবং সর্বাধিক জনপ্রিয় ব্রাউজারগুলি ক্রোম, ফায়ারফক্স, এজ এবং স্যামসাং ইন্টারনেট সহ কাস্টম ট্যাবগুলিকে সমর্থন করে, তাই এটিকে "কাস্টম ট্যাব" বলা আরও উপযুক্ত।
কাস্টম ট্যাব ডেভেলপারদের তাদের অ্যাপের অভিজ্ঞতায় ওয়েব সামগ্রীকে নির্বিঘ্নে একত্রিত করতে সাহায্য করে। এছাড়াও তারা ডেভেলপারদের টুলবারের রঙ, অ্যাকশন বোতাম, ট্রানজিশন অ্যানিমেশন এবং আরও অনেক কিছু কাস্টমাইজ করার অনুমতি দিয়ে ওয়েব সামগ্রী দেখানো হয় এমন কার্যকলাপকে কাস্টমাইজ করার অনুমতি দেয়।
তারা এমন বৈশিষ্ট্যগুলিও অফার করে যা আগে WebView ব্যবহার করার সময় বা ব্রাউজার ইঞ্জিন এম্বেড করার সময় অনুপলব্ধ ছিল। যেহেতু ইন-অ্যাপ ব্রাউজারটি ব্যবহারকারীর ব্রাউজার দ্বারা চালিত হয়, কাস্টম ট্যাবগুলি ব্রাউজারের সাথে সঞ্চয়স্থান ভাগ করে, তাই ব্যবহারকারীদের প্রতিবার তাদের ইনস্টল করা অ্যাপগুলির মধ্যে একটি ইন-অ্যাপ ব্রাউজিং সেশন শুরু হলে তাদের পছন্দের ওয়েবসাইটগুলিতে পুনরায় লগইন করার প্রয়োজন হয় না৷
WebViews এর বিপরীতে, কাস্টম ট্যাবগুলি সমস্ত ওয়েব প্ল্যাটফর্ম বৈশিষ্ট্য এবং API সমর্থন করে যা ব্রাউজার দ্বারা এটিকে শক্তি প্রদান করে।
বিশ্বস্ত ওয়েব কার্যকলাপ ব্যবহার করে প্রগতিশীল ওয়েব অ্যাপ খুলুন
প্রগতিশীল ওয়েব অ্যাপগুলি এমন অনেক আচরণ এবং ক্ষমতা নিয়ে আসে যা একবার শুধুমাত্র প্ল্যাটফর্ম-নির্দিষ্ট অ্যাপগুলির জন্য ওয়েবে উপলব্ধ ছিল। অ্যাপ-সদৃশ আচরণের প্রবর্তনের সাথে, বিকাশকারীদের Android-এ সেই অভিজ্ঞতাগুলি পুনরায় ব্যবহার করার আকাঙ্ক্ষা বেড়েছে, এবং বিকাশকারীরা তাদের অ্যাপগুলিতে PWAs একীভূত করার উপায়গুলি জিজ্ঞাসা করতে শুরু করেছে।
কাস্টম ট্যাবগুলিতে সমস্ত আধুনিক ওয়েব ক্ষমতা এবং API-এর জন্য সমর্থন রয়েছে তবে, যেহেতু এটি প্রাথমিকভাবে তৃতীয় পক্ষের সামগ্রী খোলার জন্য ডিজাইন করা হয়েছিল, এটির উপরে একটি টুলবার রয়েছে যা ব্যবহারকারীদের বলে যে তারা কোন URL পরিদর্শন করছে, সেইসাথে লক আইকনটি নির্দেশ করে কিনা সাইট নিরাপদ. একটি অ্যাপের নিজস্ব অভিজ্ঞতা খোলার সময়, টুলবারটি অ্যাপ্লিকেশনটিকে অপারেটিং সিস্টেমের সাথে একত্রিত হওয়ার অনুভূতি থেকে বাধা দেয়।
বিশ্বস্ত ওয়েব অ্যাক্টিভিটিগুলি Chrome 72-এ চালু করা হয়েছিল এবং ডেভেলপারদের একটি Android অ্যাপের মধ্যে তাদের PWA ব্যবহার করার অনুমতি দেয়। এর প্রোটোকলটি কাস্টম ট্যাব প্রোটোকলের অনুরূপ, কিন্তু API গুলি প্রবর্তন করে যা বিকাশকারীদের ( ডিজিটাল অ্যাসেট লিঙ্কের মাধ্যমে) যাচাই করতে দেয় যে তারা অ্যান্ড্রয়েড অ্যাপ এবং খোলা হওয়া URL উভয়ই নিয়ন্ত্রণ করে এবং উভয়ই সত্য হলে URL বার সরিয়ে দেয়।
তারা পিডব্লিউএ খোলার সময় বা অ্যান্ড্রয়েড কোড দ্বারা পরিচালিত ওয়েব বিজ্ঞপ্তিগুলি অর্পণ করার সময় স্প্ল্যাশ স্ক্রিন তৈরির জন্য এপিআই চালু করেছিল। প্লে বিলিং-এর জন্য সমর্থনের মতো আরও বৈশিষ্ট্য শীঘ্রই আসছে৷
যেহেতু বিশ্বস্ত ওয়েব অ্যাক্টিভিটিগুলিতে খোলা URLগুলি PWAs হতে প্রত্যাশিত এবং তাদের আচরণ এবং কর্মক্ষমতা বৈশিষ্ট্যগুলির একটি সেট রয়েছে, তাই বিশ্বস্ত ওয়েব অ্যাক্টিভিটিগুলি এর ভিতরে PWA গুলি খোলার জন্য গুণমানের মানদণ্ড প্রবর্তন করে৷
বর্তমান সমাধানের সীমাবদ্ধতা
ডেভেলপার প্রতিক্রিয়া WebView এর নমনীয়তার সাথে মিলিত কাস্টম ট্যাবগুলির প্ল্যাটফর্ম সামঞ্জস্যের জন্য প্রয়োজনীয়তা দেখিয়েছে যাতে তারা, উদাহরণস্বরূপ, তাদের অ্যাপ-মধ্যস্থ ব্রাউজারগুলিতে DOM অ্যাক্সেস করতে বা জাভাস্ক্রিপ্ট ইনজেক্ট করতে পারে৷
কাস্টম ট্যাবগুলি কার্যকরভাবে ব্যবহারকারীর ব্রাউজার দ্বারা রেন্ডার করা একটি ট্যাব, একটি কাস্টম UI সহ বা কোনও UI ছাড়াই৷ এর মানে হল যে ব্রাউজারটিকে ব্রাউজারটির প্রতি গোপনীয়তা এবং নিরাপত্তার বিষয়ে ব্যবহারকারীর প্রত্যাশাকে সম্মান করতে হবে, এই বৈশিষ্ট্যগুলির মধ্যে কিছুকে অসম্ভব করে তোলে।
Google-এ ওয়েব অন অ্যান্ড্রয়েড টিম বিকল্পগুলি খুঁজছে এবং সেই ব্যবহার-কেসগুলি সমাধান করার জন্য সমাধানগুলি নিয়ে পরীক্ষা করছে৷ বিস্তারিত জানার জন্য সাথে থাকুন!
সারসংক্ষেপ
ওয়েবভিউ উপযোগী হয় যখন একটি অ্যাপ্লিকেশনকে তাদের Android অ্যাপের মধ্যে HTML, CSS এবং JavaScript এর প্রয়োজন হয়, কিন্তু আধুনিক ওয়েবে উপলব্ধ আরও উন্নত বৈশিষ্ট্য এবং ক্ষমতা যেমন পুশ বিজ্ঞপ্তি, ওয়েব ব্লুটুথ এবং অন্যান্য ব্যবহার করে না। আধুনিক ওয়েব প্ল্যাটফর্মের জন্য ডিজাইন করা বিষয়বস্তু খোলার সময় এটি সুপারিশ করা হয় না, কারণ এটি বিকাশকারীর ইচ্ছা অনুযায়ী প্রদর্শিত নাও হতে পারে। অ্যাপ-মধ্যস্থ ব্রাউজার তৈরি করার জন্য WebView সুপারিশ করা হয় না। অন্যদিকে প্রথম পক্ষের ওয়েব কন্টেন্ট প্রদর্শন করা এমন একটি ক্ষেত্র যেখানে ওয়েবভিউ সত্যিই উজ্জ্বল।
বিশ্বস্ত ওয়েব অ্যাক্টিভিটি ব্যবহার করা উচিত যখন ডেভেলপাররা তাদের অ্যান্ড্রয়েড অ্যাপ্লিকেশানের মধ্যে ফুলস্ক্রিনে তাদের নিজস্ব প্রগতিশীল ওয়েব অ্যাপ রেন্ডার করতে চায়৷ এটি অ্যাপে একমাত্র ক্রিয়াকলাপ হিসাবে ব্যবহার করা যেতে পারে বা অন্যান্য অ্যান্ড্রয়েড কার্যকলাপের সাথে ব্যবহার করা যেতে পারে।
কাস্টম ট্যাব হল তৃতীয় পক্ষের সামগ্রী খোলার প্রস্তাবিত উপায় যা ওয়েব প্ল্যাটফর্মের জন্য ডিজাইন করা হয়েছে, যা অ্যাপ-মধ্যস্থ ব্রাউজার নামেও পরিচিত।