2012-01-05 38 views
7

Đối với ứng dụng theo dõi GPS, ghi lại tín hiệu vị trí bằng WIFI đã bật kết quả trong dữ liệu hoặc dữ liệu không chính xác thực sự với khoảng trống.Phát hiện wifi được bật (bất kể kết nối đã bật)

Tôi đã sử dụng truy vấn Khả năng hiển thị để phát hiện xem wifi có khả dụng trước khi bắt đầu theo dõi hay không. Vấn đề là nếu khi truy vấn đó được thực hiện wifi được kích hoạt nhưng không được kết nối với mạng, nó cho thấy rằng internet không thể truy cập được qua wifi, nhưng đó không phải là chỉ báo nếu cài đặt bị tắt trong ứng dụng cài đặt. Điều này có nghĩa là nếu người dùng bắt đầu chạy và kết nối được thực hiện giữa chừng, họ sẽ nhận được tín hiệu vị trí từ wifi thay vì GPS hoặc mạng di động. Do đó độ chính xác trên các điểm dữ liệu đó có thể> 10 mét nên tôi muốn bỏ qua điểm đó. Vấn đề là trên wifi họ sẽ có một khoảng trống lớn mà tín hiệu của họ không được ghi lại.

Vậy làm cách nào tôi có thể kiểm tra xem wifi có được bật là nhưng bị ngắt kết nối không?

Tôi đã đọc tất cả các thảo luận khả năng tiếp cận khác mà tôi có thể tìm thấy nhưng điều này có vẻ là một khoảng trống với nhiều phản hồi không chính xác cho thấy khả năng truy cập đó giải quyết được điều này.

... và tôi sẽ không yêu cầu wifi - chỉ cần thông báo cho họ về thực tế là nó được kích hoạt tại một số điểm trong quá trình tập luyện dữ liệu vị trí của họ có thể bị mất (do thiếu chính xác).

+0

Tôi đã cố gắng đạt được điều tương tự: http://stackoverflow.com/a/26238866/367677 – Asahi

Trả lời

2

Đã khá lâu rồi kể từ khi bạn hỏi, nhưng tôi đã bắt gặp vấn đề này.

Dường như không có cách nào để thực hiện nếu bạn muốn tuân thủ các quy tắc của Apple. sysctl và ioctl sẽ không hoạt động vì không có cờ nào hiển thị cho bạn Wi-Fi được bật. Ví dụ: cờ cho "LÊN" và "CHẠY" sẽ giống nhau nếu Wi-Fi bị tắt hoặc Wi-Fi được bật nhưng không được kết nối.

Khuôn khổ WiFi của Apple sử dụng mach để giao tiếp trực tiếp với hạt nhân và tôi nghi ngờ Apple sẽ cho phép mã như vậy trong AppStore.

0

Điều này có thể, nhưng giải pháp là tối nghĩa và xấu xí. Câu trả lời ngắn gọn là nếu bạn thấy HAI giao diện với tên "awdl0" thì Wi-Fi được bật, chỉ một và nó bị tắt.

Xem Better way to detect WiFi enabled/disabled on iOS? để có mô tả và mã mẫu đầy đủ hơn.

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