0

iPhoneにインストールされている他のすべてのアプリを認識する必要があるアプリを開発しています。アプリをインストールするときに、携帯電話に既にインストールされているアプリ (Facebook、Twitter など) を認識し、アプリでそれらのアプリの通知を提供する必要があるとします。誰かがこれを行う方法についてアイデアを提供できる場合、それは高く評価されます。前もって感謝します....

4

3 に答える 3

0

これにはiHasApp ライブラリを使用できます。

iHasApp iOS フレームワークを使用すると、ユーザーのデバイスにインストールされているアプリを検出できます。検出結果は、検出された appIds の配列、または iTunes Search API からの appDictionaries の配列の形式である場合があります。

于 2012-12-13T10:15:49.507 に答える
0

デバイス上のすべてのアプリを列挙する方法はありません。あなたができる唯一のことは、 canOpenUrlを使用して既知のURLスキームを持つアプリケーションがあるかどうかを確認することです

以下は、いくつかの URL スキームのリストです。

于 2012-12-13T08:18:33.707 に答える
0

これを試してみると、現在実行中のすべてのプロセスが表示され、プロセス ID を介してシステム プロセスとサード パーティのアプリを区別できます。forrst.com/posts/UIDevice_Category_For_Processes-h1H から取得したコード

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

}:

于 2012-12-13T09:13:30.563 に答える