iOS(パブリックまたはプライベート)5.0ヘッダーで見つかりませんでしNSRunningApplication
た(どこでもチェックしたと確信していますが、間違っている可能性があります...)
これを行うにはおそらく複数の方法がありますが、そのうちの1つが機能するはずです...
まず、実行中のプロセスに関する情報を取得します。バンドルIDを取得できなくても、アプリへのパスを取得できる場合は、それで十分です。あなたはいくつかの方法の1つでそれを行うことができます:
1) スタックオーバーフローまたは多分これでこの答えを参照してください。これらの手法で実行可能パスが使用できるかどうかはわかりません...詳細には調べませんでした。
2)シェルコマンドを使用してプロセス情報を取得できます。ps
たとえばps -Aef
、コマンドラインでコマンドを使用すると、次のようになります。
iPhone4:~/Applications/8AA99EA8-9CFC-4C17-9BD1-7C2812EDAAD4/Starbucks.app mobile$ ps -Aef
UID PID PPID C STIME TTY TIME CMD
501 281 1 0 0:00.00 ?? 1:02.39 /Applications/MobilePhone.app/MobilePhone
501 282 1 0 0:00.00 ?? 2:26.40 /Applications/MobileMail.app/MobileMail
501 479 1 0 0:00.00 ?? 5:45.01 /Applications/MobileSafari.app/MobileSafari
501 490 1 0 0:00.00 ?? 0:45.62 /Applications/Music~iphone.app/Music~iphone
501 912 1 0 0:00.00 ?? 0:17.65 /var/mobile/Applications/8AA99EA8-9CFC-4237-9BD1-7C2812AAAAD4/Starbucks.app/Starbucks
501 1933 1 0 0:00.00 ?? 0:51.72 /var/mobile/Applications/9962D9AE-087C-4D2E-A6AB-151230DBCDB09/Skype.app/Skype
501 2106 1 0 0:00.00 ?? 1:11.68 /var/mobile/Applications/20DCED79-B1EE-48F4-B3E1-75E9C25A0908C/Netflix.app/Netflix
501 2259 1 0 0:00.00 ?? 0:03.83 /Applications/Stocks.app/Stocks
501 2292 1 0 0:00.00 ?? 0:07.05 /var/mobile/Applications/33713030-9D3D-4BAC-8182-282973B2E5E0/ZillowMap.app/ZillowMap
501 2568 1 0 0:00.00 ?? 0:12.91 /var/mobile/Applications/55216130-10D8-498C-B477-AD18A4982E18/eBay.app/eBay
501 2587 1 0 0:00.00 ?? 0:05.10 /var/mobile/Applications/2A8DEAAD-8244-45C0-BEA9-20DA290B0117/Moviefone.app/Moviefone
一部の出力を削除しましたが、実行中のアプリの一部を確認できます(* .app)。
そのため、アプリでは、または呼び出しを使用して実行"ps -Aef >> /var/mobile/Library/MyAppName/ps.txt"
し、出力を一時ファイルに送信できます。次に、そのファイルを解析して結果を取得します。system
exec
3)また、Darwinオープンソースのコピーをオンラインで見つけ、それを少しハッキングして、この種のデータをプログラムで解析できるC文字列バッファーに収集しました。ここでヘッダーと.cファイルを取得します。
darwin.c
darwin.h
これらの2つのファイルをXcodeプロジェクトに含めます#include "darwin.h"
。次に、次のように使用します。
OS_initialize();
size_t buffSize = 20000; // you may need to increase this!
char buffer[buffSize];
int bytes = OS_get_table(buffer, buffSize);
if (bytes > 0) {
self.textView.text = [NSString stringWithCString: buffer encoding: NSASCIIStringEncoding];
}
アプリのインストール場所がわかったので、それらのディレクトリの下にあるInfo.plistsを開きます
NSString* filename = @"/var/mobile/Applications/8AA99EA8-9CFC-4237-9BD1-7C2812EDAAD4/Starbucks.app/Info.plist";
NSDictionary* dict =
[[NSDictionary alloc] initWithContentsOfFile: filename];
NSString* bundleID = [dict valueForKey: @"CFBundleIdentifier"];
バンドルIDを読み取ります。
これを機能させるには、アプリのroot権限を取得する必要がある場合があります。
その方法については、こちらをご覧ください。