diff --git a/.hbuilderx/launcher/hx_iOS_resign.json b/.hbuilderx/launcher/hx_iOS_resign.json
new file mode 100644
index 0000000000000000000000000000000000000000..c0112903424c0ba6d2e48876b0edba88416a4d4f
--- /dev/null
+++ b/.hbuilderx/launcher/hx_iOS_resign.json
@@ -0,0 +1 @@
+{"index":1}
\ No newline at end of file
diff --git a/uni_modules/uni-wifi/utssdk/app-ios/Info.plist b/uni_modules/uni-wifi/utssdk/app-ios/Info.plist
new file mode 100644
index 0000000000000000000000000000000000000000..001d3ce5a5e71eef99a0009a49d8a5d6a4aee009
--- /dev/null
+++ b/uni_modules/uni-wifi/utssdk/app-ios/Info.plist
@@ -0,0 +1,8 @@
+
+
+
+
+ NSLocationWhenInUseUsageDescription
+ 使用期间获取位置权限
+
+
\ No newline at end of file
diff --git a/uni_modules/uni-wifi/utssdk/app-ios/UTS.entitlements b/uni_modules/uni-wifi/utssdk/app-ios/UTS.entitlements
new file mode 100644
index 0000000000000000000000000000000000000000..240b91f053ded7f45a1077b4b29487e882e2fa3d
--- /dev/null
+++ b/uni_modules/uni-wifi/utssdk/app-ios/UTS.entitlements
@@ -0,0 +1,8 @@
+
+
+
+
+ com.apple.developer.networking.wifi-info
+
+
+
\ No newline at end of file
diff --git a/uni_modules/uni-wifi/utssdk/app-ios/config.json b/uni_modules/uni-wifi/utssdk/app-ios/config.json
new file mode 100644
index 0000000000000000000000000000000000000000..bc3370d44590a78c0c5bb938221d30c3203f6414
--- /dev/null
+++ b/uni_modules/uni-wifi/utssdk/app-ios/config.json
@@ -0,0 +1,9 @@
+{
+ "frameworks": [
+ "CoreLocation",
+ "SystemConfiguration"
+ ],
+ "deploymentTarget": "9.0",
+ "validArchitectures": [
+ "arm64", "armv7" ]
+}
\ No newline at end of file
diff --git a/uni_modules/uni-wifi/utssdk/app-ios/index.uts b/uni_modules/uni-wifi/utssdk/app-ios/index.uts
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..340cbc4dbb3c50e3b067efdf7e7e36ca6eebea9b 100644
--- a/uni_modules/uni-wifi/utssdk/app-ios/index.uts
+++ b/uni_modules/uni-wifi/utssdk/app-ios/index.uts
@@ -0,0 +1,324 @@
+import { CLLocationManager, CLAuthorizationStatus, CLLocationManagerDelegate } from 'CoreLocation'
+import { CaptiveNetwork, kCNNetworkInfoKeySSID, kCNNetworkInfoKeyBSSID } from 'SystemConfiguration.CaptiveNetwork';
+import { JSONEncoder, NSArray, NSDictionary } from 'Foundation';
+import { CFString } from 'CoreFoundation';
+import { UIDevice } from 'UIKit';
+
+/**
+ * Wifi 函数通用入参封装
+ */
+type WifiOption = {
+ success?: (res: object) => void;
+ fail?: (res: object) => void;
+ complete?: (res: object) => void;
+};
+
+/**
+ * Wifi 链接参数封装
+ */
+type WifiConnectOption = {
+ SSID: string;
+ BSSID: string;
+ password: string;
+ maunal: boolean;
+ partialInfo: boolean; //ios不生效
+ success?: (res: object) => void;
+ fail?: (res: object) => void;
+ complete?: (res: object) => void;
+}
+
+/**
+ * 获取当前链接的wifi信息
+ */
+type GetConnectedWifiOptions = {
+ partialInfo?: boolean
+ success?: (res: UTSJSONObject) => void
+ fail?: (res: UTSJSONObject) => void
+ complete?: (res: UTSJSONObject) => void
+}
+
+type GetLocationPromiseOptions = {
+ complete?: (res: boolean) => void
+}
+
+type UniWifiInfo = {
+ SSID: string;
+ BSSID: string;
+ secure: boolean;
+ signalStrength: number;
+ frequency: number;
+}
+
+
+/*
+ * 对外暴露的wifi信息类
+ */
+// class UniWifiInfo {
+
+// SSID: string;
+// BSSID: string;
+// secure: boolean;
+// signalStrength: number;
+// frequency: number;
+
+// constructor(SSID: string, BSSID: string, secure: boolean, signalStrength: number, frequency: number) {
+// this.SSID = SSID
+// this.BSSID = BSSID
+// this.secure = secure
+// this.signalStrength = signalStrength
+// this.frequency = frequency
+// }
+// }
+
+
+class LocationPromiseService implements CLLocationManagerDelegate {
+ static promiseCompletionHandler: ((res: boolean)=>void)[] = []
+
+ manager?: CLLocationManager
+
+ constructor(manager?: CLLocationManager) {
+ this.manager = manager
+ }
+
+ initlizeManager(): boolean {
+ if (this.manager == null) {
+ this.manager = new CLLocationManager()
+ this.manager!.delegate = this
+ }
+ return true
+ }
+
+ locationManager(manager: CLLocationManager, status: CLAuthorizationStatus) {
+ if (status == CLAuthorizationStatus.authorizedAlways || status == CLAuthorizationStatus.authorizedWhenInUse) {
+ LocationPromiseService.promiseCompletionHandler.forEach((handler): void => {
+ handler(true)
+ })
+ } else if (status == CLAuthorizationStatus.notDetermined) {
+ manager.requestWhenInUseAuthorization()
+ } else if (status == CLAuthorizationStatus.denied) {
+ LocationPromiseService.promiseCompletionHandler.forEach((handler): void => {
+ handler(false)
+ })
+ }
+ }
+
+ locationManagerDidChangeAuthorization(manager: CLLocationManager) {
+
+ }
+
+ locationManagerDidPauseLocationUpdates(manager: CLLocationManager) {
+
+ }
+
+ locationManagerDidResumeLocationUpdates(manager: CLLocationManager) {
+
+ }
+
+ locationManagerShouldDisplayHeadingCalibration(manager: CLLocationManager): boolean {
+ return true
+ }
+
+ requestPromise(@escaping completion: (res: boolean)=>void) {
+ let status: CLAuthorizationStatus = CLLocationManager.authorizationStatus()
+ if (status == CLAuthorizationStatus.notDetermined) {
+ if (this.initlizeManager() == true) {
+ this.manager!.requestWhenInUseAuthorization()
+ LocationPromiseService.promiseCompletionHandler.push(completion)
+ }
+ } else if (status == CLAuthorizationStatus.authorizedAlways || status == CLAuthorizationStatus.authorizedWhenInUse) {
+ completion(true)
+ } else if (status == CLAuthorizationStatus.denied) {
+ if (CLLocationManager.locationServicesEnabled() == false && this.initlizeManager() == true) {
+ this.manager!.requestWhenInUseAuthorization()
+ LocationPromiseService.promiseCompletionHandler.push(completion)
+ }
+ }
+ }
+}
+
+const locationPromiseService: LocationPromiseService = new LocationPromiseService(null)
+
+/*
+ * 获取系统定位权限
+ */
+function requestLocationPromise(@escaping completion: (res: boolean)=>void) {
+ locationPromiseService.requestPromise(completion)
+}
+
+/*
+ * 获取当前连接的wifi信息(通过定位权限)
+ */
+function fetchConnectedWifiWithLocationPromise(option: GetConnectedWifiOptions) {
+ let arr = CNCopySupportedInterfaces()
+ let wifiInfo = new UniWifiInfo()
+ if (arr != null) {
+ let list = arr! as NSArray
+ let index = 0
+ while (index < list.count) {
+ let item = list[index]
+ let interfaceName = item as string
+ let dic = CNCopyCurrentNetworkInfo(interfaceName as CFString)
+ if (dic != null) {
+ let dict = dic! as NSDictionary
+ let SSID = dict[kCNNetworkInfoKeySSID as string]
+ let BSSID = dict[kCNNetworkInfoKeyBSSID as string]
+
+ if (SSID != null && BSSID != null) {
+ let ssid = SSID! as string
+ let bssid = BSSID! as string
+ wifiInfo.SSID = ssid
+ wifiInfo.BSSID = bssid
+ wifiInfo.signalStrength = 0
+ wifiInfo.frequency = 0
+ break;
+ }
+ }
+ index++
+ }
+
+ if (wifiInfo.BSSID.length > 0 && wifiInfo.SSID.length > 0) {
+ let res = {
+ errCode: 0,
+ errMsg: "getConnectedWifi:success",
+ wifi: wifiInfo,
+ }
+ option.success?.(res)
+ option.complete?.(res)
+ }else {
+ option.fail?.({errCode: 12000, errMsg: "current wifi is null"})
+ option.complete?.({errCode: 12000, errMsg: "current wifi is null"})
+ }
+ }else {
+ option.fail?.({errCode: 12000, errMsg: "current wifi is null"})
+ option.complete?.({errCode: 12000, errMsg: "current wifi is null"})
+ }
+}
+
+
+
+
+
+/* =================================== 对外暴露的接口 ==============================================*/
+
+
+
+/*
+ * 初始化wifi模块
+ */
+export function startWifi(option: WifiOption) {
+ let res = {
+ errCode: 12001,
+ errMsg: "system not support"
+ }
+ option.fail?.(res)
+ option.complete?.(res)
+}
+
+/*
+ * 停止wifi模块
+ */
+export function stopWifi() {
+ LocationPromiseService.promiseCompletionHandler = []
+}
+
+/*
+ * 获取wifi列表, 在调用之前需要引导用户跳转到系统设置-WIFI设置页面,系统搜索周边wifi后app才能接收到回调
+ */
+export function getWifiList(option: WifiOption) {
+ let res = {
+ errCode: 12001,
+ errMsg: "system not support"
+ }
+ option.fail?.(res)
+ option.complete?.(res)
+}
+
+/* 获取wifi列表的回调
+ * note: 请在getWifiList方法的回调里调用该方法
+ */
+export function onGetWifiList(callback: UTSCallback) {
+
+}
+
+/*
+ * 注销获取wifi列表的回调
+ */
+export function offGetWifiList(callback: UTSCallback) {
+
+}
+
+
+/*
+ * 获取当前连接的wifi信息
+ */
+export function getConnectedWifi(option: GetConnectedWifiOptions) {
+ if (UIDevice.current.systemVersion >= "13.0") {
+ requestLocationPromise((success) => {
+ if (success == true) {
+ fetchConnectedWifiWithLocationPromise(option)
+ }else {
+ let res = {
+ errCode: 12010,
+ errMsg: "have no location promise"
+ }
+ option.fail?.(res)
+ option.complete?.(res)
+ }
+ })
+ } else{
+ fetchConnectedWifiWithLocationPromise(option)
+ }
+}
+
+/*
+ * 连接wifi
+ */
+export function connectWifi(option: WifiConnectOption) {
+ let res = {
+ errCode: 12001,
+ errMsg: "system not support"
+ }
+ option.fail?.(res)
+ option.complete?.(res)
+}
+
+
+/*
+ * 连上wifi事件的监听函数
+ */
+export function onWifiConnected(callback: UTSCallback) {
+
+}
+
+/*
+ * 连上wifi事件的监听函数, wifiInfo仅包含ssid
+ */
+export function onWifiConnectedWithPartialInfo(callback: UTSCallback) {
+
+}
+
+/*
+ * 移除连接上wifi的事件的监听函数,不传此参数则移除所有监听函数。
+ */
+export function offWifiConnected(callback: UTSCallback | null) {
+
+}
+
+/*
+ * 移除连接上wifi的事件的监听函数,不传此参数则移除所有监听函数。
+ */
+export function onOffWifiConnectedWithPartialInfo(callback: UTSCallback | null) {
+
+}
+
+/*
+ * 设置 wifiList 中 AP 的相关信息。在 onGetWifiList 回调后调用,iOS特有接口。
+ */
+export function setWifiList(option: WifiOption) {
+ let res = {
+ errCode: 12001,
+ errMsg: "system not support"
+ }
+ option.fail?.(res)
+ option.complete?.(res)
+}
\ No newline at end of file