Подтвердить что ты не робот

IOS 8 запускает приложение навсегда или отключает экран

Я строю систему домашней автоматизации, я выбрал iPad в качестве основного устройства концентратора/моста для управления множеством устройств Bluetooth (некоторые из них были выполнены с использованием 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 минуты.

Продолжайте поиск...

4b9b3361

Ответ 1

Попробуйте решение UIApplicationExitsOnSuspend:

Так как приложения iOS 4 приостанавливаются, когда вы нажимаете кнопку "домой". До этого (iOS 3) они выходили и перезапускались каждый раз, когда вы открывали приложение. Однако, если вы не использовали домашнюю кнопку для закрытия приложения, а вместо этого заблокировали устройство с открытием приложения iOS 3, он будет работать в фоновом режиме навсегда. Вы можете заставить ваши приложения работать так, добавив ключ UIApplicationExitsOnSuspend к вашему информационному plist, установите значение YES.

Вы не сможете закрывать и снова открывать приложение так быстро (он будет перезапускаться каждый раз, когда вы используете домашнюю кнопку), но если вы не очень часто общаетесь с iPad, тогда вы можете просто заблокировать устройство, пока приложение открыто, и оно будет продолжаться до тех пор, пока iPad не будет разблокирован или вы не откроете другое приложение.

Обратите внимание, что это решение действительно для App Store, поскольку оно использует официальные API Apple.

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

Ответ 2

Все приложения получают до 10 минут, чтобы закончить все, что они делали до того, как приложение действительно приостановлено. Но в некоторых случаях им может потребоваться больше времени, например, играть музыку или вычислять шаги. Это можно сделать, используя Требуемый фоновый режим - это режимы, позволяющие вашему приложению работать навсегда в фоновом режиме.

просмотрите приведенные ниже изображения:

введите описание изображения здесь введите описание изображения здесь

Посещение для выполнения фона: Apple

Посетите ниже URL-адрес, это может быть полезно.

fooobar.com/questions/220157/...

http://www.raywenderlich.com/29948/backgrounding-for-ios (для пояснения с примером кода.)

Надеюсь, что это поможет в решении вашей проблемы.

Ответ 3

Не могли бы вы обойти/взломать, запустив тишину в фоновом режиме. Я не могу представить, чтобы это было эффективным или лучшим решением, но это может быть проблема. Я знаю, что создатели Workflow пытались обойти это, а также достигли предела 10мин. Там обходной путь заключается в том, чтобы просто отправить локальное уведомление с отметкой 9 минут и попросить пользователя снова открыть приложение, чтобы оно продолжало работать.