2009-05-22 26 views
5

Câu hỏi này có vẻ là bản chất của một số người khác trên diễn đàn này. Tôi tin rằng ứng dụng iPhone đang hoạt động có thể tiếp tục chạy và cụ thể là tiếp tục nhận được cuộc gọi hẹn giờ, sau khi nó đã vào trạng thái không hoạt động (hoặc thông qua bộ đếm thời gian không hoạt động trong khóa màn hình hoặc thông qua người dùng nhấn nút khóa phần cứng). Tài liệu hướng dẫn cụ thể nói rằng trong khi một ứng dụng không hoạt động, nó đang thực hiện, nhưng không gửi đi các sự kiện đến (tôi không đưa ra một liên kết vì tôi đang lo lắng về NDA - tôi có nên thư giãn về điều đó không? vi phạm? tiếng thở dài). Ngoài ra, hai câu trả lời của người dùng "Ambr Str" trực tiếp nói rằng nó có thể tiếp tục nhận được cuộc gọi hẹn giờ, và ông cung cấp một snip mã để đạt được nó (tôi không thể liên kết với điều này bởi vì tôi là một trong số đó.). người dùng mới, xin lỗi - tìm kiếm câu hỏi: "Điều gì xảy ra với ứng dụng iPhone khi iPhone chuyển sang chế độ chờ?" để tìm câu trả lời của anh).Gọi lại NSTimer trong khi ứng dụng iPhone không hoạt động

Tôi đã cố gắng tạo lại các cuộc gọi điện thoại của mình như anh ấy gợi ý, nhưng khi ứng dụng của tôi trở nên không hoạt động, các cuộc gọi lại sẽ ngừng kích hoạt.

Tôi vừa nhận thấy rằng khi iPhone được cắm vào, nếu ứng dụng trở nên không hoạt động (do thời gian rảnh hoặc tôi nhấn nút ngủ), cuộc gọi lại sẽ tiếp tục xảy ra - có lẽ tôi sẽ nhận được người dùng của mình để mang theo một gói pin ;-)

Trả lời

2

Có một câu trả lời hay cho câu hỏi này trên diễn đàn của Apple. Tìm kiếm "Timer" và "Eskimo" (chap hữu ích cung cấp câu trả lời).

Tóm lại, ngay sau khi ứng dụng trở nên không hoạt động, điện thoại thực sự đi ngủ. Cách duy nhất để ngăn chặn điều này là để chơi một số âm thanh (hoặc cho một số âm thanh được chơi trong một ứng dụng nền). Trong khi âm thanh đang phát điện thoại sẽ không hoạt động và ứng dụng của bạn vẫn tiếp tục chạy.

Bạn nên chơi âm thanh ở chế độ chờ, và bạn không nên làm điều đó nếu có thể. Tôi nghĩ rằng trong ứng dụng của tôi (mà thực hiện phát lại âm thanh xen kẽ với khoảng thời gian im lặng), cách tiếp cận là hợp lệ, nếu không lý tưởng!

+1

UIApplication.idleTimerTắt trợ giúp ở tất cả hay không hoạt động khi người dùng nhấn nút ngủ theo cách thủ công? –

+1

Như bạn đề nghị, UIApplication.idleTimerDisabled không hoạt động nếu người dùng nhấn nút ngủ, nhưng có nhiều hơn thế ... UIApplication.idleTimerDisabled là tuyệt vời nếu bạn muốn dừng ứng dụng của bạn vào trạng thái không hoạt động khi thiết bị không tương tác với. Nó phù hợp cho một trò chơi. Trong trường hợp của tôi, tôi đặc biệt muốn ứng dụng trở nên không hoạt động (vì tôi muốn đặt trước nguồn điện thiết bị nếu có thể). Hơn nữa, tôi muốn cho phép người dùng khóa thiết bị để không nhận được đầu vào. –

+0

Triển khai tương thích với iOS 5 là https://github.com/mruegenberg/MMPDeepSleepPreventer – mrueg

0

Tôi có một ứng dụng. bao gồm một máy chủ web nhúng. Tôi đang lên kế hoạch cung cấp tùy chọn tắt IFF tự động ngủ máy chủ được bật và thiết bị đang bật nguồn. Vì vậy, bạn có thể xem xét việc kiểm tra thuộc tính pinState của UIDevice. Vì vậy, nếu batteryState! = UIDeviceBatteryStateUnplugged, hãy tiếp tục và tắt tính năng hẹn giờ không hoạt động. (lưu ý: các tài liệu nói rằng UIDeviceBatteryStateUnknown sẽ được trả lại khi ở chế độ mô phỏng.)

Bạn cũng sẽ muốn nghe thông báo UIDeviceBatteryStateUnplugged và đặt pinMonitoringEnabled phù hợp.

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