2012-03-29 30 views
11

Tôi đang tạo một ứng dụng mà tôi cần hiển thị tên của ứng dụng đang chạy ở chế độ nền. Tôi đã làm R & D trên đó và đến để biết rằng chúng ta chỉ có thể biết về các ứng dụng của Apple như Photos, Camera, vv Nhưng tôi không thể biết làm thế nào. Xin hãy giúp tôi nếu bạn biết làm thế nào để có được JUST TÊN CÁC VẤN ĐỀ ỨNG DỤNG CHẠY Đối với các quá trình nền chạy Tôi đã sử dụng sau Phương phápCách lấy tên của ứng dụng chạy nền

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

Nếu bạn nghĩ không thể của nó thì vui lòng có một cái nhìn vào ứng dụng này http://itunes.apple.com/us/app/sys-activity-manager-for-memory/id447374159?mt=8. Tôi cũng đã có một giải pháp nhưng nó không phải là một cách thích hợp (tôi đã đề cập trong bình luận cuối cùng bên dưới câu hỏi này).

Cảm ơn.

+0

Bạn đã trải qua http://forrst.com/posts/UIDevice_Category_For_Processes-h1H –

+0

Có lẽ nó nói ProcessName trong mã trên của bạn ở đâu? –

+0

@AdamShiemke, đó là những gì đang đưa ra các quy trình không NAME của ứng dụng, quy trình có nghĩa là tất cả các dịch vụ chạy nền – HarshIT

Trả lời

0

Tôi không nghĩ rằng nó là có thể, nhưng những người khác như bạn đã rất tham gia vào cùng một chủ đề và đưa ra một số cách giải quyết. Đọc bài đăng trên blog này để biết thêm thông tin: http://www.amitay.us/blog/files/how_to_detect_installed_ios_apps.php

+0

Hãy thử ứng dụng này http://itunes.apple.com/us/app/sys-activity-manager-for-memory/id447374159?mt=8 – HarshIT

+0

Đọc nhận xét cuối cùng tôi đã đăng bên dưới câu hỏi – HarshIT

+0

Nhà phát triển đã lấy mã từ trang và nó không còn có sẵn – Justin

1

Tôi nghĩ rằng không có ứng dụng nào đang chạy ở chế độ nền, vì trong đó ứng dụng đang chạy trước ứng dụng đang hoạt động này và ứng dụng khác bạn đang sử dụng tất cả là appps nền.

vì vậy, loại trừ tên ứng dụng của bạn, những người khác là ứng dụng nền.

+0

xem http://itunes.apple.com/us/app/sys-activity-manager-for-memory/id447374159?mt=8. , điều này hoạt động tốt. Điều đó có nghĩa là điều này là có thể – HarshIT

Các vấn đề liên quan