You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
PatientApp-KKUMC/ios/Runner/WifiConnect/HMG_GUEST.swift

78 lines
2.5 KiB
Swift

//
// HMG_GUEST.swift
// HMG-iOS-Wifi
//
// Created by ZiKambrani on 23/03/1442 AH.
// Copyright © 1442 ZiKambrani. All rights reserved.
//
import UIKit
import NetworkExtension
import SystemConfiguration.CaptiveNetwork
fileprivate let SSID = "HMG-MobileApp"
class HMG_GUEST{
static let shared = HMG_GUEST()
private var complete:((_ status:Bool, _ message:String) -> Void)!
func connect(completion:@escaping ((_ status:Bool, _ message:String) -> Void)){
complete = completion
if isAlreadyConnected() {
FlutterText.with(key: "alreadyConnectedHmgNetwork") { (localized) in
self.complete(true, localized )
}
}else{
connect()
}
}
private func connect() {
let hotspotConfig = NEHotspotConfiguration(ssid: "\(SSID)")
hotspotConfig.joinOnce = false
NEHotspotConfigurationManager.shared.apply(hotspotConfig) {[weak self] (error) in
guard let self = self else { return; }
if let error = error {
FlutterText.with(key: "errorConnectingHmgNetwork") { (localized) in
self.complete(false, localized )
}
}else{
_ = Timer.scheduledTimer(withTimeInterval: 10, repeats: false) { (timer) in
let connected = self.isAlreadyConnected()
let message = connected ? "successConnectingHmgNetwork" : "failedConnectingHmgNetwork"
FlutterText.with(key: message) { (localized) in
self.complete(false, localized )
}
}
}
}
// NSMutableURLRequest(url: URL(string: "www.google.com")!).bind(to: command)
// NEHotspotHelper.register(options: [:], queue: DispatchQueue.global()) { (command) in
// command
// print(command)
// }
}
private func isAlreadyConnected() -> Bool{
var currentSSID: String?
if let interfaces = CNCopySupportedInterfaces() as NSArray? {
for interface in interfaces {
if let interfaceInfo = CNCopyCurrentNetworkInfo(interface as! CFString) as NSDictionary? {
currentSSID = interfaceInfo[kCNNetworkInfoKeySSID as String] as? String
break
}
}
}
print("CurrentConnectedSSID: \(currentSSID)")
return currentSSID == SSID
}
}