2013-08-07 17 views
5

Ứng dụng Iphone của tôi có 2 chế độ, chế độ trực tuyến và chế độ ngoại tuyến. nếu người dùng đang sử dụng ứng dụng ở chế độ trực tuyến, yêu cầu sẽ được gửi đến máy chủ ngay lập tức. nếu người dùng đang sử dụng ứng dụng ở chế độ ngoại tuyến, tôi sẽ lưu trữ yêu cầu cục bộ, để tôi có thể tải nó lên khi có internet. Tôi đang sử dụng lớp khả năng hiển thị để kiểm tra tính khả dụng của Internet. Khả năng hiển thị hoạt động tốt với ứng dụng. Tôi không thể đạt được kịch bản sau đây. Tôi đã lưu trữ yêu cầu khi người dùng đang làm việc ở chế độ ngoại tuyến, có nghĩa là trong khi người dùng sẽ đẩy ứng dụng ở chế độ nền bằng cách nhấp vào nút trang chủ trong iPhone. sau một thời gian người dùng sẽ kích hoạt kết nối wifi hoặc di động trong thiết bị của mình. khi người dùng bật kết nối internet, ứng dụng của tôi ở chế độ nền sẽ được thông báo và sẽ bắt đầu gửi yêu cầu tới máy chủ. Làm thế nào tôi có thể đạt được chức năng này? Nhiều ứng dụng ios có thể có cùng yêu cầu này. họ đang làm như thế nào? bất kỳ ý tưởng?Làm thế nào ứng dụng trong nền có thể kiểm tra kết nối internet, IOS?

Tôi đã thử bước sau để đạt được điều này, nhưng không thành công. Tôi đang làm gì sai ở đây, giúp tôi.

1) Tôi đã thêm người quan sát cho kReachabilityChangedNotification bên trong applicationDidEnterPhương thức ủy quyền của nền tảng. nhưng ứng dụng của tôi không nghe được Kreachabiliychagednotification, trong phương pháp này.

2) Nếu tôi thêm người quan sát cho kReachabilityChangedNotification bên trong applicationdidbecomeActive, thì ứng dụng của tôi có thể nghe Kreachabiliychagednotification.

Tại sao IOS không cho phép nghe Kreachabiliychagednotification khi ứng dụng ở chế độ nền?

+0

hi bạn có câu trả lời nào cho câu hỏi này không? – souvickcse

+0

hi là bạn có thể giải quyết vấn đề này? – ShayanK

Trả lời

1

tôi đến để xử lý cùng một kịch bản khi tôi tham gia dự án nhưng tôi biết rằng Theo mặc định trong ứng dụng trạng thái nền chỉ trong một thời gian ngắn, hầu hết các ứng dụng sẽ chuyển sang trạng thái bị tạm ngưng ngay sau đó. Điều đó có nghĩa là ứng dụng ở chế độ nền nhưng không thực thi mã. Vì vậy, thông báo triển khai tùy chỉnh của bạn không hoạt động. Phải requery NetworkReachability tại Wakeup Time in methodes đại biểu ứng dụng:

applicationWillEnterForeground: 
applicationDidBecomeActive 

này là tốt nhất tôi đã làm để giải quyết vấn đề đó, hy vọng nó sẽ giúp

+0

Cảm ơn Hemant .. Nhưng bạn có bất kỳ ý tưởng làm thế nào các ứng dụng ios khác có thể làm điều này? – RockandRoll

+0

tôi nghĩ @Andrea đúng về điều này ... –

4

Câu trả lời là bạn có thể không trừ khi bạn ứng dụng sẽ có một trong những sử dụng cụ thể (trích dẫn của Apple doc):

Hỗ trợ cho một số loại thực nền phải được khai báo trong trước bởi các ứng dụng sử dụng chúng. Ứng dụng tuyên bố hỗ trợ cho dịch vụ bằng tệp Info.plist của ứng dụng. Thêm phím UIBackgroundModes để tập tin Info.plist của bạn và thiết lập giá trị của nó đến một mảng chứa một hoặc hơn của chuỗi kí tự sau:

* nghe Ứng dụng đóng nội dung âm thanh cho người dùng trong khi ở các nền . (Nội dung này bao gồm phát trực tuyến nội dung âm thanh hoặc video bằng AirPlay.)
* vị trí — Ứng dụng giúp người dùng thông báo về vị trí của họ, ngay cả khi đang chạy ở chế độ nền.
* voip — Ứng dụng cung cấp khả năng cho người dùng thực hiện cuộc gọi điện thoại bằng cách sử dụng kết nối Internet .
* newsstand-content — Ứng dụng là ứng dụng Newsstand mà tải xuống và xử lý nội dung tạp chí hoặc báo trong nền .
* phụ kiện bên ngoài — Ứng dụng hoạt động với phụ kiện phần cứng cần phân phối cập nhật theo lịch thông thường thông qua khung phụ kiện Bên ngoài .
* bluetooth-trung tâm — Ứng dụng hoạt động với phụ kiện Bluetooth cần phân phối cập nhật theo lịch trình thông thường thông qua khung chính của Bluetooth.
* bluetooth ngoại vi — Ứng dụng hỗ trợ giao tiếp Bluetooth ở chế độ ngoại vi thông qua khung chính của Bluetooth.

Bạn chỉ có thể kiểm tra khả năng hiển thị lại vào tiền cảnh.

+0

+1 để giải thích chi tiết ... –