অ্যাপ-মধ্যস্থ ব্রাউজার আপনার ব্যবহারকারীদের অ্যাপ থেকে না বেরিয়েই সম্পূর্ণ ওয়েব অভিজ্ঞতা প্রদান করে। অ্যাপ-মধ্যস্থ ব্রাউজার প্রয়োগ করার জন্য Android দুটি প্রাথমিক API অফার করে: কাস্টম ট্যাব এবং WebViews। কোনও লিঙ্ক বা বিজ্ঞাপন থেকে ওয়েব পেজে যেতে হলে ইন-অ্যাপ ব্রাউজার ব্যবহার করুন। আপনি অ্যাপের মধ্যেই সেই পৃষ্ঠা খুলতে পারবেন, যেমনটি ছবি ১-এ দেখানো হয়েছে।
কাস্টম ট্যাব এবং WebView-এর মধ্যে বেছে নেওয়া হল একটি বড় আর্কিটেকচারাল সিদ্ধান্ত যা আপনার ডেভেলপমেন্টের গতি, ব্যবহারকারীর অভিজ্ঞতা এবং UI-এর উপর আপনার কতটা কন্ট্রোল আছে তা প্রভাবিত করে।
দ্রুত তুলনা
আপনার প্রয়োজনের সাথে কোন টুলটি মানানসই তা নির্ধারণ করতে নিম্নলিখিত টেবিল ব্যবহার করুন:
| ফিচার | ওয়েব দর্শন | কাস্টম ট্যাবস |
|---|---|---|
| প্রাথমিক ব্যবহারের উদাহরণ | প্রাথমিক বা সহায়ক কন্টেন্ট হিসেবে ওয়েব ব্যবহার করে হাইব্রিড অ্যাপ তৈরি করা, বিজ্ঞাপন দেখানো, অ্যাপ-মধ্যস্থ ক্যাম্পেন বা পরিষেবার শর্তাবলী সংক্রান্ত পৃষ্ঠা। | এক্সটার্নাল ওয়েবসাইট (যেমন, খবর সম্পর্কিত নিবন্ধ বা প্রোডাক্ট পৃষ্ঠা) থেকে কন্টেন্ট দেখানো। |
| UI কন্ট্রোল | সম্পূর্ণ। এটি একটি View কম্পোনেন্ট যা আপনি যেকোনও জায়গায় রাখতে পারবেন। আপনি আশেপাশের সব UI নিয়ন্ত্রণ করেন। |
সীমিত। আপনি টুলবারের রঙে থিম যোগ করতে এবং কিছু কাস্টম অ্যাকশন যোগ করতে পারবেন। |
| ডেটা ও সেশন | স্যান্ডবক্স করা হয়েছে। এটি ব্যবহারকারীর মূল ব্রাউজারের সাথে কুকি বা লগ-ইন শেয়ার করে না। | শেয়ার করা হয়েছে। এটি ব্যবহারকারীর ডিফল্ট ব্রাউজার সেশন ব্যবহার করে, যার মধ্যে কুকি ও সেভ করা পাসওয়ার্ড অন্তর্ভুক্ত। |
| নেটিভ <-> ওয়েব ব্রিজ | হ্যাঁ। ওয়েব কন্টেন্ট ও নেটিভ অ্যাপ কোডের মধ্যে গভীর, দ্বিমুখী যোগাযোগের জন্য আপনি জাভাস্ক্রিপ্ট ব্রিজ ব্যবহার করতে পারেন। | সীমিত। বেসিক স্ট্রিং পাস করার জন্য আপনি window.postMessage() পদ্ধতি ব্যবহার করতে পারেন। |
| ডেভেলপারের প্রচেষ্টা | বেশি। আপনাকে লাইফসাইকেল, নেভিগেশন ও পারফর্ম্যান্স নিজেকেই ম্যানেজ করতে হবে। | কম। আপনি মাত্র কয়েক লাইনের কোডের মাধ্যমে এটি প্রয়োগ করতে পারবেন। |
ওয়েব দর্শন
WebView হল এমন একটি ভিউ যা আপনার অ্যাপের লেআউটের অবিচ্ছেদ্য অংশ হিসেবে ওয়েব পেজকে দেখায়। এটি শক্তিশালী হলেও কাস্টম ট্যাবের তুলনায় এটি ম্যানেজ করা একটু বেশি জটিল।
WebView রিমোট বা স্থানীয় ওয়েব কন্টেন্ট লোড করতে, জাভাস্ক্রিপ্ট এক্সিকিউট করতে এবং আপনার ওয়েব কন্টেন্ট ও নেটিভ অ্যাপ কোডের মধ্যে দ্বিমুখী কমিউনিকেশন চালু করতে পারে। এর ক্ষমতা সম্পর্কে আরও জানতে, WebView কী করতে পারে দেখুন।
এছাড়াও, আপনি WebView ব্যবহার করে ওয়েব অ্যাপ্লিকেশন ডেলিভার করতে বা আপনার অ্যাপের অংশ হিসেবে অনলাইন ওয়েব পেজ দেখাতে পারবেন। যেমন, ব্যবহারকারীর সাথে করা চুক্তি যা আপনাকে নির্দিষ্ট সময় অন্তর আপডেট করতে হয়। আরও জানতে, WebView-তে ওয়েব অ্যাপ তৈরি করুন নিবন্ধটি দেখুন।
আপনি কেন WebView বেছে নেবেন
WebView ব্যবহার করার জন্য উপযুক্ত কিছু পরিস্থিতি নিচে উল্লেখ করা হল:
- হাইব্রিড অ্যাপ: আপনি এমন একটি অ্যাপ তৈরি করছেন যেখানে ওয়েব কন্টেন্ট ও নেটিভ কম্পোনেন্ট (যেমন নেভিগেশন বার বা ফ্লোটিং অ্যাকশন বোতাম) পাশাপাশি থাকে।
- ফার্স্ট-পার্টি কন্টেন্ট: আপনার ওয়েব কন্টেন্ট হল অ্যাপ অভিজ্ঞতার মূল, ইন্ট্যার্যাক্টিভ অংশ, যেমন ডকুমেন্ট এডিটর বা ডিজাইন ক্যানভাস।
- সম্পূর্ণ UI কন্ট্রোল: আপনাকে ওয়েব পেজের কন্টেন্ট পরিবর্তন করতে হবে অথবা এর উপরে নেটিভ UI এলিমেন্ট ওভারলে করতে হবে।
- গভীর অ্যানালিটিক্স: ওয়েব ভিউতে ব্যবহারকারীর এনগেজমেন্ট ও অ্যাক্টিভিটি সম্পর্কে আপনার বিস্তারিত ইনসাইট প্রয়োজন।
মূল ট্রেড-অফ
WebView ব্যবহার করার সময় নিম্নলিখিত কিছু গুরুত্বপূর্ণ ট্রেড-অফ বিবেচনা করতে হবে:
- পারফর্ম্যান্স: WebView-এর জন্য অনেক মেমরির প্রয়োজন হতে পারে। আপনি এটি যত্ন সহকারে ম্যানেজ না করলে, পারফর্ম্যান্স সংক্রান্ত সমস্যা বা ANR (অ্যাপ কাজ করছে না সংক্রান্ত সমস্যা) হতে পারে।
- নিরাপত্তা ও রক্ষণাবেক্ষণ: নিরাপত্তা আরও জোরদার করা এবং লাইফসাইকেল ম্যানেজ করার দায়িত্ব আপনার। এর মধ্যে
WebViewCompat.saveState()ব্যবহার করে প্রসেস রিক্রিয়েশন জুড়ে স্টেট প্রিজার্ভেশন ম্যানেজ করা এবং Android-এর ১ এমবি সেভ করা স্টেট ট্রানজ্যাকশন সীমার মধ্যে থাকা অন্তর্ভুক্ত। তবে, WebView আপডেট Google Play-এর মাধ্যমে বিশ্বব্যাপী রিলিজ করা হয়, তাই আপনাকে অন্তর্নিহিত ইঞ্জিন পুরনো হয়ে যাওয়ার ব্যাপারে চিন্তা করতে হবে না।
কাস্টম ট্যাবস
ব্যবহারকারীদের এক্সটার্নাল URL-এ ডাইরেক্ট করার জন্য কাস্টম ট্যাব একটি দুর্দান্ত বিকল্প, কারণ এটি আপনার অ্যাপের উপর স্লাইড করে এমন একটি দ্রুত, নিরাপদ এবং ব্যবহারকারী-বান্ধব ব্রাউজার উইন্ডো প্রদান করে।
আপনি কেন কাস্টম ট্যাব বেছে নেবেন
কাস্টম ট্যাব ব্যবহার করার জন্য উপযুক্ত কিছু পরিস্থিতি নিচে উল্লেখ করা হল:
- এক্সটার্নাল লিঙ্ক: কোনও ব্যবহারকারী আপনার মালিকানাধীন নয় এমন কোনও ওয়েবসাইটের লিঙ্কে ট্যাপ করলে, কাস্টম ট্যাব তাকে আপনার অ্যাপের প্রসঙ্গে রাখে এবং একই সাথে সম্পূর্ণ ব্রাউজার অভিজ্ঞতা প্রদান করে।
- ইন্টিগ্রেশনের সুবিধা: এটি হল এম্বেড করা ওয়েব অভিজ্ঞতা চালু করার সবচেয়ে সহজ উপায়।
- শেয়ার করা স্টেট: এটি ব্যবহারকারীর ডিফল্ট ব্রাউজারের সাথে কুকি শেয়ার করে, তাই ব্যবহারকারীকে আগে ভিজিট করা সাইটে আবার সাইন-ইন করতে হয় না।
- থার্ড-পার্টি সাইন-ইন: এগুলি থার্ড-পার্টি সাইন-ইন ফ্লোয়ের (যেমন, "Google-এর মাধ্যমে সাইন-ইন করুন" বা "Facebook-এর মাধ্যমে সাইন-ইন করুন") জন্য উপযুক্ত কারণ ব্রাউজার ক্রেডেনশিয়াল নিরাপদে ম্যানেজ করে।
যদিও বেশিরভাগ ব্রাউজার কাস্টম ট্যাব সমর্থন করে, কিছু ব্রাউজার অন্যদের চেয়ে বেশি কাস্টমাইজেশন অফার করে। আরও তথ্যের জন্য, ব্রাউজার সহায়তা দেখুন।
Jetpack Compose-এ ওয়েব কন্টেন্ট ব্যবহার করা
Jetpack Compose-এর মাধ্যমে তৈরি করার সময় আপনি Custom Tabs এবং WebView, দুটিই ব্যবহার করতে পারবেন:
- কাস্টম ট্যাব: যেহেতু কাস্টম ট্যাব
Intentব্যবহার করে, তাই আপনি আপনার কম্পোজ ফাংশনের যেকোনওContextথেকে সেগুলি লঞ্চ করতে পারবেন, যা একটি নিরবচ্ছিন্ন ইন্টিগ্রেশন তৈরি করে। - WebView: Compose-এ এখনও কোনও নেটিভ WebView কম্পোজেবল নেই, তাই আপনার লেআউটে স্ট্যান্ডার্ড WebView এম্বেড করতে আপনাকে
AndroidViewব্যবহার করতে হবে।
অতিরিক্ত রিসোর্স
WebView বা Custom Tabs API ব্যবহার করে Android-চালিত ডিভাইসের জন্য ওয়েব পেজ ডেভেলপ করতে, নিম্নলিখিত ডকুমেন্ট দেখুন:
- আপনার অ্যাপে প্রাথমিক বা সহায়ক কন্টেন্ট হিসেবে ওয়েব কন্টেন্ট এম্বেড করা
- API রেফারেন্স: WebView
- কাস্টম ট্যাব ওভারভিউ
- বিশ্বস্ত ওয়েব অ্যাক্টিভিটির ওভারভিউ
- WebView-এর স্ট্যাটাস দক্ষতার সাথে ম্যানেজ করা
- ব্রাউজার সহায়তা