Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Implement the interface of isOnAirplaneMode. #10

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,11 @@ public void onMethodCall(MethodCall call, Result result) {
result.success("ON");
else
result.success("OFF");
}else if (call.method.equals("isOnAirplaneMode")) {
if(isAirModeOn())
result.success(true);
else
result.success(false);
} else {
result.notImplemented();
}
Expand Down
104 changes: 61 additions & 43 deletions ios/Classes/SwiftAirplaneModeDetectionPlugin.swift
Original file line number Diff line number Diff line change
Expand Up @@ -4,55 +4,73 @@ import Network

@available(iOS 12.0, *)
public class SwiftAirplaneModeDetectionPlugin: NSObject, FlutterPlugin {
public static func register(with registrar: FlutterPluginRegistrar) {
let channel = FlutterMethodChannel(name: "airplane_mode_detection", binaryMessenger: registrar.messenger())
let instance = SwiftAirplaneModeDetectionPlugin()
registrar.addMethodCallDelegate(instance, channel: channel)
}
public static func register(with registrar: FlutterPluginRegistrar) {
let channel = FlutterMethodChannel(name: "airplane_mode_detection", binaryMessenger: registrar.messenger())
let instance = SwiftAirplaneModeDetectionPlugin()
registrar.addMethodCallDelegate(instance, channel: channel)
}

public func handle(_ call: FlutterMethodCall, result: @escaping FlutterResult) {
if (call.method == "getPlatformVersion"){
result("iOS" + UIDevice.current.systemVersion)
}
public func handle(_ call: FlutterMethodCall, result: @escaping FlutterResult) {
if (call.method == "getPlatformVersion"){
result("iOS" + UIDevice.current.systemVersion)
}else if (call.method == "detectAirplaneMode") {
(self.detectAirplaneMode( completion: { (msg) in
result(msg)
}))
}else if (call.method == "isOnAirplaneMode") {
(self.isOnAirplanceMode( completion: { (msg) in
result(msg)
}))
}
}

else if (call.method == "detectAirplaneMode") {
(self.detectAirplaneMode( completion: { (msg) in
result(msg)
}))
}
public override init() {
super.init()
}

}
private func detectAirplaneMode(completion: @escaping (String) -> Void){
let monitor = NWPathMonitor()
var msg: String = ""
monitor.pathUpdateHandler = { path in
if path.availableInterfaces.count == 0{
msg = "Flight Mode"
print("Flight Mode")
monitor.cancel()

public override init() {
super.init()
}
}
else {
msg = "Not Flight Mode"
print("Not Flight Mode")
monitor.cancel()

}
completion(msg)
}
let queue = DispatchQueue(label: "Monitor", qos: .default, attributes: .concurrent, autoreleaseFrequency: .inherit, target: nil)
monitor.start(queue: queue)
}

private func isOnAirplanceMode(completion: @escaping (Bool) -> Void){
let monitor = NWPathMonitor()
var msg: Bool = false
monitor.pathUpdateHandler = { path in
if path.availableInterfaces.count == 0{
msg = true
print("Flight Mode")
monitor.cancel()

func detectAirplaneMode(completion: @escaping (String) -> Void){
let monitor = NWPathMonitor()
var msg: String = ""
}
else {
msg = false
print("Not Flight Mode")
monitor.cancel()


monitor.pathUpdateHandler = { path in
if path.availableInterfaces.count == 0{
msg = "Flight Mode"
print("Flight Mode")
monitor.cancel()

}
else {
msg = "Not Flight Mode"
print("Not Flight Mode")
monitor.cancel()

}
completion(msg)
}

let queue = DispatchQueue(label: "Monitor", qos: .default, attributes: .concurrent, autoreleaseFrequency: .inherit, target: nil)
monitor.start(queue: queue)

}
}
}
completion(msg)
}
let queue = DispatchQueue(label: "Monitor", qos: .default, attributes: .concurrent, autoreleaseFrequency: .inherit, target: nil)
monitor.start(queue: queue)
}
}


5 changes: 5 additions & 0 deletions lib/airplane_mode_detection.dart
Original file line number Diff line number Diff line change
Expand Up @@ -15,4 +15,9 @@ class AirplaneModeDetection {
final String airplanemode = await _channel.invokeMethod('detectAirplaneMode');
return airplanemode;
}

static Future<bool> isOnAirplaneMode() async {
final bool isOnAirplaneMode = await _channel.invokeMethod('isOnAirplaneMode');
return isOnAirplaneMode;
}
}