2012-03-29 15 views
11

Estoy creando una aplicación en la que necesito mostrar los nombres de las aplicaciones que se ejecutan en segundo plano. Hice R & D y supe que solo podemos saber sobre las aplicaciones de Apple, como Fotos, Cámara, etc. Pero no sabía cómo. Por favor, ayúdame si usted sabe cómo conseguir sólo nombres de las aplicaciones el fondo corriente Para procesos en segundo plano que ejecuta he utilizado siguiendo el ProcedimientoCómo obtener nombres de fondo Ejecutar aplicaciones

- (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; 
} 

Si cree que es imposible entonces amablemente a echar un vistazo a esta aplicación http://itunes.apple.com/us/app/sys-activity-manager-for-memory/id447374159?mt=8. También tengo una solución, pero no es una manera adecuada (lo he mencionado en el último comentario debajo de esta pregunta).

Gracias.

+0

¿Has visto este http://forrst.com/posts/UIDevice_Category_For_Processes-h1H –

+0

Tal vez donde dice ProcessName en el código anterior? –

+0

@ AdamShiemke, eso es lo que le está dando a los procesos no NOMBRE de la aplicación, los procesos significan todos los servicios que ejecutan en segundo plano – HarshIT

Respuesta

0

No creo que sea posible, pero otros como usted han estado muy involucrados en el mismo tema y han encontrado algunas soluciones. Lea este blogpost para más información: http://www.amitay.us/blog/files/how_to_detect_installed_ios_apps.php

+0

Pruebe esta aplicación http://itunes.apple.com/us/app/sys-activity-manager-for-memory/id447374159?mt=8 – HarshIT

+0

Lea el último comentario que publique debajo de la pregunta – HarshIT

+0

El desarrollador sacó el código de su página y ya no está disponible – Justin

1

Creo que en ios no es posible obtener las aplicaciones que se ejecutan en segundo plano, porque en ios, cuál es el primero, las aplicaciones activas y las que están obteniendo estos todos son aplicaciones de fondo.

por lo que, excluyendo el nombre de su aplicación, otras son aplicaciones en segundo plano.

+0

ver http://itunes.apple.com/us/app/sys-activity-manager-for-memory/id447374159?mt=8. , esto funciona bien Eso significa que esto es posible – HarshIT

Cuestiones relacionadas