نوشتن کد مخصوص IOS در فلاتر
دسترسی به کد خاص iOS مشابه برنامه های موجود در سیستم عامل Android است به جز اینکه از زبان های خاص iOS استفاده می کند – Objective-C یا Swift و iOS SDK. در غیر این صورت ، مفهوم آن مشابه با پلتفرم اندرویدی است.
بگذارید برنامه مشابه برنامه قبلی را برای سیستم عامل iOS نیز بنویسید.
- یک برنامه جدید در Android Studio (macOS) ، flutter_browser_ios_app ایجاد کنیم
- مراحل 2 – 6 را مانند فصل قبل دنبال کنید.
- XCode را شروع کرده و روی File → Open کلیک کنید
- پروژه xcode را در زیر شاخه ios پروژه flutter ما انتخاب کنید.
- AppDelegate.m را در مسیر Runner → Runner path باز کنید . حاوی کد زیر است –
برای باز کردن مرورگر با آدرس مشخص شده ، متدی به نام openBrowser اضافه کرده ایم. یک ارگومان به نام url را می پذیرد.
1 2 3 4 5 6 7 8 9 10 11 |
#include "AppDelegate.h" #include "GeneratedPluginRegistrant.h" @implementation AppDelegate - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { // [GeneratedPluginRegistrant registerWithRegistry:self]; // Override point for customization after application launch. return [super application:application didFinishLaunchingWithOptions:launchOptions]; } @end |
در متد didFinishLaunchingWithOptions ، controller را پیدا کنید و آن را در متغیر controller تنظیم کنید.
1 2 3 4 5 |
- (void)openBrowser:(NSString *)urlString { NSURL *url = [NSURL URLWithString:urlString]; UIApplication *application = [UIApplication sharedApplication]; [application openURL:url]; } |
در متد didFinishLaunchingWithOptions ، کانال مرورگر را به عنوان flutterapp.tutorialspoint.com/browse تنظیم کنید –
1 |
FlutterViewController* controller = (FlutterViewController*)self.window.rootViewController; |
یک متغیر ایجاد کنید ، weakSelf و با کلاس فعلی را تنظیم کنید –
1 |
__weak typeof(self) weakSelf = self; |
اکنون setMethodCallHandler را پیاده سازی کنید. با مطابقت call.method متد openBrowser فراخوانی کنید. با فراخوانی call.argument ن url را دریافت کنید و هنگام فراخوانی با OpenBrowser ، آن را پاس دهید .
1 2 3 4 5 6 |
[browserChannel setMethodCallHandler:^(FlutterMethodCall* call, FlutterResult result) { if ([@"openBrowser" isEqualToString:call.method]) { NSString *url = call.arguments[@"url"]; [weakSelf openBrowser:url]; } else { result(FlutterMethodNotImplemented); } }]; |
کد کامل به صورت زیر است
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
#include "AppDelegate.h" #include "GeneratedPluginRegistrant.h" @implementation AppDelegate - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { // custom code starts FlutterViewController* controller = (FlutterViewController*)self.window.rootViewController; FlutterMethodChannel* browserChannel = [ FlutterMethodChannel methodChannelWithName: @"flutterapp.tutorialspoint.com /browser" binaryMessenger:controller]; __weak typeof(self) weakSelf = self; [browserChannel setMethodCallHandler:^( FlutterMethodCall* call, FlutterResult result) { if ([@"openBrowser" isEqualToString:call.method]) { NSString *url = call.arguments[@"url"]; [weakSelf openBrowser:url]; } else { result(FlutterMethodNotImplemented); } }]; // custom code ends [GeneratedPluginRegistrant registerWithRegistry:self]; // Override point for customization after application launch. return [super application:application didFinishLaunchingWithOptions:launchOptions]; } - (void)openBrowser:(NSString *)urlString { NSURL *url = [NSURL URLWithString:urlString]; UIApplication *application = [UIApplication sharedApplication]; [application openURL:url]; } @end |
Setting پروژه را باز کنید
به Capabilities بروید و Background Modes را فعال کنید
اکنون برنامه را اجرا کنید. این نسخه مشابه نسخه Android است اما مرورگر Safari به جای کروم باز خواهد شد.
دیدگاهتان را بنویسید