2009-10-26 47 views
11

ứng dụng của tôi truy cập internet và tôi chỉ muốn phát hiện xem có kết nối qua wifi hoặc qua mạng dữ liệu của nhà cung cấp hay khôngiphone SDK phát hiện mạng Wifi và mạng di động

apple đã tạo ví dụ cho "Khả năng hiển thị" đó

https://developer.apple.com/iphone/library/samplecode/Reachability/

tôi nghĩ rằng nó chỉ phát hiện wifi và không phải là mạng lưới vận chuyển

bất cứ ai có thể cho tôi biết, whats tốt nhất để được thực hiện để phát hiện nếu có một kết nối (bất cứ loại kết nối)

Đánh giá cao sự trợ giúp của bạn!

+1

Đó là một chút cũ. Có một phiên bản mới hơn của Reachability bởi Tony Miller, mà tôi đã sử dụng [ở đây] (https://github.com/tonymillion/Reachability) –

Trả lời

13

Mẫu đó chính xác là những gì bạn cần.

Nhìn vào khả năng hiển thị.m. nó sẽ cho bạn biết liệu bạn có bất kỳ kết nối nào không và sau đó cho bạn biết bạn có loại kết nối nào.

+1

Để giải quyết câu hỏi của bạn cụ thể hơn: mã Reachability sẽ phát hiện * bất kỳ * loại kết nối , không chỉ WiFi. Tất cả những gì bạn phải làm là nhập các lớp Reachability vào dự án của bạn, sau đó khởi tạo một đối tượng Reachability và đi từ đó. – Tim

9

Ví dụ khả năng hiển thị có thể quá mức cần thiết nếu bạn chỉ muốn phát hiện xem bạn có được kết nối hay không và loại kết nối nào bạn đang sử dụng nếu bạn kết nối. Thật vậy, ví dụ này cũng chứa mã cho thấy cách thiết lập và sử dụng các cuộc gọi lại để thông báo cho bạn về các thay đổi trạng thái.

Đối với một đoạn mã nguồn cho bạn biết chính xác nếu bạn đang kết nối hay không, và loại kết nối bạn đang sử dụng, bạn có thể muốn xem câu trả lời của tôi cho một câu hỏi tương tự, được đăng here.

3

Khi bạn yêu cầu bất kỳ tài nguyên web nào, iPhone sử dụng bất kỳ kết nối nào tìm thấy, nó sử dụng wifi (ưu tiên cao hơn) và nếu wifi không được kết nối, mạng sử dụng mạng di động. Không có cài đặt mã nào ngăn cản mạng của nhà cung cấp.

Tất cả bạn phải làm:

  • Kiểm tra tín hiệu tại nơi thử nghiệm.
  • Kiểm tra liên kết bạn đang cố gắng truy cập trên safari, để đảm bảo ứng dụng của bạn không phải là ứng dụng có sự cố.
  • Liên hỗ trợ vận chuyển của bạn nếu liên kết không hoạt động trên safari (chắc chắn sử dụng các mạng lưới vận chuyển)
+0

câu trả lời này là dành cho iampathik –

2

Những kỹ thuật này rất hữu ích, nhưng hãy nhớ rằng con đường của thiết bị với Internet có thể bao gồm một số khác nhau loại kết nối. Ví dụ: iPhone hoặc iPod touch có thể đang sử dụng WiFi để kết nối với điểm phát sóng di động, do đó có kết nối không dây 3G riêng. Vì vậy, nó không phải là an toàn để giả định rằng sự hiện diện của một kết nối WiFi ngụ ý băng thông cao hơn so với 3G.

0

Khả năng hiển thị (cả mã mẫu của Apple và mã tương tự của người khác và SCNetworkReachability cơ bản sẽ cho bạn biết rằng không có truy cập internet hoặc bạn sẽ truy cập internet qua WiFi hoặc bạn sẽ truy cập internet qua Dữ liệu di động

Nếu bạn có cả Wi-Fi và dữ liệu di động, nó sẽ cho bạn biết "WiFi". Không có cách nào để tìm hiểu dữ liệu di động khả dụng khi bạn có WiFi. (Bạn có thể dễ dàng tìm ra thiết bị di động đó dữ liệu có sẵn khi không có WiFi) Bạn không thể tìm hiểu xem Chế độ trên máy bay có được bật hay không (điều này sẽ khác với WiFi và dữ liệu di động bị tắt).

WiFi khả dụng không đảm bảo rằng bản tải xuống sẽ sử dụng WiFi và không phải dữ liệu di động. Bạn có thể bắt đầu tải xuống ở nhà, để lại một phút sau đó, WiFi biến mất và iOS sẽ tiếp tục tải xuống thông qua 3G một cách vui vẻ. Bạn có thể đặt cờ trong cuộc gọi tải xuống để không cho phép 3G. Mã lỗi sẽ là -1009 = Không truy cập internet, không đề cập đến 3G sẽ có sẵn.

Sử dụng CTTelephonyNetworkInfo bạn có thể biết rằng bạn đang ở trên thiết bị có thể có dữ liệu di động (không phải iPod Touch hoặc iPad không có dữ liệu di động và có SIM trong thiết bị).

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