একটি macOS GUI-তে ওয়েবমিন এম্বেড করা: চ্যালেঞ্জ এবং সমাধান
একটি ব্যবহারকারী-বান্ধব ইন্টারফেসের সাথে সার্ভার কনফিগারেশনকে স্ট্রীমলাইন করতে একটি macOS অ্যাপ্লিকেশন নির্মাণের কল্পনা করুন। যদি আপনার অ্যাপ্লিকেশন Webmin-এর উপর নির্ভর করে - কনফিগারেশন ফাইলগুলি পরিচালনা করার জন্য একটি জনপ্রিয় টুল - এটি একটি Cocoa অ্যাপ্লিকেশনে এম্বেড করা সহজ মনে হতে পারে। কিন্তু এখানে মোচড় দেওয়া হল: রেন্ডারিং সিজিআই স্ক্রিপ্ট এবং পার্ল এ WKWebView অনন্য চ্যালেঞ্জ উপস্থাপন করে। 🖥️
অনেক ডেভেলপার, বিশেষ করে যারা ওয়েব টেকনোলজিতে নতুন, তারা একটি ওয়েবমিন মডিউলকে একটি ম্যাকওএস জিইউআই-এর মধ্যে নির্বিঘ্নে চালানোর বিষয়ে নিজেদের বিভ্রান্ত করে। বিভ্রান্তি প্রায়শই একটি ক্লায়েন্ট-সাইড ওয়েবকিট-ভিত্তিক দৃশ্যের সাথে সার্ভার-সাইড প্রযুক্তিগুলিকে একীভূত করার ফলে উদ্ভূত হয়। সৌভাগ্যবশত, এই ব্যবধানটি পূরণ করার একটি উপায় রয়েছে এবং এটি মনে হওয়ার চেয়ে সহজ।
এটিকে ওয়েবমিন ফাইলগুলিকে সরাসরি আপনার অ্যাপে বান্ডলিং হিসাবে ভাবুন। এগুলিকে অ্যাপের সংস্থান ডিরেক্টরিতে রেখে, আপনি এই ফাইলগুলিকে একটি WKWebView এ লোড করতে NSURLRequest ব্যবহার করতে পারেন৷ যাইহোক, প্রশ্নগুলি থেকে যায়: এটি কি CGI স্ক্রিপ্টগুলির গতিশীল রেন্ডারিং সমর্থন করতে পারে? কিভাবে এটা সঠিকভাবে চালানো যাবে পার্ল স্ক্রিপ্ট?
এই নিবন্ধে, আমরা আপনাকে একটি উদাহরণ সেটআপের মধ্য দিয়ে হেঁটে যাব এবং মসৃণ রেন্ডারিং নিশ্চিত করতে টিপস শেয়ার করব। আপনি যদি একজন অবজেক্টিভ-সি বা সুইফ্ট ডেভেলপার হন এই পথটি অন্বেষণ করছেন, তাহলে ব্যবহারিক পরামর্শ এবং বাস্তব-বিশ্বের উদাহরণের জন্য সাথে থাকুন। 🌟
আদেশ | ব্যবহারের উদাহরণ |
---|---|
pathForResource:ofType: | অ্যাপ বান্ডেলের মধ্যে ফাইলগুলি সনাক্ত করতে উদ্দেশ্য-সি-তে ব্যবহৃত হয়। অ্যাপ্লিকেশনটিতে এমবেড করা ওয়েবমিন ফাইলগুলি অ্যাক্সেস করার জন্য এটি গুরুত্বপূর্ণ। |
fileURLWithPath: | একটি স্ট্রিং পাথ থেকে একটি ফাইল URL তৈরি করে। ভিউতে স্থানীয় CGI বা HTML ফাইল লোড করার জন্য WKWebView এর জন্য অপরিহার্য। |
loadRequest: | WKWebView-এ, এই পদ্ধতিটি একটি নির্দিষ্ট NSURLRequest লোড করে, যা স্থানীয় বা দূরবর্তী ওয়েব সামগ্রী প্রদর্শনের অনুমতি দেয়। |
CGIHTTPRequestHandler | CGI অনুরোধগুলি পরিচালনা করার জন্য পাইথনে একটি বিশেষ শ্রেণী। এটি স্থানীয়ভাবে সার্ভার-সাইড স্ক্রিপ্ট কার্যকর করার মূল চাবিকাঠি। |
cgi_directories | CGIHTTPRequestHandler এর একটি বৈশিষ্ট্য যা CGI স্ক্রিপ্ট ধারণকারী ডিরেক্টরি নির্দিষ্ট করে। এক্সিকিউশনের জন্য স্ক্রিপ্ট ম্যাপ করতে ব্যবহৃত হয়। |
XCTestExpectation | XCTest এর অংশ, এটি শর্তাবলী সেট করে অ্যাসিঙ্ক্রোনাস পরীক্ষার অনুমতি দেয় যা এগিয়ে যাওয়ার আগে অবশ্যই পূরণ করতে হবে। |
waitForExpectationsWithTimeout:handler: | ওয়েবভিউ লোডিং জড়িত পরীক্ষাগুলি সঠিকভাবে যাচাই করা হয়েছে তা নিশ্চিত করে অ্যাসিঙ্ক্রোনাস কোড সম্পূর্ণ হওয়ার জন্য অপেক্ষা করতে XCTest-এ ব্যবহৃত হয়। |
dispatch_after | একটি নির্দিষ্ট বিলম্বের পরে কোডের একটি ব্লক কার্যকর করার জন্য একটি GCD (গ্র্যান্ড সেন্ট্রাল ডিসপ্যাচ) পদ্ধতি, অ্যাসিঙ্ক্রোনাস অপারেশন পরিচালনার জন্য পরীক্ষায় ব্যবহৃত হয়। |
serve_forever | পাইথনের সকেটসার্ভার মডিউলের একটি পদ্ধতি যা সার্ভারকে সচল রাখে, পরীক্ষার সময় CGI অনুরোধগুলির ক্রমাগত পরিচালনার জন্য গুরুত্বপূর্ণ। |
applicationSupportsSecureRestorableState: | নিশ্চিত করে যে macOS অ্যাপগুলি সুরক্ষিত স্থিতি পুনরুদ্ধার সমর্থন করে, ওয়েবমিনের মতো অ্যাপে সংবেদনশীল কনফিগারেশন পরিচালনা করার সময় একটি গুরুত্বপূর্ণ অনুশীলন। |
একটি macOS কোকো অ্যাপে ওয়েবমিন এম্বেড করা এবং চালানো
একটি macOS Cocoa অ্যাপ্লিকেশনের ভিতরে ওয়েবমিনকে নির্বিঘ্নে চালানোর জন্য, প্রথম ধাপে অ্যাপটিতে সমস্ত প্রয়োজনীয় ফাইল বান্ডেল করা জড়িত। এর মধ্যে রয়েছে ওয়েবমিন মডিউল এবং স্ক্রিপ্ট, যা অ্যাপের বান্ডেলের মধ্যে একটি ডেডিকেটেড ফোল্ডারে রাখা যেতে পারে। অবজেক্টিভ-সি পদ্ধতি ব্যবহার করে pathForResource:ofType:, অ্যাপ্লিকেশনটি গতিশীলভাবে এই ফাইলগুলি সনাক্ত করে। এই প্রক্রিয়াটি নিশ্চিত করে যে WKWebView উপাদানটি বাহ্যিক নির্ভরতা ছাড়াই প্রয়োজনীয় ফাইলগুলি অ্যাক্সেস করতে পারে। স্থানীয় অ্যাক্সেসের জন্য আপনার সমস্ত সার্ভার-সাইড সংস্থানগুলি সুন্দরভাবে আপনার অ্যাপ প্যাকেজে প্যাক করার মতো এটিকে মনে করুন। 🖥️
ফাইলগুলি অ্যাক্সেসযোগ্য হয়ে গেলে, fileURLWithPath কমান্ড স্থানীয় পথটিকে একটি ব্যবহারযোগ্য URL-এ রূপান্তরিত করে। এই URLটি তারপর ব্যবহার করে WKWebView-এ লোড করা হয় লোড অনুরোধ পদ্ধতি, যা রেন্ডারিং প্রক্রিয়া শুরু করে। এই পদক্ষেপটি অত্যন্ত গুরুত্বপূর্ণ, কারণ WKWebView শুধুমাত্র ওয়েব বিষয়বস্তু বোঝে, এটিকে সঠিক সংস্থানগুলিতে নির্দেশ করা গুরুত্বপূর্ণ করে তোলে। উদাহরণস্বরূপ, আপনি ব্যবহারকারীর ইন্টারঅ্যাকশনের জন্য একটি সূচনা পয়েন্ট হিসাবে "index.cgi" এর মতো একটি Webmin মডিউল লোড করতে পারেন, যা ব্যবহারকারীদের আপনার অ্যাপে এমবেড করা একটি গ্রাফিক্যাল ইন্টারফেসের মাধ্যমে কনফিগারেশন পরিচালনা করতে দেয়৷
যাইহোক, স্থানীয়ভাবে CGI এবং পার্ল স্ক্রিপ্ট রেন্ডার করা অতিরিক্ত চ্যালেঞ্জ তৈরি করে। এটি মোকাবেলা করার জন্য, একটি সমাধান হল একটি লাইটওয়েট স্থানীয় HTTP সার্ভার সেট আপ করা। পাইথনের মত টুল ব্যবহার করে CGIHTTPRrequestHandler, অ্যাপ্লিকেশনটি একটি সার্ভার পরিবেশকে অনুকরণ করতে পারে যেখানে CGI স্ক্রিপ্টগুলি কার্যকর করা হয়। এই পদ্ধতিটি নিশ্চিত করে যে ওয়েবমিন দ্বারা উত্পন্ন গতিশীল সামগ্রী সঠিকভাবে রেন্ডার করা হয়েছে। উদাহরণস্বরূপ, যদি একজন ব্যবহারকারী সার্ভার সেটিংস পরিবর্তন করে, CGI স্ক্রিপ্ট ডেটা প্রক্রিয়া করে এবং আপডেট করা ইন্টারফেস WKWebView-এর মধ্যে প্রদর্শিত হয়। 🚀
চূড়ান্ত ধাপে সবকিছু সুষ্ঠুভাবে চলছে তা নিশ্চিত করার জন্য কঠোর পরীক্ষা জড়িত। XCTest-এ ইউনিট পরীক্ষা ব্যবহার করে, আমরা যাচাই করতে পারি যে WKWebView সঠিকভাবে বিষয়বস্তু লোড করে এবং স্ক্রিপ্টের সাথে ইন্টারঅ্যাক্ট করে। উদাহরণস্বরূপ, ওয়েবমিন ইন্টারফেস লোড করা এবং একটি কনফিগারেশন ফাইল প্রদর্শিত এবং সম্পাদনাযোগ্য কিনা তা যাচাই করা পরীক্ষাগুলি অনুকরণ করতে পারে। সঙ্গে অ্যাসিঙ্ক্রোনাস পরীক্ষা অন্তর্ভুক্ত করে dispatch_after, আপনি ব্যবহারকারীর মিথস্ক্রিয়া অনুকরণ করতে পারেন এবং ইন্টারফেসের স্থায়িত্ব নিশ্চিত করতে পারেন। সংক্ষেপে, এই পরীক্ষাগুলি মনের শান্তি প্রদান করে যে Webmin, CGI, এবং WKWebView এর মধ্যে একীকরণ বিভিন্ন macOS সেটআপে প্রত্যাশিতভাবে কাজ করে।
কিভাবে একটি macOS কোকো অ্যাপ্লিকেশনে ওয়েবমিন মডিউল চালাবেন
এই সমাধানটি একটি WKWebView কম্পোনেন্ট ব্যবহার করে অবজেক্টিভ-সি এবং সুইফ্ট ব্যবহার করে একটি macOS GUI অ্যাপ্লিকেশনে ওয়েবমিন মডিউল এম্বেড করা প্রদর্শন করে। এটি সিজিআই এবং পার্ল স্ক্রিপ্টগুলির দক্ষ পরিচালনার উপর দৃষ্টি নিবদ্ধ করে।
#import <Cocoa/Cocoa.h>
#import <WebKit/WebKit.h>
@interface AppDelegate : NSObject <NSApplicationDelegate>
@property (assign) IBOutlet WKWebView *webMinWKWebView;
@end
// AppDelegate.m
@implementation AppDelegate
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification {
NSString *webminFolderPath = [[NSBundle mainBundle] pathForResource:@"webMinFiles" ofType:@""];
NSURL *webMinFilesURL = [NSURL fileURLWithPath:[webminFolderPath stringByAppendingPathComponent:@"index.cgi"]];
NSURLRequest *request = [NSURLRequest requestWithURL:webMinFilesURL];
[self.webMinWKWebView loadRequest:request];
}
- (void)applicationWillTerminate:(NSNotification *)aNotification {
// Clean up resources here
}
@end
বিকল্প সমাধান: CGI নির্বাহের সুবিধার্থে একটি স্থানীয় HTTP সার্ভার ব্যবহার করা
সিজিআই এক্সিকিউশন পরিচালনা করতে এবং এটিকে WKWebView-এ একীভূত করতে পাইথনের SimpleHTTPServer-এর মতো হালকা ওজনের স্থানীয় HTTP সার্ভার ব্যবহার করা এই পদ্ধতির অন্তর্ভুক্ত।
import os
import http.server
import socketserver
os.chdir("path/to/webmin/files")
class CGIHandler(http.server.CGIHTTPRequestHandler):
cgi_directories = ["/cgi-bin"]
PORT = 8080
with socketserver.TCPServer(("", PORT), CGIHandler) as httpd:
print("Serving at port", PORT)
httpd.serve_forever()
উভয় সমাধানের জন্য ইউনিট পরীক্ষা
WKWebView লোডিং এবং CGI স্ক্রিপ্ট এক্সিকিউশন যাচাই করার জন্য ইউনিট পরীক্ষা।
import XCTest
@interface WebMinTests : XCTestCase
@end
@implementation WebMinTests
- (void)testWKWebViewLoadsCorrectly {
WKWebView *webView = [[WKWebView alloc] init];
NSURL *testURL = [NSURL URLWithString:@"file://path/to/index.cgi"];
NSURLRequest *request = [NSURLRequest requestWithURL:testURL];
XCTestExpectation *expectation = [self expectationWithDescription:@"WebView loads"];
[webView loadRequest:request];
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(5 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
XCTAssertNotNil(webView.URL);
[expectation fulfill];
});
[self waitForExpectationsWithTimeout:10 handler:nil];
}
@end
MacOS অ্যাপ্লিকেশনে WKWebView এর সাথে CGI এক্সিকিউশন ব্রিজিং
একটি ম্যাকওএস কোকো অ্যাপ্লিকেশনে ওয়েবমিন এম্বেড করার একটি প্রায়শই উপেক্ষিত দিকটি কার্যকর করার পরিবেশ পরিচালনা করছে সিজিআই এবং পার্ল স্ক্রিপ্ট যেহেতু এই প্রযুক্তিগুলি ঐতিহ্যগতভাবে একটি ওয়েব সার্ভারে চলে, তাই ডেভেলপারদের অবশ্যই ডাইনামিক কন্টেন্ট পরিচালনার জন্য WKWebView-এর জন্য সার্ভারের মতো পরিবেশ অনুকরণ করতে হবে। এটি অ্যাপ্লিকেশনের পাশাপাশি একটি লাইটওয়েট স্থানীয় HTTP সার্ভার স্থাপন করে, WKWebView-কে CGI স্ক্রিপ্টগুলির সাথে যোগাযোগ করতে সক্ষম করে যে কোনও ওয়েব সার্ভারের সাথে করা যেতে পারে। 🛠️
আরেকটি গুরুত্বপূর্ণ চ্যালেঞ্জ হল Webmin-এর সাথে বান্ডিল করা পার্ল ইন্টারপ্রেটারের যথাযথ প্রয়োগ নিশ্চিত করা। macOS অ্যাপ্লিকেশনগুলি তাদের রিসোর্স ডিরেক্টরিতে প্রয়োজনীয় বাইনারি অন্তর্ভুক্ত করতে পারে। এনভায়রনমেন্ট ভেরিয়েবলগুলি প্রোগ্রামগতভাবে বা একটি র্যাপার স্ক্রিপ্টের মাধ্যমে সেট আপ করার মাধ্যমে, অ্যাপ্লিকেশনটি নিশ্চিত করে যে WKWebView সফলভাবে পার্ল স্ক্রিপ্টের গতিশীল আউটপুট যেমন কনফিগারেশন আপডেট বা ডায়াগনস্টিক ফলাফলগুলি সম্পাদন করে এবং রেন্ডার করে। এই ইন্টিগ্রেশন ব্যাকএন্ড নমনীয়তার সাথে GUI সহজে একত্রিত করে একটি বিরামহীন ব্যবহারকারীর অভিজ্ঞতা তৈরি করে। 🚀
নিরাপত্তা আরেকটি মূল বিবেচনা। যেহেতু CGI স্ক্রিপ্টগুলি শক্তিশালী কিন্তু ব্যবহার করা যেতে পারে, তাই তাদের কাছে পাঠানো সমস্ত ইনপুট অবশ্যই স্যানিটাইজ করা উচিত। আপনার কোডে বৈধতা প্রয়োগ করা এবং macOS স্যান্ডবক্সিং সুবিধা নিশ্চিত করে যে এই স্ক্রিপ্টগুলি সিস্টেমের অনিচ্ছাকৃত এলাকায় অ্যাক্সেস বা পরিবর্তন করে না। এই পদক্ষেপগুলি অ্যাপ্লিকেশনটির কার্যকারিতা বজায় রাখার সময় ব্যবহারকারীর সিস্টেমকে রক্ষা করে৷ এই সেটআপের মাধ্যমে, বিকাশকারীরা একটি স্বজ্ঞাত অথচ সুরক্ষিত কনফিগারেশন ইন্টারফেস প্রদান করতে পারে, সার্ভার-সাইড স্ক্রিপ্টিং এবং নেটিভ macOS ডিজাইন নীতিগুলির মধ্যে ব্যবধান পূরণ করতে পারে।
macOS অ্যাপে ওয়েবমিন এম্বেড করার বিষয়ে প্রায়শই জিজ্ঞাসিত প্রশ্ন
- WKWebView এ স্থানীয় ওয়েবমিন ফাইল লোড করার সর্বোত্তম উপায় কী?
- ব্যবহার করুন pathForResource ফাইল সনাক্ত করতে এবং fileURLWithPath WKWebView-এ একটি URL হিসাবে তাদের লোড করতে।
- CGI স্ক্রিপ্ট একটি ওয়েব সার্ভার ছাড়া চালানো যাবে?
- হ্যাঁ, পাইথনের মতো হালকা স্থানীয় HTTP সার্ভার ব্যবহার করে CGIHTTPRequestHandler, যা সার্ভারের মত আচরণ অনুকরণ করে।
- একটি CGI স্ক্রিপ্ট কার্যকর করতে ব্যর্থ হলে আমি কীভাবে ত্রুটিগুলি পরিচালনা করব?
- আপনার HTTP সার্ভার সেটআপ বা স্ক্রিপ্টে শক্তিশালী ত্রুটি পরিচালনা করুন এবং ডিবাগিংয়ের জন্য ত্রুটিগুলি লগ করুন৷ ব্যবহার করুন dispatch_after প্রয়োজন হলে পুনরায় চেষ্টা করতে।
- কি নিরাপত্তা ব্যবস্থা সুপারিশ করা হয়?
- স্ক্রিপ্টগুলিতে পাঠানো ইনপুটগুলি সর্বদা স্যানিটাইজ করুন এবং সিস্টেম সংস্থানগুলিতে অ্যাক্সেস সীমিত করতে macOS স্যান্ডবক্সিং সক্ষম করুন৷
- এই বাস্তবায়নের জন্য উদ্দেশ্য-সি এর পরিবর্তে সুইফট ব্যবহার করা কি সম্ভব?
- একেবারে। পদ্ধতি পছন্দ loadRequest এবং pathForResource সুইফটে সম্পূর্ণরূপে সমর্থিত।
- WKWebView কি CGI দ্বারা উত্পন্ন ফর্মগুলির মতো গতিশীল সামগ্রী পরিচালনা করতে পারে?
- হ্যাঁ, WKWebView গতিশীল ফর্ম রেন্ডার করতে পারে, তবে নিশ্চিত করুন যে CGI আউটপুট প্রদর্শনের জন্য সঠিকভাবে ফর্ম্যাট করা হয়েছে।
- আমি কিভাবে পরীক্ষা করতে পারি যে CGI স্ক্রিপ্টগুলি সঠিকভাবে চলছে?
- XCTest এর সাথে ইউনিট পরীক্ষা ব্যবহার করুন এবং যেমন টুল ব্যবহার করে স্ক্রিপ্ট কল অনুকরণ করুন NSURLSession.
- এই উদ্দেশ্যে WKWebView ব্যবহার করার সীমাবদ্ধতা কি?
- WKWebView নেটিভভাবে সার্ভার-সাইড স্ক্রিপ্টিংকে সমর্থন করে না, তাই HTTP সার্ভারের মতো বাহ্যিক সেটআপ প্রয়োজন।
- আমার কি আমার অ্যাপের সাথে পার্ল ইন্টারপ্রেটার প্যাকেজ করতে হবে?
- হ্যাঁ, যদি ব্যবহারকারীর সিস্টেম ডিফল্টরূপে পার্ল অন্তর্ভুক্ত না করে। সামঞ্জস্যের জন্য অ্যাপের সংস্থানগুলিতে এটি অন্তর্ভুক্ত করুন।
- আমি কি এই সেটআপে ওয়েবমিন প্লাগইনগুলি অন্তর্ভুক্ত করতে পারি?
- হ্যাঁ, নিশ্চিত করুন যে সেগুলি অ্যাপ বান্ডেলে অন্তর্ভুক্ত রয়েছে এবং স্ক্রিপ্ট এবং CGI ফাইলগুলির সাথে সঠিকভাবে লিঙ্ক করা আছে৷
ওয়েবমিনকে একীভূত করার মূল উপায়
WKWebView সহ একটি macOS অ্যাপে Webmin এম্বেড করা সার্ভার-সাইড প্রযুক্তি এবং নেটিভ অ্যাপ ইন্টারফেসের মধ্যে ব্যবধান পূরণ করে। সংস্থানগুলি একত্রিত করে এবং CGI এবং পার্ল সম্পাদনের জন্য একটি পরিবেশ স্থাপন করে, আপনি একটি ব্যবহারকারী-বান্ধব ডিজাইনের মধ্যে শক্তিশালী কার্যকারিতা সরবরাহ করতে পারেন। 🖥️
নিরাপত্তা, দক্ষতা, এবং পরীক্ষা সাফল্যের জন্য অত্যন্ত গুরুত্বপূর্ণ। ব্যবহারকারীর ইনপুটগুলিকে স্যানিটাইজ করা থেকে শুরু করে ম্যাকওএস স্যান্ডবক্সিং ব্যবহার করা পর্যন্ত, প্রতিটি পদক্ষেপ একটি মসৃণ এবং সুরক্ষিত অভিজ্ঞতা নিশ্চিত করে৷ এই অনুশীলনগুলির সাহায্যে, এমনকি জটিল সার্ভারের কাজগুলিকে সরলীকরণ করা যেতে পারে, যা ডেভেলপার এবং শেষ ব্যবহারকারীদের জন্য একইভাবে মূল্যবান সরঞ্জাম সরবরাহ করে। 🚀
ম্যাকওএস অ্যাপ্লিকেশনগুলিতে ওয়েবমিন বাস্তবায়নের জন্য উত্স এবং রেফারেন্স
- ব্যবহার সম্পর্কে বিস্তারিত WKWebView macOS অ্যাপে ওয়েব কন্টেন্ট এম্বেড করার জন্য এখানে পাওয়া যাবে অ্যাপল ডেভেলপার ডকুমেন্টেশন .
- Python HTTP সার্ভারের সাথে CGI স্ক্রিপ্ট এক্সিকিউশন সেট আপ করার নির্দেশিকা এখানে উপলব্ধ পাইথন HTTP সার্ভার ডকুমেন্টেশন .
- macOS অ্যাপ্লিকেশনগুলিতে সংস্থানগুলি বান্ডলিং সম্পর্কে শেখার জন্য, পড়ুন অ্যাপল ফাউন্ডেশন ফ্রেমওয়ার্ক: বান্ডিল .
- ওয়েবমিন ইন্টিগ্রেশন এবং কনফিগারেশন পরিচালনার অন্তর্দৃষ্টি এখানে অ্যাক্সেসযোগ্য অফিসিয়াল ওয়েবমিন ওয়েবসাইট .
- ম্যাকোস স্যান্ডবক্সিং এবং নিরাপত্তা ব্যবস্থা সম্পর্কিত তথ্য এখানে পাওয়া যাবে অ্যাপল নিরাপত্তা ডকুমেন্টেশন .