11 votes

Comment obtenir les noms des applications en arrière-plan ?

Je suis en train de créer une application dans laquelle je dois montrer le nom des applications qui tournent en arrière-plan. J'ai fait de la recherche et du développement sur ce sujet et j'ai découvert que nous ne pouvons connaître que les applications d'Apple comme Photos, Camera, etc. Mais je ne savais pas comment faire. S'il vous plaît aidez-moi si vous savez comment obtenir JUSTE LES NOMS DES APPLICATIONS EN ARRIÈRE-PLAN Pour les processus en arrière-plan, j'ai utilisé la méthode suivante

- (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 vous pensez que c'est impossible, jetez un coup d'œil à cette application. http://itunes.apple.com/us/app/sys-activity-manager-for-memory/id447374159?mt=8 . J'ai aussi trouvé une solution mais ce n'est pas la bonne (je l'ai mentionné dans le dernier commentaire sous cette question).

Gracias.

1voto

Saroj Ojha Points 79

Je pense que dans ios il n'est pas possible d'obtenir quelles applications sont en cours d'exécution en arrière-plan, parce que dans ios celui qui est au premier plan celui-ci les applications actives en cours d'exécution et d'autres dont vous obtenez ces tous sont des applications de fond.

donc, à l'exception du nom de votre application, les autres sont des applications d'arrière-plan.

0voto

jornare Points 976

Je ne pense pas que ce soit possible, mais d'autres personnes comme vous se sont penchées sur le même sujet et ont trouvé des solutions de contournement. Lisez cet article de blog pour plus d'informations : http://www.amitay.us/blog/files/how_to_detect_installed_ios_apps.php

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X