Являются ли фоновые задачи решением этой проблемы?

Мне нужно разработать корпоративное приложение, которое отслеживает сетевой трафик. По сути, он определяет, использует ли пользователь Wi-Fi или сотовые данные, и сохраняет количество байтов, отправленных и полученных за определенный период времени. Я видел приложение в AppStore, которое выполняет именно эту работу. Обнаружить Wi-Fi или сотовые данные довольно просто, используя образец Reachability Sample, предоставленный Apple. Моя проблема состоит в том, чтобы отслеживать отправленные и полученные байты, пока приложение находится в фоновом режиме.

Поскольку это корпоративное приложение, я использовал UIBackgroundModes «voip», чтобы избежать завершения работы приложения. Я также установил метод setKeepAliveTimeout и могу просматривать журналы каждые 10 минут, НО только в течение 10 секунд после запуска метода. Я имею в виду, что setKeepAliveTimeout заставляет мое приложение запускать таймер на 10 секунд каждые 10 минут.

Я думаю, что задача в фоновом режиме - лучшее решение моей проблемы.

Буду признателен за любые комментарии.

РЕДАКТИРОВАТЬ: Хорошо, ребята. Это идеальный способ сделать это.

Прежде всего вы должны прочитать это: http://www.christian-fries.de/blog/files/tag-ios.html

Я попробовал это, и он отлично работает. Все, что нам нужно сделать, это создать второй поток, отделенный от основного. Таким образом, у нас есть непрерывная потоковая передача, работающая вечно. Вы также должны увидеть документы GCD на веб-сайте Apple.

Вторая вещь, которую вы должны учитывать для корпоративного приложения, - это настроить его как приложение voip, таким образом iOS будет запускать ваше приложение даже после перезагрузки. IOS требует особого поведения, чтобы поддерживать работу приложений VoIP.

Вот и все, ребята. Надеюсь, это поможет вам.

18
задан Trinca 7 December 2010 в 12:08
поделиться