Câu hỏi Làm thế nào để vô hiệu hóa / kích hoạt chế độ ngủ lập trình trong iOS?


Tôi có một ứng dụng mà phải ở lại tỉnh táo cho đến khi kết thúc đếm ngược nhưng nó sẽ đi vào 'chế độ ngủ' bất cứ khi nào nó đạt đến thời gian được phân bổ để ngủ.

Trong ứng dụng của tôi, tôi có tùy chọn hoãn chế độ ngủ, vì vậy người dùng có thể tắt / bật tính năng này.

Làm thế nào để tôi làm điều đó theo lập trình?


133
2017-09-30 11:46


gốc




Các câu trả lời:


Bạn có thể tắt bộ hẹn giờ không hoạt động như sau;

Trong mục tiêu-C:

[UIApplication sharedApplication].idleTimerDisabled = YES;

Trong Swift:

UIApplication.sharedApplication().idleTimerDisabled = true

Trong Swift 3.0 & Swift 4.0:

UIApplication.shared.isIdleTimerDisabled = true

Đặt lại NO hoặc là false để bật lại chế độ ngủ.

Ví dụ: nếu bạn cần đến khi bạn rời khỏi chế độ xem, bạn có thể đặt lại bằng cách ghi đè chế độ xemWillDisappear:

override func viewWillDisappear(_ animated: Bool) {
    UIApplication.shared.isIdleTimerDisabled = false
}

Thông tin thêm về Lớp UIApplication.


330
2017-09-30 12:05



Điều này có hiệu quả với đồng hồ táo không? - Gati
@Gati Tôi nghi ngờ điều đó, nhưng tôi không thể xác nhận vì tôi không có đồng hồ - jrturton
@jrturton Hmm .. Nó không hoạt động trong đồng hồ táo. Nếu bạn có bất kỳ giải pháp cho điều này thì xin vui lòng cho tôi biết. - Gati
Cảm ơn thông tin này. Nó sẽ có ích. Tôi đã tự hỏi nếu vô hiệu hóa chế độ ngủ trong một ứng dụng sẽ ảnh hưởng đến toàn bộ thiết bị. Giống như nếu tôi vô hiệu hóa nó trong ứng dụng của tôi và sau đó thoát khỏi ứng dụng, nó sẽ vẫn bị vô hiệu hóa sau khi thoát khỏi ứng dụng? Tôi có cần phải kiểm tra xem nó có hoạt động hay không, và sau đó có thể mở lại nó trên đường ra? - Scott Kilbourn
@ScottKilbourn nó chỉ ảnh hưởng đến ứng dụng của bạn. [UIApplication sharedApplication] đề cập đến của bạn chỉ đối tượng UIApplication của ứng dụng. - jrturton


Trong Swift 3, để vô hiệu hóa bộ đếm thời gian nhàn rỗi bây giờ là:

UIApplication.shared.isIdleTimerDisabled = true

Để bật bộ hẹn giờ không hoạt động trở lại, chỉ đơn giản là:

UIApplication.shared.isIdleTimerDisabled = false

Ngoài ra, lưu ý rằng YES và NO không có sẵn trong Swift và bạn phải sử dụng true hoặc là false (trái ngược với câu trả lời trước).


18
2017-10-31 04:22





trong Swift 3 vị trí chính xác, nơi điều này có thể được thực hiện là AppDelegate.swift - bạn nên thêm UIApplication.shared.isIdleTimerDisabled = true phía trong application func do đó kết quả sẽ trông như thế này:

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
    UIApplication.shared.isIdleTimerDisabled = true
    return true
}

-5
2017-08-12 13:10



Điều này không phụ thuộc vào AppDelegate. Trong thực tế, tôi sẽ xem xét nó thực hành xấu để giữ cho thiết bị tỉnh táo mà không có bất kỳ lý do thực sự. Câu hỏi đặt ra là giữ cho thiết bị tỉnh táo trong một chức năng cụ thể (cho đến khi kết thúc đếm ngược). Vì vậy, vô hiệu hóa bộ đếm thời gian nhàn rỗi khi đếm ngược bắt đầu kết thúc cho phép nó một lần nữa sau khi đếm ngược kết thúc nên được xem xét. - Cyrus
@Cyrus Tôi không phải là lập trình viên nhanh chóng. hiện tại tôi đang làm ứng dụng webview và tôi đã thử rất nhiều giải pháp mà không có hướng dẫn chính xác và điều đó không hiệu quả đối với tôi, nhưng các tác vụ này. vì vậy tôi đăng bài này để chia sẻ với những người khác sẽ tìm kiếm giải pháp tương tự. lý do để sử dụng ứng dụng này - ứng dụng của tôi là trình trợ giúp về đàn guitar cần phải luôn tỉnh táo trong khi chơi - godblessstrawberry