Использование данных из любого приложения

Я хочу прочитать, сколько данных из 3G использует каждое приложение. Возможно ли это в iOS 5.x? А в iOS 4.x? Моя цель, например:

  • Карты, потребляемые 3 МБ из вашего плана данных
  • Потребление почты в 420 кБ из вашего плана данных

и т.д. и т.д. Возможно ли это?

EDIT: Я просто нашел приложение, которое делает это: Data Man Pro

enter image description here

ИЗМЕНИТЬ 2: Я начинаю щедрость. Дополнительные ответы на этот вопрос ясны. Я знаю, что это возможно (экран от Data Man Pro), и я уверен, что решение ограничено. Но каково решение и как это реализовать.

Ответ 1

Это просто подсказки, а не решение. Я думал об этом много раз, но никогда не начал реализовывать все это.

  • прежде всего, вы можете рассчитать переданные байты, запрашивающие сетевые интерфейсы, взглянуть на этот ответ SO > для кода и приятное объяснение о сетевых интерфейсах на МО;

  • использовать sysctl или аналогичные системные функции для определения того, какие приложения в настоящее время запущены (и для запуска я имею в виду, что состояние процесса установлено в RUNNING, например, ps или верхние команды на OSX. Никогда не пробовал, я просто предполагаю, что это быть может на iOS, надеясь, что нет проблем с приложением, работающим как непривилегированный пользователь), чтобы вы могли определить, какие приложения запущены, и сохранить статистику трафика для этих приложений. Очевидно, что, учитывая возможность запуска приложений в фоновом режиме, сложно определить, какое приложение переносит данные.
    Также можно было бы получить информацию о сетевой активности на процесс/приложение, например nettop на OSX Lion, к сожалению, nettop использует частную инфраструктуру NetworkStatistics.framework, поэтому вы не можете выкопать что-то из ее реализации;

  • учитывать время;

Мои 2 цента

Ответ 2

Нет, все приложения в iOS изолированы песочницей, то есть вы не можете получить доступ к чему-либо вне приложения. Я не считаю, что это возможно. Я также не верю, что трафик данных сохраняется на этом уровне на устройстве, поэтому яблоко реализовало бы его на странице network или usage в Settings.app.

Кроме того, не у всех есть "план данных". Например. в Швеции его общее, что трафик данных является бесплатным без ограничений как по размеру, так и по скорости.