2017-09-27 20 views
5

Bug:"Kết nối Internet dường như là ẩn" khi thực hiện yêu cầu URLSession trên Apple Watch sử dụng LTE

tôi liên tục nhận được mã lỗi -1009 "Kết nối Internet dường như là ngoại tuyến." lỗi khi thực hiện yêu cầu URLSession trong tiện ích mở rộng Apple Watch trên Apple Watch Series 3 khi được kết nối với Internet chỉ qua LTE.

Các bước để tạo:

  1. Cài đặt ứng dụng.
  2. Định cấu hình thiết bị của bạn để thiết bị chỉ chạy trên LTE.
  3. Xác minh kết nối của bạn với LTE bằng iMessages, ví dụ:
  4. Khởi chạy ứng dụng.
  5. Khởi tạo URLSession bằng cấu hình phiên .default hoặc .ephemeral.
  6. Thực hiện yêu cầu tác vụ dữ liệu cho bất kỳ URL https đã biết nào tốt.

Dự kiến ​​hành vi:

Yêu cầu quản lý để đạt đến đích.

quan sát được hành vi:

Yêu cầu thất bại ngay lập tức với mã lỗi -1009 "Kết nối Internet dường như là ngoại tuyến."

Mã mẫu:

let config = URLSessionConfiguration.ephemeral 
let sesh = URLSession(configuration: config) 
let url = URL(string: "https://google.com")! 
sesh.dataTask(with: request) { (_, _, error) in 
    print(error) 
}.resume() 

Trả lời

5

NOPE: SEE CẬP NHẬT # 3 DƯỚI ĐÂY: Yếu tố còn thiếu rất quan trọng: bạn phải thiết lập waitsForConnectivity cờ trên cấu hình phiên của bạn để true.

let config = URLSessionConfiguration.ephemeral 
config.waitsForConnectivity = true 
let sesh = URLSession(configuration: config) 
let url = URL(string: "https://google.com")! 
sesh.dataTask(with: request) { (_, _, error) in 
    print(error) 
}.resume() 

Nếu bạn không đặt cờ đó, yêu cầu không thành công ngay lập tức vì truy cập LTE không khả dụng ngay lập tức nhưng chỉ sau thời gian chậm trễ nhất. Đặt cờ này thành true làm cho các yêu cầu hoạt động. Trong thử nghiệm của tôi, thậm chí dường như không có sự khác biệt đáng kể về thời gian giữa việc bật waitsForConnectivity qua LTE và thực hiện cùng một yêu cầu mà không cần bật waitsForConnectivity nhưng được thực hiện qua WiFi, giống như thời gian chờ đợi được bật bởi waitsForConnectivity trong một số trường hợp. loại tình huống.

Update # 1

tôi không thể thực hiện bất kỳ yêu cầu trên LTE. Khi waitsForConnectivity được đặt thành true, các yêu cầu chỉ hết thời gian chờ theo thuộc tính thời gian chờ của cấu hình phiên. Khi waitsForConnectivityfalse, yêu cầu không thành công ngay lập tức. Tôi sẽ cập nhật câu hỏi và câu trả lời của mình khi có thêm thông tin. Tôi đang chờ đợi một phản ứng từ một yêu cầu TSI của Apple thường mất vài ngày.

Update # 2

Thêm vào mầu, mẫu mã cùng chạy tốt trên di động trên phần cứng khác hai nhà phát triển. Tôi biết rằng phần cứng của tôi là tốt bởi vì các ứng dụng của Apple vui vẻ hơn LTE trên đó (cuộc gọi điện thoại lăn xuống đường cao tốc mà không có gì ngoài đồng hồ của tôi trong ô tô). Vì vậy, có một cái gì đó thực sự fishy đang xảy ra. Tôi đã yêu cầu Apple DTS xem xét vấn đề này và họ cũng không thể tái tạo vấn đề này. Tôi sẽ theo dõi chúng ngay khi có thể.

Update # 3

Đôi khi trong những tuần can thiệp sau khi tôi cập nhật lần cuối bài này, yêu cầu di động bắt đầu làm việc trong các ứng dụng của tôi. Tôi đã không thay đổi bất cứ điều gì về đồng hồ của tôi, không có cập nhật phần mềm, không reset, không có gì. Tôi thậm chí không biên dịch lại mã; cùng một bản dựng vẫn còn trên đồng hồ của tôi như trước đây. Nó chỉ bắt đầu hoạt động như mong đợi, giống như trên các thiết bị của các nhà phát triển khác.

Điều duy nhất lạ mà tôi nhận thấy là tôi nhận được ba tin nhắn SMS giống nhau, quay lại từ AT & T thông báo cho tôi rằng Apple Watch của tôi hiện đã được liên kết với số iPhone của tôi. Điều đó thật kỳ lạ, bởi vì mối liên kết đó được cho là xảy ra vào đêm tôi unboxed điện thoại của tôi, không phải hai tháng sau đó. Tôi không biết liệu điều này có liên quan đến vấn đề của tôi hay không. Tất cả những gì tôi biết là các yêu cầu di động hiện đang hoạt động.

¯ \ _ (ツ) _/¯

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