25

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

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

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

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

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

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

ここで強調すべきことが 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 分間だけ実行し続けます。

探し続ける...

4

3 に答える 3

9

解決策を試してくださいUIApplicationExitsOnSuspend

ホームボタンを押すとiOS 4アプリが中断されるため。これ以前 (iOS 3) は、アプリを開くたびに終了して再起動していました。ただし、ホーム ボタンを使用してアプリを閉じずに、iOS 3 アプリを開いた状態でデバイスをロックすると、アプリはバックグラウンドで永久に実行されます。 . UIApplicationExitsOnSuspend情報 plist にキーを追加し、値を に設定することで、アプリをこのように動作させることができますYES

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

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

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

于 2015-09-15T01:47:28.750 に答える
4

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

以下の画像を見てください:

ここに画像の説明を入力 ここに画像の説明を入力

バックグラウンド実行にアクセス: Apple

以下の URL を参照してください。参考になる場合があります。

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

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

問題の解決に役立つことを願っています。

于 2015-09-09T12:53:10.400 に答える
-3

バックグラウンドで無音を実行してバイパス/ハッキングできますか。これが効率的または最良の解決策であるとは想像できませんが、回避策になる可能性があります。ワークフローの作成者もこれを回避しようとして、10 分の制限に達したことを私は知っています。回避策として、9 分マークでローカル通知を送信し、アプリを再度開くようにユーザーに指示して、引き続き実行できるようにします。

于 2015-09-13T22:06:26.783 に答える