2012-04-17 22 views
9

Tôi đang nghiên cứu để tìm cách tốt nhất để sử dụng mạng bị giam giữ cho iOS. Nó xuất hiện rằng những gì điều này, sửa tôi nếu tôi sai, cho phép người dùng nhập vào các SSID và mật khẩu khác nhau có thể được sử dụng để đăng nhập tự động khi mạng đó có sẵn. Nếu đây là như vậy, những gì sẽ là cách tốt nhất để thực hiện những điều sau đây, đọc ssid và mật khẩu từ một người sử dụng và kết nối anh ta với mạng wifi đó hoặc thậm chí có thể.Cách sử dụng mạng bị giam giữ

Cho đến nay tất cả những gì đang làm là kéo ra khỏi mạng hiện đang kết nối với điều này:

NSArray *ifs = (__bridge_transfer id)CNCopySupportedInterfaces(); 
id info = nil; 

for (NSString *ifnam in ifs) { 

    NSLog(@"ifnam = %@", ifnam); 

    info = (__bridge_transfer id)CNCopyCurrentNetworkInfo((__bridge_retained CFStringRef)ifnam); 

    if (info && [info count]) { 
     break; 
    } 
} 

NSLog (@"SSID: %@", [ info objectForKey"@"SSID" ]); 

Trả lời

12

A "Captive Network" là một mặt hàng như bạn tìm thấy trong khách sạn hay Starbucks, nơi kết nối WiFi là mở nhưng bạn cần truy cập trang đăng nhập hoặc trang 'Tôi chấp nhận điều kiện' để kết nối với bất kỳ trang web nào.

Thông thường, khi bạn kết nối với mạng như vậy, ứng dụng Cài đặt iOS sẽ đưa lên biểu mẫu web để hoàn tất đăng nhập. Mục đích của API CN là cho phép ứng dụng của bạn thực hiện xác thực thay vì đưa lên biểu mẫu web.

Câu hỏi của bạn hỏi về việc đọc SSID từ người dùng: điều này có vẻ không hữu ích vì ứng dụng Cài đặt đã cho phép người dùng chỉ định SSID tùy ý và sau đó đăng nhập bằng mật khẩu. API mạng Captive sẽ chỉ hữu ích nếu ứng dụng của bạn biết chính xác cách đăng nhập vào mạng, trong trường hợp đó, nó cũng có thể biết SSID. Bạn có thể lấy mật khẩu từ người dùng bằng NSTextField thông thường.

Cũng lưu ý rằng IOS không khởi động ứng dụng của bạn bất cứ khi nào mạng được kết nối: API này chỉ hoạt động khi ứng dụng của bạn đang chạy.

+0

Câu trả lời hay. Khi sử dụng CaptiveNetwork Reference trong ứng dụng của bạn, người dùng ứng dụng của bạn có cần phải chọn wifi đầu tiên trong Cài đặt hay không? Tôi hy vọng bạn chỉ cần khởi động ứng dụng và nếu StarbuckWifi ví dụ: đã được iOS phát hiện, tôi có thể xác thực và tham gia ... mà không cần chạm vào Cài đặt. – 3pic

+0

Tôi tin rằng người dùng cần phải chọn mạng wifi cụ thể, sau đó có ứng dụng đã đăng ký xác thực hoàn chỉnh. – Bryan

1

Tôi xử lý thông thường với quy trình 2 bước. Thử nghiệm đầu tiên là thử nghiệm khả năng tiếp cận chung, không thành công nếu không có mạng. Khi thất bại, tôi báo cho người dùng biết rằng mạng là bắt buộc. NẾU mạng hiện tại, là bước thứ hai tôi gửi một yêu cầu đến sever của tôi. Nếu nó hết thời gian, tôi cảnh báo người dùng kiểm tra kết nối mạng cần chú ý.

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