web-dev-qa-db-ja.com

iOS 8はアプリを永久に実行するか、画面を無効にします

私はホームオートメーションシステムを構築しています。多くのBluetoothデバイス(RFDuinoを使用してカスタムメイドされたものもあります)を制御するためのメインハブ/ブリッジデバイスとしてiPadを選択しました。

IPad(iOS 8.4.1)は壁に取り付けられ、常に充電器に接続されています。

アプリを常に実行してデバイスを制御し、更新を受信したり、イベントをトリガーしたりするには、適切なアプローチを選択する必要があります。

問題は、画面を視覚的に無効にする方法はありますか?暗くするだけでは十分ではありません。デバイスがロックされた状態のように、画面をオフにすると最適です。

簡単に言えば、ブラックスクリーンセーバーを使用できますか?

上記の答えが「いいえ」の場合:アプリをバックグラウンドで永久に実行するように強制する方法はありますか?

ここで強調することが1つあります。このアプリはAppleストアに移動しないため、解決策は汚い回避策になる可能性があります

前もって感謝します

これまでにテスト済み:

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分間だけ実行され続けます。

探し続ける...

25
Greg Lukosek

UIApplicationExitsOnSuspendソリューションを試してください:

ホームボタンを押すとiOS4アプリが一時停止するため。これ以前(iOS 3)は、アプリを開くたびに終了して再起動していましたが、ホームボタンを使用してアプリを閉じるのではなく、iOS 3アプリを開いた状態でデバイスをロックすると、バックグラウンドで実行されていましたforever。情報リストにUIApplicationExitsOnSuspendキーを追加し、値をYESに設定することで、アプリをこのように機能させることができます。

アプリをすばやく閉じて再度開くことはできませんが(ホームボタンを使用するたびに再起動します)、iPadを頻繁に操作しない場合は、アプリを開いているときにデバイスをロックするだけで済みます。 iPadのロックが解除されるか、別のアプリを開くまで実行され続けます。

このソリューションは、公式のApple APIを使用しているため、AppStoreで有効であることに注意してください。

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

9
SomeGuy

すべてのアプリは、アプリが実際に停止される前に、実行していたことをすべて完了するまでに最大10分かかります。ただし、音楽の再生や歩数の計算など、より長く実行する必要がある場合もあります。これは、必要なバックグラウンドモードを使用して実行できます。これにより、アプリケーションをバックグラウンドで永久に実行し続けることができます。

以下の画像をご覧ください。

enter image description hereenter image description here

バックグラウンド実行のための訪問: Apple

以下のURLにアクセスしてください。役立つ場合があります。

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

http://www.raywenderlich.com/29948/backgrounding-for-ios (サンプルコードによる説明用)

それがあなたの問題の解決に役立つことを願っています。

4
Dhaivat Vyas