2011-09-03 46 views
5

Tôi có một ứng dụng iPhone có quá trình 30 giây thực hiện một số IO mạng. Về cơ bản, trong khi ứng dụng ở chế độ nền, tôi muốn quá trình này chạy mỗi giờ (thực sự một lần mỗi ngày, nhưng nếu nó không thành công, tôi muốn nó chạy lại sau một giờ).Cách chạy một quá trình 30 giây trong nền sau mỗi giờ (ứng dụng iphone)

Với các tính năng nền của ios 4, điều này có khả thi không? Nếu vậy, làm thế nào? Những hạn chế mà tôi sẽ đi lên chống lại là gì?

Cảm ơn bạn rất nhiều!

+1

Tôi đã nghiên cứu rất nhiều và thấy rằng " thông báo đẩy im lặng "đã làm cho các trick cho tôi. Kiểm tra http: // stackoverflow.com/questions/35987366/ios-enterprise-app-how-can-i-make-sure-my-app-chạy-in-the-background –

Trả lời

6

Hãy xem tài liệu của Apple về chạy mã trong nền.

http://developer.apple.com/library/ios/#documentation/iphone/conceptual/iphoneosprogrammingguide/BackgroundExecution/BackgroundExecution.html

Có vài cách khác nhau để tiếp cận công việc backgrounded. Các ứng dụng duy nhất có thể có các quá trình được nền hoàn toàn là ứng dụng "âm thanh", "voip" và "vị trí" và điều này cần được khai báo trong Info.plist.

Nếu ứng dụng của bạn không thuộc loại này, có thể bạn sẽ thấy khó thực hiện những gì bạn muốn một cách dễ dàng. Có các phương pháp cho phép bạn giữ ứng dụng của mình luôn hoạt động trong nền trong một khoảng thời gian hữu hạn (cũng tại liên kết đó), nhưng cuối cùng ứng dụng của bạn sẽ bị tắt.

Thông báo địa phương sẽ chỉ nhắc người dùng mở ứng dụng - bạn có thực sự muốn bật cửa sổ bật lên cảnh báo trên điện thoại cứ 30 giây một lần không?

+0

Hình như không có cách nào để làm những gì tôi muốn. Cảm ơn vì đã cho tôi biết. – Chris

+0

Liên kết trong câu trả lời này đã chết. Bạn có thể tìm thông tin về xử lý nền trong tài liệu iOS hiện tại tại http://developer.apple.com/library/ios/#documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/ManagingYourApplicationsFlow/ManagingYourApplicationsFlow.html – Opsimath

0

Tôi tin rằng dùng thông báo địa phương sẽ giúp .... séc sau ....

  1. http://developer.apple.com/library/ios/#documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/IPhoneOSClientImp/IPhoneOSClientImp.html#//apple_ref/doc/uid/TP40008194-CH103-SW1
  1. Một ứng dụng có thể tạo và sắp xếp một thông báo địa phương và sau đó hệ điều hành sẽ phân phối nó theo ngày giờ. Nếu nó cung cấp nó khi ứng dụng không hoạt động ở nền trước, nó sẽ hiển thị một cảnh báo, phù hiệu biểu tượng ứng dụng hoặc phát âm thanh — bất kỳ điều gì được chỉ định trong đối tượng UILocalNotification. Nếu ứng dụng đang chạy ở nền trước, không có cảnh báo, badging hoặc âm thanh; thay vào đó, ứng dụng: didReceiveLocalNotification: phương thức được gọi nếu đại biểu thực hiện nó.

  2. Đại biểu có thể kiểm tra các thuộc tính của thông báo và nếu thông báo bao gồm dữ liệu tùy chỉnh trong từ điển userInfo, người dùng có thể truy cập dữ liệu đó và xử lý dữ liệu đó theo cách phù hợp. Mặt khác, nếu thông báo cục bộ chỉ phù hợp với biểu tượng ứng dụng và người dùng trả lời khởi chạy ứng dụng, phương thức application: didFinishLaunchingWithOptions: được gọi, nhưng không có đối tượng UILocalNotification nào được bao gồm trong từ điển tùy chọn.

+0

Thông báo địa phương cho phép bạn bật thông báo cảnh báo từ springboard, cập nhật huy hiệu của biểu tượng ứng dụng số, hoặc phát âm thanh. Nhưng nó không bao giờ cung cấp cho bạn bất kỳ cơ hội để làm I/O mạng. –

+0

Xin chào, Cảm ơn bạn đã thông tin. Tôi đã viết ở trên dựa trên sau đây. 1. ứng dụng: didReceiveLocalNotification: Tham khảo thảo luận. họ nói rằng nó có thể là bất cứ điều gì mà đối tượng UILocalNotification chứa. 2. Trong phần Tổng quan về UILocalNotification: "Đại biểu có thể kiểm tra các thuộc tính của thông báo và, nếu thông báo bao gồm dữ liệu tùy chỉnh trong từ điển userInfo, nó có thể truy cập dữ liệu đó và xử lý nó tương ứng." .... Vì vậy, tôi nghĩ userinfo dict có thể có một URL để gọi và nó có thể gọi nó và xử lý dữ liệu nếu quá trình có thể được hoàn thành trong thời gian cụ thể cho phép cho quá trình nền – Mohammad

1

Tôi đã thực hiện một số loại nghiên cứu tương tự, có một cái nhìn tại this SO answer trong trường hợp bạn không quản lý để tìm thấy nó trước. Các ứng dụng như DataMan hoặc sử dụng dữ liệu phải có một số loại thực thi mã định kỳ trong nền, vì vậy tôi không 100% tin rằng những gì bạn đang yêu cầu là không thể ..

+0

Có vẻ thú vị nhưng tôi đẹp chắc chắn rằng giải pháp hacky kindof sẽ khiến tôi bị đuổi khỏi cửa hàng ứng dụng pronto! – Chris

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