2012-02-23 28 views
28

Tôi đang phát triển ứng dụng trình phát nhạc/video và chỉ cần biết cách tắt tự động khóa trong khi ứng dụng của tôi ở chế độ nền trước.Làm thế nào để tắt tự động khóa iPhone/iPad trong khi ứng dụng ở chế độ nền trước?

Tôi biết mình đã sử dụng [[UIApplication sharedApplication] setIdleTimerDisabled:YES];[[UIApplication sharedApplication] setIdleTimerDisabled:NO]; tại một thời điểm nào đó, nhưng đâu là nơi tốt nhất để đặt chúng?

Trả lời

24

Kích hoạt tính năng hẹn giờ nhàn rỗi trong

- (void)applicationWillResignActive:(UIApplication *)application 

và vô hiệu hóa nó trong

- (void)applicationDidBecomeActive:(UIApplication *)application 
+0

Nó hoạt động tốt ở đây nhưng tôi tự hỏi Nó sẽ làm việc trên dockstations và tv táo? Không có ở đây để kiểm tra. – jMelnik

+0

Tôi nghe nói rằng một lựa chọn khác là chơi một "âm thanh" im lặng. –

+1

@HotLicks có thể khiến ứng dụng của bạn bị từ chối, nhưng không ai có thể nói điều đó một cách chắc chắn. –

8

Nơi tốt nhất để vô hiệu hóa nó là trong didFinishLaunchingWithOptions. Hệ thống sẽ tự động xử lý cài đặt không có hiệu lực khi ứng dụng ở chế độ nền.

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { 
    application.idleTimerDisabled = YES; 
    return YES; 
} 

tôi gửi thay thế này bởi vì câu trả lời chấp nhận không ngăn cản tự động khóa khi một cảnh báo xuất hiện (email, tin nhắn, sự kiện lịch vv), hoặc các trung tâm thông báo hoặc trung tâm điều khiển là lên.

+0

nếu ứng dụng ở chế độ nền thì sao? liệu khóa tự động có bị vô hiệu hóa trong tình huống này không? –

+0

tự động khóa không bị tắt trong nền, Apple không cho phép. – malhal

1

Và trong Swift 3.0:

UIApplication.shared().isIdleTimerDisabled = true 
2

Swift 3.0:

Bên AppDelegate.swift: application.idleTimerDisabled = true

Outside AppDelegate.swift: UIApplication.shared().isIdleTimerDisabled = true

0

tôi 2 cent: cho xcode 9:

application.idleTimerDisabled = true 

..... AppDelegate.swift: 28: 15: 'idleTimerDisabled' đã được đổi tên thành 'isIdleTimerDisabled'

vậy:

application.isIdleTimerDisabled = true 
Các vấn đề liên quan