2012-06-05 27 views
22

Tôi đang viết một ứng dụng kết nối qua WiFi với thiết bị độc quyền. Thiết bị độc quyền hoạt động như một điểm truy cập WiFi.Khoảng thời gian dò tìm WiFi của iOS

Khi thiết bị tắt nguồn, kết nối WiFi bị chấm dứt, như tôi mong đợi.

iPhone tiếp tục gửi yêu cầu thăm dò, tìm mạng để kết nối. Nó tuân theo một thuật toán backoff mũ cho việc gửi đầu dò.

Vấn đề của tôi là cuối cùng khoảng thời gian giữa các yêu cầu thăm dò được gửi bởi iPhone dài hơn thời gian chờ trên thiết bị của tôi, vì vậy chúng không tạo kết nối.

Tôi đang sử dụng mã Khả năng hiển thị và nó hoạt động như tôi mong đợi.

Dường như việc nhấn nút trang chủ sẽ đặt lại chế độ chờ và gửi yêu cầu thăm dò ngay lập tức. Có ai biết cách để ứng dụng của tôi làm điều tương tự không?

Cảm ơn bạn đã được trợ giúp.

+0

Câu hỏi hay nhất. Tóm lại: bạn đang tìm kiếm một phương pháp để ứng dụng thông báo cho iOS "nếu bạn chưa kết nối với Wi-Fi, hãy xem ngay bây giờ!". –

+2

Bạn đã thử khởi tạo một kết nối mạng chưa? – Antzi

+1

Còn Bonjour thì sao? có thể triển khai nó trên thiết bị độc quyền không? – Andrea

Trả lời

0

Tôi bằng cách nào đó đã gặp phải tình huống tương tự để kiểm tra xem thiết bị đã được kết nối trong một kết nối VPN cụ thể chưa. Cách tiếp cận là để ping đến một máy trong mạng nội bộ, thông qua ping tiêu chuẩn hoặc triển khai dịch vụ web ping.

Nếu bạn không có một chương trình phụ trợ trong mạng nội bộ của bạn thì dễ nhất sẽ là ping. Bạn có thể kiểm tra ví dụ mã sau từ trang web nhà phát triển Apple: http://developer.apple.com/library/mac/#samplecode/SimplePing/Introduction/Intro.html

0

Tôi sẽ nghi ngờ rằng bạn cấu hình lại kết nối Vì vậy, ứng dụng của bạn có thể theo dõi khoảng thời gian kể từ khi kết nối bị mất và sau đó định cấu hình lại liên kết sau một khoảng thời gian thích hợp. Có thể bạn sẽ phải cấu hình lại một SSID khác và sau đó chuyển trở lại, tùy thuộc vào mức độ thông minh của thư viện iOS.

0

Tôi không hề xấu hổ, nếu tôi hiểu bạn đúng. Bạn muốn kiểm tra xem thiết bị có còn được kết nối với điểm truy cập không?

Tôi đã tạo ứng dụng để kết nối với máy quét qua wifi, máy quét hoạt động như điểm truy cập. cho rằng tôi kiểm tra xem SSID thiết bị hiện đang kết nối là một trong các máy quét. để kiểm tra CurrentSSID, bạn có thể sử dụng mã sau:

+(NSString*)currentSSID { 
    CFArrayRef myArray = CNCopySupportedInterfaces(); 
    CFDictionaryRef myDict = CNCopyCurrentNetworkInfo(CFArrayGetValueAtIndex(myArray, 0)); 
    if (!myDict) { 
     return nil; 
    } 
    NSDictionary *myDictionary = (__bridge_transfer NSDictionary*)myDict; 
    return [myDictionary objectForKey:@"SSID"];  
} 

hy vọng sẽ hữu ích.

0

Tôi sợ không có cách nào để làm như vậy mà không bị từ chối trong quá trình đánh giá (bạn có thể đọc về cách truy cập vào SBWifiManager). Apple không cho phép bất kỳ cách nào để truy cập trình quản lý wifi từ môi trường sandbox. Tôi gặp phải sự cố tương tự khi kết nối thiết bị của mình với các điểm truy cập khác nhau (để định vị yêu cầu thăm dò), đến nay với iOS 7 yêu cầu thăm dò được gửi giữa các khoảng thời gian rất lớn (thậm chí 15 phút). Cố gắng sửa đổi các điểm truy cập của bạn.

1

Thay vì ping internet mỗi lần với Khả năng hiển thị, hãy ping một máy chủ trên mạng cục bộ như máy chủ DNS hoặc bộ định tuyến (192.168.1.1).

Các vấn đề liên quan