我正在构建一个家庭自动化系统,我选择了 iPad 作为主要的集线器/桥接设备来控制许多蓝牙设备(一些是使用 RFDuino 定制的)。
iPad (iOS 8.4.1) 卡在墙上,一直插在充电器上。
我需要选择正确的方法让应用程序一直运行以控制设备并接收更新、触发事件等。
问题是:有没有办法在视觉上禁用屏幕?调暗它还不够好;最好关闭屏幕,例如处于锁定设备状态。
简单来说,我可以使用黑屏保护程序吗?
如果上面的答案是否定的:有没有办法强制应用程序永远在后台运行?
这里要强调一件事。此应用程序不会进入 Apple Store,因此解决方案可能是一个肮脏的解决方法
提前致谢
到目前为止测试:
let backgroundQueue = dispatch_get_global_queue(QOS_CLASS_BACKGROUND,0)
func applicationDidEnterBackground(application: UIApplication) {
application.beginBackgroundTaskWithName("myBgTask", expirationHandler: nil)
dispatch_async(self.backgroundQueue, myBackgroundTask)
}
func myBackgroundTask() {
NSThread.sleepForTimeInterval(1)
dispatch_async(self.backgroundQueue, myBackgroundTask)
}
这种方法只让应用在后台运行 3 分钟。
继续寻找...
最佳答案
尝试UIApplicationExitsOnSuspend
解决方案:
由于 iOS 4 应用程序会在您按下主页按钮时暂停。在此之前(iOS 3),每次您打开应用程序时,它们都会退出并重新启动 - 但是,如果您没有使用主页按钮关闭应用程序,而是在打开 iOS 3 应用程序的情况下锁定设备,它将在后台运行<强>永远强>。您可以通过将 UIApplicationExitsOnSuspend
键添加到您的信息 plist 来让您的应用程序像这样工作,将值设置为 YES
。
您将无法快速关闭和重新打开应用程序(每次您使用主页按钮时它都会重新启动),但如果您不经常与 iPad 互动,那么您可以在锁定设备时锁定设备应用程序已打开,它将继续运行,直到 iPad 解锁或您打开另一个应用程序。
请注意,此解决方案适用于 App Store,因为它使用官方 Apple API。
关于iOS 8 永远运行应用程序或禁用屏幕,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32426201/