CẬP NHẬT: Kể từ một số phiên bản iOS 8 (8.3, có thể), phần cứng GPS có thể được bật ngay cả ở chế độ trên máy bay (tức là bạn có thể nhận vị trí GPS ngay cả ở chế độ trên máy bay). Điều này ám chỉ câu hỏi này.Xác định xem Chế độ trên máy bay có được bật trên iPhone không?
-
Có thể xác định theo chương trình nếu iPhone đang ở Chế độ trên máy bay không? Tôi đặc biệt muốn biết nếu nó ở chế độ AirPlane, trái ngược với việc có (hoặc không có) một kết nối mạng. Câu hỏi này đã được hỏi rất nhiều, nhưng mọi câu trả lời tôi đã nhìn thấy đều đề cập đến mã Khả năng hiển thị của Apple để xác định xem có kết nối mạng hay không.
Tôi đang viết một ứng dụng sử dụng GPS của iPhone. Hiện tại, nếu Chế độ trên máy bay được bật và ứng dụng của tôi được khởi chạy, đối tượng trình quản lý vị trí của tôi vẫn xuất hiện và dường như vẫn đang cho tôi vị trí (được lưu trong bộ nhớ cache). Biểu tượng GPS nhỏ xuất hiện trên thanh trạng thái để cho tôi biết rằng ứng dụng của tôi đang xác định vị trí.
Tôi muốn biết nếu điện thoại ở chế độ Airplane vì vậy mà tôi không thể khởi tạo các đối tượng quản lý vị trí và tôi có thể thay đổi giao diện người dùng của tôi để chỉ ra cho người dùng biết GPS chức năng không có sẵn.
Chức năng GPS rõ ràng có thể được sử dụng bất kể kết nối mạng, do đó việc thiếu kết nối mạng sẽ đánh tôi là proxy kém cho Chế độ trên máy bay. Tôi dường như không nhận được bất kỳ lỗi cụ thể nào (thông qua locationManager: didFailWithError) khi ở Chế độ trên máy bay, chỉ là lỗi chung mà tôi giả định có thể đến từ một số nguồn.
Cảm ơn. Đây là những gì tôi đã làm. – smacdonald
Trường hợp khác cần được đề cập đến người dùng trong thông báo lỗi, là họ nên xác minh ứng dụng đã được cấp quyền truy cập vào dữ liệu GPS. Tôi đã có một người dùng nhấn mạnh rằng ứng dụng đã bị hỏng, chỉ để tìm ra anh ta đã nhấn "Don't Allow" trên cửa sổ pop-up cho phép. –
Bạn sẽ nhận được kết quả lỗi 'kCLErrorDenied' trong phương thức' locationManager: didFailWithError: 'nếu người dùng chưa bật dịch vụ vị trí cho ứng dụng của bạn. Tôi đã có một hộp thoại báo lỗi cụ thể để xử lý với trường hợp. Nếu thiết bị ở chế độ trên máy bay, bạn gặp lỗi 'kCLErrorLocationUnknown' chung. – smacdonald