আমি কাজে একটি নির্দিষ্ট প্রজেক্টে কাজ করছিলাম, যেখানে আমাকে பலটি ভিন্ন কম্পোনেন্ট মেসেজের মাধ্যমে কানেক্ট করতে হয়েছিল। প্রতিটির নিজস্ব লজিক এবং কোড ল্যাঙ্গুয়েজ ছিল। এই কarrte আমাকে বুঝতে চেয়ে বাধ্য করল যে বিভিন্ন প্ল্যাটফর্ম কমিউনিকেশন কীভাবে সক্ষম করে।
এই আর্টিকেলের উদ্দেশ্য হলো এই ক্রস-অরিজিন কমিউনিকেশন ব্রিজগুলো ব্যাখ্যা করা এবং সিম্পল কিন্তু ইনফরমেটিভ উদাহরণ উপস্থাপন করা সেগুলো অর্জনের জন্য।
এখানেও অনেক ব্রিজ পান (pun) থাকবে ?
YOU WERE WARNED.
আপনি যদি শুধু কোডের সাথে হাত গোড়া করতে চান, তবে এই আর্টিকেলের নিচে GitHub রিপোজিটরির লিংক আছে।
সাধারণত, আপনি যে JavaScript লিখবেন সেটি ব্রাউজারের ভিতরে চলে। iOS-এ, এটি হতে পারে UIWebView বা WKWebView। Android-এ, একটি WebView।
যেহেতু iOS আরও জটিল প্ল্যাটফর্ম হতে পারে, আমি সেখানে কমিউনিকেশন ব্রিজটি প্রথমে বর্ণনা করব।
London Bridge is Falling Down (iOS)
iOS 8 থেকে, Apple WKWebView ব্যবহার করার পরামর্শ দেয় UIWebView-এর বদলে, তাই নিচের বিবরণ শুধু WKWebView-এর ব্রিজকে অ্যাড্রেস করবে।
UIWebView রেফারেন্সের জন্য, এখানে যান।
WKWebView থেকে JavaScript-এ মেসেজ পাঠাতে, নিচের মেথডটি ব্যবহার করুন:
- (void)evaluateJavaScript:(NSString *)javaScriptString completionHandler:(void (^)(id, NSError *error))completionHandler;
JavaScript থেকে আপনার WKWebView-এ মেসেজ রিসিভ করতে, আপনাকে নিচের কাজগুলো করতে হবে:
- WKWebViewConfiguration-এর একটি ইনস্ট্যান্স তৈরি করুন
- WKUserContentController-এর একটি ইনস্ট্যান্স তৈরি করুন
- আপনার কনফিগারেশনে একটি স্ক্রিপ্ট মেসেজ হ্যান্ডলার যোগ করুন (এই অংশ ব্রিজটি তৈরি করে)। এই অ্যাকশন আপনার মেসেজ হ্যান্ডলারকে উইন্ডো অবজেক্টে নিচের পাথে রেজিস্টার করে: window.webkit.messageHandlers.MSG_HANDLER_NAME
- ক্লাসকে মেসেজ হ্যান্ডলার প্রোটোকল ইমপ্লিমেন্ট করান ফাইলের শীর্ষে
যোগ করে - userContentController:didReceiveScriptMessage ইমপ্লিমেন্ট করুন (এই মেথড JavaScript থেকে মেসেজ রিসিভ হ্যান্ডেল করে)
ব্রিজ তৈরি করা
ধরি আমাদের নিচের HTML পেজ সেটআপ আছে:
<html> <head> <title>Javascript-iOS Communication</title> </head> <body> <script> window.webkit.messageHandlers.myOwnJSHandler.postMessage("Hello World!"); </script> </body> </html>
এবং আমাদের নেটিভ কোডে উপরের বর্ণিত ধাপগুলো ইমপ্লিমেন্ট করি:
#import <UIKit/UIKit.h> #import <WebKit/WebKit.h> // 4 @interface ViewController : UIViewController <WKScriptMessageHandler> @property(nonatomic, strong) WKWebView *webview;
এবর voilà! এখন আপনার পূর্ণ JavaScript - iOS Communication আছে!
Crossing The Bridge (Android)
এখানে বিষয়গুলো অনেক সিম্পল এবং ফ্রেন্ডলি। আমাদের কমিউনিকেশন ব্রিজ সেটআপ করার জন্য শুধু কিছু ধাপ:
- WebView অবজেক্টের একটি ইনস্ট্যান্স তৈরি করুন
- এই WebView-এ JavaScript ইনেবল করুন (setJavaScriptEnabled)
- আপনার নিজস্ব JavaScript Interface সেট করুন (যেটি মেথড ধারণ করবে যা আপনার JavaScript-এ দৃশ্যমান হবে)
- যেকোনো মেথড যা আপনি আপনার JavaScript-এ এক্সপোজ করতে চান তার ডিক্লেয়ারেশনের আগে @JavascriptInterface অ্যানোতেশন থাকতে হবে
আগের মতো, ধরি আমরা এই HTML ফাইল তৈরি করেছি:
এবং আমরা নিচের সিম্পল Android Application তৈরি করেছি:
এবং আরই! আপনি এখন নিজেকে একটি Native Communication Ninja ধরে রাখতে পারেন!
রিপোজিটরির লিংকগুলো:
AndroidtoJS RepositoryiOStoJS Repository⚠️ iOS সংক্রান্ত গুরুত্বপূর্ণ নোট ⚠️
যখন আপনি সেটি পয়েন্টে পৌঁছাবেন যে আপনি আপনার WKWebView ডিস্ট্রয় করতে চান, তবে এটি অতिआবশ্যক যে আপনি আপনার স্ক্রিপ্ট মেসেজ হ্যান্ডলার রিমুভ করেন। আপনি যদি না করেন, তবে স্ক্রিপ্ট মেসেজ হ্যান্ডলার আপনার WKWebView-এর একটি রেফারেন্স ধরে রাখবে এবং মেমরি লিক ঘটবে নতুন WKWebView তৈরি করার সময়।