2015-09-06 83 views
25

我正在构建一个家庭自动化系统,我选择了iPad作为主要集线器/桥接设备来控制大量蓝牙设备(使用RFDuino制作的一些定制)。iOS 8永远运行应用程序或禁用屏幕

iPad(iOS 8.4.1)安装在墙上,并始终插入充电器。

我需要选择正确的方法,以使应用程序运行的所有控制装置和接收更新,触发事件等的时间

的问题是:有没有办法visualy禁用屏幕?调暗它不够好;如果屏幕被关闭,就好像在锁定的设备状态下一样。

简而言之,我可以使用黑屏保护程序吗?

如果上面的答案是否定的:是否有办法强制应用程序永远在后台运行?

这里要强调一件事。此应用无法去苹果商店这样的解决方案可能是一个肮脏的解决办法提前

感谢

测试至今:

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分钟只运行。

继续寻找......

+0

通过“禁用屏幕”,你想阻止用户使用iPad在所有的,而不是让他/她来解锁设备? –

+0

没有。我想要的不是看着挂在屏幕上的ipad,而是仍然在后台执行完整的应用程序功能。它应该像一个典型的屏幕保护程序。在任何输入应该回到生活,一段时间后应该回到黑屏状态 –

+0

这是更好的选择使用Android平板电脑,因为它更可定制 – Andrey

回答

9

尝试UIApplicationExitsOnSuspend解决方案:

因为当你点击home键的iOS 4的应用程序会被停用。在此之前(iOS 3),他们会在每次打开应用程序时退出并重新启动 - 但是,如果您没有使用主页按钮关闭应用程序,而是使用iOS 3应用程序打开它的设备,则会在后台运行永远。您可以通过将UIApplicationExitsOnSuspend钥匙添加到您的信息列表中,让您的应用程序像这样工作,将值设置为YES

您无法关闭并重新打开应用程序(它会在您每次使用主页按钮时重新启动),但如果您不经常与iPad进行交互,则可以锁定设备该应用程序是开放的,它将继续运行,直到iPad解锁或您打开另一个应用程序。

请注意,此解决方案适用于App Store,因为它使用官方Apple API。

https://developer.apple.com/library/ios/documentation/General/Reference/InfoPlistKeyReference/Articles/iPhoneOSKeys.html

+0

过夜测试。看起来很有希望。手指交叉 –

+0

看起来我们有一个赢家!应用程序刚刚通过了10分钟的门槛,完美的屏幕关闭。谢谢你,先生!谢谢你@Damo的赏金 –

4

所有的应用程序获得最多10分钟才能完成任何他们在做之前,该应用程序是真正的暂停。但在某些情况下,他们可能需要跑更长的时间,比如播放音乐或计算步骤。它可以通过使用来完成。所需的背景模式是您可以让应用程序永远在后台运行的模式。

请看以下图片:

执行后台程序

enter image description here enter image description here

访问:Apple

访问以下网址可能会有所帮助。

https://stackoverflow.com/a/29168981/4101371

http://www.raywenderlich.com/29948/backgrounding-for-ios(与示例代码的解释。)

希望它可以帮助解决你的问题。

+0

仍在研究Ray Wenderlich的东西。测试所有的方法。目前只能在后台运行不超过3分钟。 iOS 8.4.1中有一些更改可以防止人为延长应用程序的使用寿命 –

+1

@CaptJak - 您应该先阅读由苹果提供的文档。如果在后台应用程序中没有处理将终止。 –

+2

@GregLukosek如果你的应用播放一些音频,那么你可以永远在后台运行。例如,Spotify或podcast应用程序可以在后台无限期运行。您正在播放的声音无需通过扬声器实际发出声音(只需重复播放静音轨道即可)。这样做会让你的应用程序被禁止在App Store中使用,但是对于内部应用程序来说,它可以很好地工作。 –

-3

你可以绕过/黑客通过在后台运行沉默。我无法想象这是高效或最好的解决方案,但它可能是一个解决方法。我知道Workflow的创建者也试图绕过这一点,并且已经达到了10分钟的限制。解决方法是简单地在9分钟时发送本地通知,并告诉用户再次打开该应用程序,以便它可以继续运行。

+0

因此,这意味着我每10分钟就必须重新激活应用程序,这根本不是解决方案。 –

相关问题