2012-05-10 18 views
10

Quiero leer la cantidad de datos de 3G que usa cada aplicación. ¿Esto es posible en iOS 5.x? Y en iOS 4.x? Mi objetivo es, por ejemplo:Uso de datos desde cualquier aplicación

  • Mapas consumió 3 MB de su plan de datos
  • correo consume 420 kB de su plan de datos

etc, etc. ¿Es esto posible?

EDIT: acabo encontrado haciendo esa aplicación: Data Man Pro

enter image description here

EDIT 2: estoy empezando una recompensa. Puntos extra va a la respuesta que aclara esto. Sé que es posible (pantalla de Data Man Pro) y estoy seguro de que la solución es limitada. Pero cuál es la solución y cómo implementar esto.

Respuesta

8

Estas son sólo sugerencias que no son una solución. Pensé en esto muchas veces, pero nunca realmente comencé a implementar todo.

  1. bytes en primer lugar, se puede calcular transferidos consulta de las interfaces de red, miren a this SO answer de código y una buena explicación acerca de las interfaces de red en iOS;

  2. uso sysctl o funciones del sistema similares para detectar qué aplicaciones se están ejecutando actualmente (y para corriendo quiero decir el estado del proceso se establece en RUNNING, como el ps o superiores comandos hacen en OSX. Nunca lo intenté Supongo que esto es posible en iOS, esperando que no haya problemas con la aplicación que se ejecuta como usuario sin privilegios) para que pueda deducir qué aplicaciones se están ejecutando y guardar las estadísticas de tráfico para esas aplicaciones. Obviamente, dada la posibilidad de que las aplicaciones se ejecuten en segundo plano, es difícil determinar qué aplicación está transfiriendo datos.
    También podría ser posible recuperar información sobre la actividad de red por proceso/aplicación como nettop hace en OSX Lion, por desgracia nettop utiliza el NetworkStatistics.framework marco privado por lo que no se puede sacar algo fuera su implementación;

  3. tenga en cuenta el tiempo;

Mis 2 centavos

+1

Teniendo en cuenta las extrañas imprecisiones informadas por algunos usuarios de Data Man, es probable que solo esté haciendo "conjeturas informadas" basadas en un mecanismo similar o idéntico al que describió. +1 – Toastor

1

No, todas las aplicaciones en iOS son sandbox, lo que significa que no puede acceder a nada fuera de la aplicación. No creo que esto sea posible. Tampoco creo que el tráfico de datos se guarde en este nivel en el dispositivo, por lo que Apple lo habría implementado en la página network o en la página usage en Settings.app.

Además de eso, no todo el mundo tiene un "plan de datos". P.ej. en Suecia es común que el tráfico de datos sea gratuito sin límite de tamaño o velocidad.

+0

OK además de un plan de datos. Si el usuario no lo tiene, quiero leer cada conexión que no es WiFi – Kuba

+0

Como mencioné, las aplicaciones son de espacio aislado, no puedes (* legalmente) acceder a nada fuera del entorno limitado de tu propia aplicación y lo que permiten las API de Apple.Puede verificar qué conexión * Su * aplicación usa usando Accesibilidad, pero eso no responde su pregunta. –

+0

Acabo de encontrar una aplicación que hace eso: http://itunes.apple.com/us/app/dataman-pro-real-time-data/id433617332?mt=8! ¡Actualizo mi publicación original! – Kuba

Cuestiones relacionadas