我試圖檢查WiFi協助是否啓用。當我連接到接入點以獲取某些數據時,出現問題,而當我連接不良時,我的蜂窩數據會被使用,並會干擾我的接入點。有沒有辦法檢查這個選項是否被啓用?iOS檢查WiFi協助是否啓用
5
A
回答
2
好吧,我想我可以幫助一點。您需要check SCNetworkReachabilityFlags
,因爲我認爲這將是標誌的特定組合。我沒有找到支持多種標誌組合的文檔,說明您正在使用WI-FI和Cellular,我也沒有找到允許您直接檢查該設置的文檔。
基於以前的經驗蘋果可能沒有辦法直接檢查該設置。
所以...這是一個讓我們開始的小代碼?
public enum InternetStatus {
case notReachable
case reachableViaWWAN
case reachableViaWiFi
case wifiAssist
}
而且您可以在您選擇的擴展名中定義一個變量。 (也許URLSession
?)
static public var internetStatus: InternetStatus {
var zeroAddress = sockaddr_in()
zeroAddress.sin_len = UInt8(MemoryLayout<sockaddr_in>.size)
zeroAddress.sin_family = sa_family_t(AF_INET)
guard let defaultRouteReachability = withUnsafePointer(to: &zeroAddress, {
$0.withMemoryRebound(to: sockaddr.self, capacity: 1) {
SCNetworkReachabilityCreateWithAddress(nil, $0)
}
}) else {
return .notReachable
}
var flags: SCNetworkReachabilityFlags = []
if flags.contains(.connectionOnDemand) {
print("Connection On Demand")
}
if flags.contains(.connectionAutomatic) {
print("Connection Automatic")
}
if flags.contains(.connectionOnTraffic) {
print("Connection On Traffic")
}
if flags.contains(.connectionRequired) {
print("Connection Required")
}
if flags.contains(.interventionRequired) {
print("Intervention Required")
}
if flags.contains(.isDirect) {
print("isDirect")
}
if flags.contains(.isLocalAddress) {
print("Local Address")
}
if flags.contains(.isWWAN) {
print("WWAN")
}
if flags.contains(.reachable) {
print("Reachable")
}
if flags.contains(.transientConnection) {
print("Transient Connection")
}
if !SCNetworkReachabilityGetFlags(defaultRouteReachability, &flags) {
return .notReachable
}
if flags.contains(.reachable) == false {
// The target host is not reachable.
return .notReachable
}
else if flags.contains(.isWWAN) == true {
// WWAN connections are OK if the calling application is using the CFNetwork APIs.
return .reachableViaWWAN
}
else if flags.contains(.connectionRequired) == false {
// If the target host is reachable and no connection is required then we'll assume that you're on Wi-Fi...
return .reachableViaWiFi
}else if flags.contains(.connectionRequired) && flags.contains(.isWWAN) {
// Not sure here, maybe Wi-Fi assist is currently being utilized? Will need to test.
return .wifiAssist
}else if (flags.contains(.connectionOnDemand) == true || flags.contains(.connectionOnTraffic) == true) && flags.contains(.interventionRequired) == false {
// The connection is on-demand (or on-traffic) if the calling application is using the CFSocketStream or higher APIs and no [user] intervention is needed
return .reachableViaWiFi
}
else {
return .notReachable
}
}
的訣竅是在設置調試,你知道的Wi-Fi輔助激活並觀察標誌。或者比我聰明,只知道他們是什麼。如果有人指出,我會更新這個答案,或者我找出正確的標誌組合。
+0
感謝喬恩,這是有幫助的。我的團隊中有人能夠以此爲指導,開展工作。我希望蘋果對此提供一些官方指導。在此期間,雷達問題提交... –
+0
@NicholasHart很高興聽到!注意發佈代碼,編輯我的帖子,或發送給我編輯,以便我們可以完成這個完整的答案? –
相關問題
- 1. 如何檢查wifi/3g是否啓用?
- 2. 如何檢查是否啓用了WIFI按鈕(iOS)
- 3. 檢查是否可用WIFI使用ASIHTTPRequest
- 4. 如何檢查WiFi選項是否啓用
- 5. 定期檢查是否在Android中啓用Wifi
- 6. 在android如何在後臺連續檢查WiFi是否啓用
- 7. 如何在連接到Wifi時檢查3G是否已啓用?
- 8. 檢測wifi是否已打開 - iOS
- 9. 檢測wifi是否啓用(不管它是否已連接)
- 10. 如何檢查iOS Swift 2中的WiFi是否開啓或關閉?
- 11. 檢查是否啓用推或位置啓用IOS SDK
- 12. 檢查是否啓用
- 13. Windows phone 8,檢查wifi是否打開?
- 14. 如何檢查wifi是否連接?
- 15. iOS 7:檢測App autoupdating是否啓用?
- 16. 檢查用戶是否啓用了自動糾正功能iOS
- 17. 檢測wifi是否打開
- 18. Xamarin iOS:檢查是否啓用通知聲音
- 19. 檢查iOS應用程序是否正常啓動
- 20. 如何檢查iOS上是否啓用了BackgroundFetching?
- 21. 如何檢查Internet連接(Wifi /移動數據)是否已啓用?
- 22. 如何檢查協議是否實現?
- 23. 檢查類是否符合協議
- 24. VBScript - 檢查是否啓用防火牆
- 25. 如何檢查SeAssignPrimaryTokenPrivilege是否已啓用?
- 26. 如何檢查登錄是否啓用?
- 27. 如何檢查UILabel是否啓用?
- 28. Python/PyQT檢查是否啓用Aero
- 29. 檢查斷言是否已啓用
- 30. Ruby on Rails檢查javascript是否啓用
你想檢查wifi已啓用或不正確? –
不,我想檢查設置 - >蜂窩 - > WiFi協助是否啓用 – Flipper