2013-05-03 35 views
8

Tôi đã sử dụng NSTimer để gọi phương thức sau 1 giây khi ứng dụng chạy ẩn và sau gần 17 phút hẹn giờ ngừng hoạt động.NSTimer dừng ở chế độ nền sau một thời gian

Khi nó trở lại ở phía trước, nó lại bắt đầu hoạt động, vì vậy hãy cho tôi biết lý do tại sao điều này đang xảy ra và cách giải quyết vấn đề.

Tôi cũng đã thử sử dụng bộ chọn thực hiện với độ trễ đệ quy cho cùng một mục đích, nhưng lại cho kết quả tương tự. Vui lòng đề xuất bất kỳ giải pháp nào. Bất kỳ trợ giúp nào cũng sẽ được đánh giá cao.

+0

Bộ hẹn giờ hoạt động như thế nào? Ý tôi là, một trong những nhiệm vụ nền được phép của quả táo? – jcesarmobile

+0

"Chế độ nền bắt buộc" nào bạn đã đặt trong thuộc tính mục tiêu xây dựng của mình? –

+0

Tôi đã thêm "đăng ký ứng dụng để cập nhật vị trí" trong chế độ nền bắt buộc của tôi – Himanshu

Trả lời

6

Vấn đề Wierd- tôi cũng đã có vấn đề này, nhưng sau đây đã làm việc cho tôi.

//Run the timer on the runloop to ensure that it works when app is in background 

    [[NSRunLoop currentRunLoop]addTimer:self.timer forMode: NSDefaultRunLoopMode]; 
+1

Tôi đã sử dụng tính năng này nhưng bộ hẹn giờ dừng sau gần 16 phút trong nền – Himanshu

+0

Vui lòng thấy điều này và cho tôi biết nếu nó hoạt động. http://stackoverflow.com/questions/8449351/iphone-4-is-there-an-absolutely-certain-way-to-have-a-long-term-nstimer-fire?rq=1 – Xcoder

+0

@himanshu: là vấn đề của bạn được giải quyết. Tôi đang đối mặt với cùng một vấn đề .. – Ankur

5

Từ Implementing Long-Running Background Tasks:

Đối với nhiệm vụ đòi hỏi phải có thời gian thực hiện hơn để thực hiện, bạn phải yêu cầu quyền đặc biệt để chạy chúng trong nền mà không họ bị tạm ngưng. Trong iOS, các loại ứng dụng chỉ cụ thể được phép chạy ở chế độ nền:

  • Apps mà phát nội dung âm thanh cho người dùng trong khi ở các nền, chẳng hạn như một ứng dụng nghe nhạc
  • Apps mà giữ cho người dùng thông báo về họ vị trí bất cứ lúc nào, chẳng hạn như một ứng dụng chuyển hướng
  • ứng dụng hỗ trợ Voice over Internet Protocol (VoIP)
  • ứng dụng Newsstand rằng cần phải tải và xử lý nội dung mới
  • Apps sở hữu nhận được cập nhật thường xuyên từ các phụ kiện bên ngoài
0

Nếu vài phút là không đủ, bạn không thể làm cho một ứng dụng chạy thời gian vô hạn trong backgorundtrừ nó sử dụng:

  • Audio Playback
  • Location Services
  • Phụ kiện bên ngoài

Bạn có thể sử dụng Tác vụ nền để nhận được 10 phút thời gian chạy cho tất cả các ứng dụng khác hoặc Thông báo địa phương để thông báo cho người dùng.

+0

Tôi đang sử dụng dịch vụ định vị cho chế độ nền nhưng vẫn dừng hẹn giờ – Himanshu

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