คำถามติดแท็ก reachability

30
จะตรวจสอบการเชื่อมต่ออินเทอร์เน็ตที่ใช้งานบน iOS หรือ macOS ได้อย่างไร?
ฉันต้องการตรวจสอบเพื่อดูว่าฉันมีการเชื่อมต่ออินเทอร์เน็ตบน iOS โดยใช้ไลบรารีCocoa Touchหรือบน macOS โดยใช้ห้องสมุดCocoa NSURLฉันมาด้วยวิธีการที่จะทำเช่นนี้ต่อ A วิธีที่ฉันทำดูเหมือนจะไม่น่าเชื่อถือเลยสักนิด (เพราะแม้กระทั่ง Google อาจสักวันหนึ่งและพึ่งพาบุคคลที่สามก็ดูไม่ดี) และในขณะที่ฉันสามารถตรวจสอบเพื่อดูการตอบสนองจากเว็บไซต์อื่น ๆ ถ้า Google ไม่ตอบสนอง ดูเหมือนจะสิ้นเปลืองและมีค่าใช้จ่ายที่ไม่จำเป็นในใบสมัครของฉัน - (BOOL) connectedToInternet { NSString *URLString = [NSString stringWithContentsOfURL:[NSURL URLWithString:@"http://www.google.com"]]; return ( URLString != NULL ) ? YES : NO; } เป็นสิ่งที่ฉันทำไม่ดี (ไม่พูดถึงstringWithContentsOfURLถูกคัดค้านใน iOS 3.0 และ macOS 10.4) และถ้าเป็นเช่นนั้นเป็นวิธีที่ดีกว่าที่จะบรรลุสิ่งนี้?

18
ตรวจสอบการเชื่อมต่ออินเทอร์เน็ตด้วย Swift
เมื่อฉันลองตรวจสอบการเชื่อมต่ออินเทอร์เน็ตบน iPhone ของฉันฉันจะได้รับข้อผิดพลาดมากมาย ใครสามารถช่วยฉันแก้ไขปัญหานี้ได้บ้าง รหัส: import Foundation import SystemConfiguration public class Reachability { class func isConnectedToNetwork() -> Bool { var zeroAddress = sockaddr_in() zeroAddress.sin_len = UInt8(sizeofValue(zeroAddress)) zeroAddress.sin_family = sa_family_t(AF_INET) let defaultRouteReachability = withUnsafePointer(&zeroAddress) { SCNetworkReachabilityCreateWithAddress(nil, UnsafePointer($0)) } var flags: SCNetworkReachabilityFlags = 0 if SCNetworkReachabilityGetFlags(defaultRouteReachability, &flags) == 0 { return false …
251 ios  swift  xcode  reachability 

16
วิธีที่ง่ายที่สุดในการตรวจหาการเชื่อมต่ออินเทอร์เน็ตบน iOS?
ฉันรู้ว่าคำถามนี้จะดูเหมือนว่าเป็นเรื่องล่อแหลมของคนอื่น ๆ แต่ฉันไม่รู้สึกว่ากรณีง่ายอธิบายไว้ที่นี่ มาจากพื้นหลังของ Android และ BlackBerry ทำให้การร้องขอผ่านHTTPUrlConnectionล้มเหลวทันทีหากไม่มีการเชื่อมต่อ ดูเหมือนว่าพฤติกรรมที่มีสติอย่างสมบูรณ์และฉันรู้สึกประหลาดใจที่พบว่าNSURLConnectionใน iOS ไม่ได้เลียนแบบ ฉันเข้าใจว่า Apple (และผู้อื่นที่ขยายเวลา) จัดเตรียมReachabilityคลาสเพื่อช่วยในการพิจารณาสถานะเครือข่าย ฉันมีความสุขที่ได้เห็นสิ่งนี้เป็นครั้งแรกและคาดหวังอย่างเต็มที่ว่าจะเห็นอะไรบางอย่างbool isNetworkAvailable()แต่แทนที่จะแปลกใจที่ฉันพบว่าระบบที่ซับซ้อนซึ่งต้องมีการลงทะเบียนการแจ้งเตือนและการโทรกลับและรายละเอียดที่ไม่จำเป็น จะต้องมีวิธีที่ดีกว่า แอพของฉันจัดการการเชื่อมต่อที่ล้มเหลวได้อย่างงดงาม ผู้ใช้จะได้รับแจ้งถึงความล้มเหลวและแอปจะดำเนินการต่อ ดังนั้นความต้องการของฉันจึงง่าย: ฟังก์ชั่นเดียวแบบซิงโครนัสฉันสามารถโทรหาก่อนที่จะร้องขอ HTTP ทั้งหมดเพื่อตรวจสอบว่าฉันควรรำคาญที่จะส่งคำขอจริงหรือไม่ เป็นการดีที่มันไม่จำเป็นต้องตั้งค่าและเพียงแค่ส่งกลับบูลีน สิ่งนี้เป็นไปไม่ได้บน iOS หรือเปล่า

9
iOS ตรวจจับ 3G หรือ WiFi
ฉันไม่แน่ใจว่าเป็นไปได้หรือไม่ แต่ฉันมีสถานการณ์นี้ ฉันมีเว็บไซต์ที่แสดงใน UIWebView ของฉันซึ่งมีการตั้งค่าลิงก์ใน UISegmentedController เว็บไซต์ของพวกเขาสามารถตรวจจับได้ว่าคุณใช้ wifi หรือบนเครือข่าย 3g ตอนนี้คอนโทรลเลอร์ที่แบ่งส่วนจะชี้ไปยัง 2 หน้าที่แตกต่างกัน: 1 - หน้าจอเข้าสู่ระบบที่เป็นมิตรกับ iPhone 2 - หน้าแรกเมื่อคุณเข้าสู่ระบบ นี่คือคำถาม: ฉันสามารถตั้งโปรแกรมให้แอปพลิเคชันตรวจจับได้หรือไม่ว่าเป็น WIFI หรือ 3G (ฉันรู้ว่าคุณทำได้) แต่จากคำตอบไปที่ส่วน 1 หรือ 2 ประเภทนี้: if (iPhone device is on 3g) { Go to Segment 1; } else { Go to Segment 0; }

7
วิธีใช้ SCNetworkReachability ใน Swift
ฉันกำลังพยายามแปลงข้อมูลโค้ดนี้เป็น Swift ฉันกำลังดิ้นรนในการลงจากพื้นเนื่องจากปัญหาบางอย่าง - (BOOL) connectedToNetwork { // Create zero addy struct sockaddr_in zeroAddress; bzero(&zeroAddress, sizeof(zeroAddress)); zeroAddress.sin_len = sizeof(zeroAddress); zeroAddress.sin_family = AF_INET; // Recover reachability flags SCNetworkReachabilityRef defaultRouteReachability = SCNetworkReachabilityCreateWithAddress(NULL, (struct sockaddr *)&zeroAddress); SCNetworkReachabilityFlags flags; BOOL didRetrieveFlags = SCNetworkReachabilityGetFlags(defaultRouteReachability, &flags); CFRelease(defaultRouteReachability); if (!didRetrieveFlags) { return NO; } BOOL isReachable = …
99 ios  c  struct  swift  reachability 
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.