Bagaimana cara mencegah layar iPhone meredup atau mati saat aplikasi saya berjalan?

114

Saya sedang mengerjakan aplikasi yang tidak memerlukan masukan pengguna, tetapi saya tidak ingin iPhone memasuki mode hemat daya.

Apakah mungkin untuk menonaktifkan penghematan daya dari aplikasi?

lajos
sumber
7
Ada apa dengan suara negatif pada semua pertanyaan terbaru? Ini sepertinya pertanyaan yang valid bagi saya.
Eric Schoonover

Jawaban:

172

Objective-C

[[UIApplication sharedApplication] setIdleTimerDisabled:YES];

Cepat

UIApplication.shared.isIdleTimerDisabled = true
lajos
sumber
2
Apakah penting di mana baris kode ini digunakan? Haruskah itu ada di AppDelegate atau viewcontroller utama App?
16
Itu tergantung pada bagaimana Anda berniat menggunakannya. Anda mungkin hanya memiliki satu tampilan yang tidak ingin Anda habiskan waktunya di aplikasi Anda. Dalam hal ini Anda akan menggunakannya di pengontrol tampilan itu (saat tampilan muncul). Untuk mengaktifkan kembali pengatur waktu yang kemudian Anda gunakan [[UIApplication sharedApplication] setIdleTimerDisabled:NO];saat tampilan menghilang.
Liam George Betsworth
2
Apakah aplikasi perlu mengaktifkan kembali pengatur waktu saat aplikasi kehilangan fokus, atau apakah ini ditangani secara otomatis oleh OS?
Stan James
5
Stan - ketika aplikasi mengundurkan diri aktif, OS akan mengaktifkan kembali mode siaga, Anda tidak perlu memanggil[[UIApplication sharedApplication] setIdleTimerDisabled:NO];
Chris Stringer
IMHO tidak ada bedanya dari mana Anda menyebutnya. Itu selalu merupakan keseluruhan hit aplikasi dan setiap tampilan disimpan di layar, tidak redup.
dekade
20

Dengan cepat Anda dapat menggunakan ini sebagai

UIApplication.sharedApplication().idleTimerDisabled = true
Vettiyanakan
sumber
12

Cepat 3:

UIApplication.shared.isIdleTimerDisabled = true
Charlie Seligman
sumber
Ini tetap sama untuk Swift 4 juga
Branson Camp
2

Saya telah meletakkan baris kode ini di pengontrol tampilan saya namun kami masih mendapatkan pelanggan yang mengatakan layar akan meredup atau mati sampai seseorang menyentuh layar. Saya telah melihat posting lain di mana Anda tidak hanya mengatur programatik

UIApplication.sharedApplication().idleTimerDisabled = true 

menjadi benar tetapi Anda harus mengatur ulang ke salah terlebih dahulu

UIApplication.sharedApplication().idleTimerDisabled = false
UIApplication.sharedApplication().idleTimerDisabled = true

Sayangnya ini masih tidak berhasil dan pelanggan masih mendapatkan layar redup. Kami memiliki profil Apple Configurator yang mencegah perangkat untuk tidur, dan beberapa layar perangkat masih redup dan pelanggan perlu menekan tombol home untuk membangunkan layar. Sekarang saya memasukkan kode ini ke pengatur waktu yang menyala setiap 2.5 jam untuk mengatur ulang pengatur waktu idle, semoga ini akan berhasil.

JMStudios.jrichardson
sumber
1
Sayangnya, memasukkan kode ke dalam fungsi yang mengaktifkan pengatur waktu tidak memperbaiki masalah. Saya membiarkan iPad saya menyala selama lebih dari 24 jam dan iPad tidak meredup dan tidak ada interaksi. Menurut salah satu klien kami, pengguna menggunakan perangkat 15 menit sebelumnya dan kemudian perangkat menjadi redup.
JMStudios.jrichardson
Saya mengalami masalah yang sama: Saya memiliki pengontrol tampilan tempat saya menyetel idelTimerDisabled = true (aplikasi seharusnya tetap terbuka sepanjang malam, jam alarm), dan sebagian besar waktu berfungsi, tetapi terkadang aplikasi di latar belakang suatu saat di malam hari. Ada yang tahu apa yang bisa memindahkan aplikasi ke latar belakang? atau setel ulang benderanya?
Yariv Adam
Ya, Anda dapat menyetel ulang bendera dan saya juga melakukannya. Saya memiliki ini dalam sebuah fungsi juga. Ternyata itu adalah "proses pemalsuan" di server MDM kami yang mengirimkan ping ke perangkat kami untuk meredupkan layar. sangat menyebalkan.
JMStudios.jrichards
0

Kami mengalami masalah yang sama. Ternyata proses nakal di server MDM kami yang telah dihapus di akun kami tetapi di server masih mengirimkan perintah untuk meredupkan perangkat kami.

JMStudios.jrichardson
sumber