Hay una app llamada «Monitor de Actividad de Toque» en la App Store, que muestra los procesos en segundo plano, así como la memoria libre.

Por lo que DEBE haber una API pública para tener acceso a esta información. La evidencia:

Cómo obtener información acerca de la memoria y los procesos que se ejecutan en una Aplicación de la Tienda aprobado app? (Sí, hay uno!)

Cómo obtener información acerca de la memoria y los procesos que se ejecutan en una Aplicación de la Tienda aprobado app? (Sí, hay uno!)

Ya estoy buscando durante días, pero no se puede encontrar ningún buen punto de partida. Cómo puede esta aplicación figura todo esto sin ningún tipo de jailbreak /hacking /etc.?

Hasta hace poco yo estaba seguro de que algo como esto es absolutamente imposible que en iOS.

He encuentra este fragmento de código:

- (NSArray *)runningProcesses {
int mib[4] = {CTL_KERN, KERN_PROC, KERN_PROC_ALL, 0};
size_t miblen = 4;
size_t size;
int st = sysctl(mib, miblen, NULL, &size, NULL, 0);
struct kinfo_proc * process = NULL;
struct kinfo_proc * newprocess = NULL;
do {
size += size / 10;
newprocess = realloc(process, size);
if (!newprocess){
if (process){
free(process);
}
return nil;
}
process = newprocess;
st = sysctl(mib, miblen, process, &size, NULL, 0);
} while (st == -1 && errno == ENOMEM);
if (st == 0){
if (size % sizeof(struct kinfo_proc) == 0){
int nprocess = size / sizeof(struct kinfo_proc);
if (nprocess){
NSMutableArray * array = [[NSMutableArray alloc] init];
for (int i = nprocess - 1; i >= 0; i--){
NSString * processID = [[NSString alloc] initWithFormat:@"%d", process[i].kp_proc.p_pid];
NSString * processName = [[NSString alloc] initWithFormat:@"%s", process[i].kp_proc.p_comm];
NSDictionary * dict = [[NSDictionary alloc] initWithObjects:[NSArray arrayWithObjects:processID, processName, nil] 
forKeys:[NSArray arrayWithObjects:@"ProcessID", @"ProcessName", nil]];
[processID release];
[processName release];
[array addObject:dict];
[dict release];
}
free(process);
return [array autorelease];
}
}
}
return nil;
}

Pero no puedo hacer que se ejecute en el iPhone. Xcode no conozca estos símbolos:
CTL_KERN, KERN_PROC, KERN_PROC_ALL

Así que por supuesto me debe importar un archivo de encabezado o de la biblioteca. ¿Alguien sabe donde pertenecen, y cómo los encabezados deben ser importados para hacer este trabajo?

  • potencialmente relacionados con la cuestión enlaza aquí
  • Pero es permitida oficialmente por Apple para usar?! Tal vez las Aplicaciones en la Tienda sólo tenía la suerte de conseguir en?!
  • Esta aplicación ya no está disponible. Pero el uso de sysctl no está prohibido de aplicaciones. Ver un montón de aplicaciones que hacen cosas similares. Búsqueda de monitor de actividad en la tienda de iOS.
  • Hay una aplicación en la actualidad en la Appstore que muestra todas las aplicaciones en ejecución, e incluso muestra los iconos de aplicaciones. La aplicación también puede «liberar» la memoria no utilizada y «limpiar» la caché de disco. Ver la app Battery Doctor.
  • Así que en realidad usted puede saber el nombre de la aplicación con esto?
  • ¿cómo obtener iconos de las aplicaciones?

2 Comentarios

  1. 31

    sysctl ya no tienen acceso al espacio aislado iOS 9 aplicaciones.

    De la WWDC 2015 sesión 703 de Privacidad y de Su Aplicación:

    En iOS 9, la caja de arena ahora se evita un proceso de acceso a la
    kern.proc, kern.procargs, y kern.procargs2 los valores para otros
    los procesos de

    y

    apps de iOS no están autorizados a ver qué otras aplicaciones se están ejecutando

    Por lo que incluso si usted encuentra una manera, es probable que sean rechazados en el App Store.

    https://developer.apple.com/videos/play/wwdc2015-703/

    • Gracias a las Redes de Anuncios. Esta es la razón por la que no podemos tener cosas bonitas. Sí, China, estoy mirando en su dirección general.

Dejar respuesta

Please enter your comment!
Please enter your name here