Flutter - Menulis Kode Khusus IOS
Mengakses kode khusus iOS mirip dengan yang ada di platform Android kecuali menggunakan bahasa khusus iOS - Objective-C atau Swift dan iOS SDK. Jika tidak, konsepnya sama dengan platform Android.
Mari kita tulis aplikasi yang sama seperti pada bab sebelumnya untuk platform iOS juga.
Mari kita buat aplikasi baru di Android Studio (macOS), flutter_browser_ios_app
Ikuti langkah 2 - 6 seperti pada bab sebelumnya.
Jalankan XCode dan klik File → Open
Pilih proyek xcode di bawah direktori ios dari proyek flutter kami.
Buka AppDelegate.m di bawah Runner → Runner path. Ini berisi kode berikut -
#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
Kami telah menambahkan metode, openBrowser untuk membuka browser dengan url tertentu. Ini menerima argumen tunggal, url.
- (void)openBrowser:(NSString *)urlString {
NSURL *url = [NSURL URLWithString:urlString];
UIApplication *application = [UIApplication sharedApplication];
[application openURL:url];
}
Dalam metode didFinishLaunchingWithOptions, temukan pengontrol dan setel ke variabel pengontrol.
FlutterViewController* controller = (FlutterViewController*)self.window.rootViewController;
Dalam metode didFinishLaunchingWithOptions, setel saluran browser sebagai flutterapp.tutorialspoint.com/browse -
FlutterMethodChannel* browserChannel = [
FlutterMethodChannel methodChannelWithName:
@"flutterapp.tutorialspoint.com/browser" binaryMessenger:controller];
Buat variabel, weakSelf dan setel kelas saat ini -
__weak typeof(self) weakSelf = self;
Sekarang, implementasikan setMethodCallHandler. Panggil openBrowser dengan mencocokkan call.method. Dapatkan url dengan memanggil call.arguments dan meneruskannya saat memanggil openBrowser.
[browserChannel setMethodCallHandler:^(FlutterMethodCall* call, FlutterResult result) {
if ([@"openBrowser" isEqualToString:call.method]) {
NSString *url = call.arguments[@"url"];
[weakSelf openBrowser:url];
} else { result(FlutterMethodNotImplemented); }
}];
Kode lengkapnya adalah sebagai berikut -
#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
Buka pengaturan proyek.
Pergi ke Capabilities dan aktifkan Background Modes.
Menambahkan *Background fetch dan Remote Notification**.
Sekarang, jalankan aplikasinya. Ini berfungsi mirip dengan versi Android tetapi browser Safari akan dibuka, bukan chrome.