IOS में स्लीप मोड को प्रोग्रामेटिक रूप से अक्षम / सक्षम कैसे करें?


162

मेरे पास एक ऐप है जो एक उलटी गिनती के अंत तक जागते रहना चाहिए लेकिन जब भी यह सोने के लिए आवंटित समय पर पहुंचता है तो यह 'स्लीप मोड' में चला जाएगा।

मेरे ऐप में, मेरे पास नींद को स्थगित करने का विकल्प है, इसलिए उपयोगकर्ता इसे अक्षम / सक्षम कर सकते हैं।

मैं इसे प्रोग्रामेटिक रूप से कैसे करूँ?

जवाबों:


379

आप निम्न प्रकार से निष्क्रिय टाइमर को अक्षम कर सकते हैं;

उद्देश्य-सी में:

[UIApplication sharedApplication].idleTimerDisabled = YES;

स्विफ्ट में:

UIApplication.sharedApplication().idleTimerDisabled = true

स्विफ्ट 3.0 और स्विफ्ट 4.0 में:

UIApplication.shared.isIdleTimerDisabled = true

स्लीप मोड को फिर से सक्षम करने के लिए इसे वापस सेट करें NOया falseकरें।

उदाहरण के लिए, यदि आपको इसकी आवश्यकता तब तक है जब तक कि आप उस दृश्य को छोड़ न दें जिसे आप दृश्य को ओवरराइड करके वापस सेट कर सकते हैं

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

UIApplication Class के बारे में अधिक ।


@ Gati मुझे संदेह है, लेकिन मैं पुष्टि नहीं कर सकता क्योंकि मेरे पास घड़ी नहीं है
jrturton

1
@jrturton हम्म .. यह ऐप्पल वॉच में काम नहीं कर रहा है। यदि आपको इसके लिए कोई समाधान मिला है तो कृपया मुझे बताएं।
iGatiTech

इस जानकारी के लिए धन्यवाद। यह सुविधाजनक होगा। मैं सोच रहा था कि एक ऐप में स्लीप मोड को अक्षम करने से पूरे डिवाइस पर असर पड़ेगा। जैसे अगर मैं इसे अपने ऐप में अक्षम करता हूं और फिर ऐप से बाहर निकलता हूं, तो क्या ऐप से बाहर निकलने के बाद भी इसे अक्षम किया जाएगा? क्या मुझे यह जांचने की ज़रूरत है कि यह सक्रिय है या नहीं, और फिर इसे बाहर के रास्ते पर फिर से उपयोग करने योग्य है?
स्कॉट किलबर्न

2
@ScottKilbourn यह केवल आपके ऐप को प्रभावित करता है। केवल आपके ऐप के UIApplication ऑब्जेक्ट [UIApplication sharedApplication]को संदर्भित करता है ।
जर्थुरटन

22

स्विफ्ट 3 में, निष्क्रिय टाइमर को निष्क्रिय करने के लिए यह अब है:

UIApplication.shared.isIdleTimerDisabled = true

निष्क्रिय टाइमर को वापस चालू करने के लिए बस यह है:

UIApplication.shared.isIdleTimerDisabled = false

साथ ही, ध्यान दें कि YESऔर NOस्विफ्ट में उपलब्ध नहीं हैं और आप का उपयोग या तो होना चाहिए कि trueया false(के रूप में पिछले जवाब के खिलाफ)।


1

निष्क्रिय टाइमर को निष्क्रिय करने के लिए iOS 13, स्विफ्ट 5,5.1+ । में SceneDelegate.swift

 func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
     UIApplication.shared.isIdleTimerDisabled = true
 }

-5

स्विफ्ट 3 सटीक स्थान पर जहाँ यह किया जा सकता है AppDelegate.swift- आपको फंक के UIApplication.shared.isIdleTimerDisabled = trueअंदर जोड़ना चाहिए applicationताकि परिणाम इस तरह दिखाई देगा:

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

2
यह AppDelegate पर निर्भर नहीं है। वास्तव में मैं डिवाइस को बिना किसी वास्तविक कारण के जागृत रखने के लिए इसे बुरा अभ्यास मानूंगा। एक विशिष्ट कार्यक्षमता के दौरान डिवाइस को जागृत रखने के बारे में सवाल था (एक उलटी गिनती के अंत तक)। तो उलटी घड़ी को निष्क्रिय करने पर उलटी गिनती शुरू होने पर इसे फिर से सक्षम करना शुरू कर देना चाहिए।
मार्टिन

@ साइरस मैं प्रोग्रामर नहीं हूं। वर्तमान में मैं वेबव्यू ऐप बना रहा हूं और मैंने सटीक निर्देशों के बिना बहुत सारे समाधानों की कोशिश की है और यह मेरे लिए काम नहीं करता है, लेकिन यह काम करता है। इसलिए मैं इसे अन्य लोगों के साथ साझा करने के लिए पोस्ट करता हूं जो समान समाधान की खोज करेंगे। इसका उपयोग करने का कारण - मेरा ऐप गिटार सहायक है जिसे खेलने के दौरान हमेशा जागने की आवश्यकता होती है
Godblessstrawberry
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.