你可以去:
/var/mobile/Applications/-safari app identifier-/Library/Safari/History.plist
爲了找到Safari瀏覽器的完整路徑(或任何其他系統/用戶應用程序),你可以檢查名爲com.apple.mobile.installation.plist
的plist。該文件位於/var/mobile/Library/Caches/com.apple.mobile.installation.plist
。這個plist文件包含我們想要的。 plist中是一樣的東西如下:
-Root
...
+System (Dictionary)
+User (Dictionary)
...
Safari是一個系統的應用使系統內的字典,我們可以看到一個名爲com.apple.mobilesafari
關鍵這是一本字典的關鍵了。這本字典包含一個字符串鍵Path
這就是你想要的。正如你所看到的,通過了解應用程序類型和包標識符,可以知道任何其他應用程序的路徑。所以,你的代碼應該是這樣的:
- (NSString*) safariPath {
return [self applicaitonFullPath:@"com.apple.mobilesafari" appType:@"System"];
}
- (NSString*) applicaitonFullPath:(NSString*)bundleIdentifier appType:(NSString*)appType {
//appType shoud be `System` or `User` case sensitive!!
NSDictionary *mobileInstallationDict = [NSDictionary dictionaryWithContentsOfFile:@"/var/mobile/Library/Caches/com.apple.mobile.installation.plist"];
return mobileInstallationDict[appType][bundleIdentifier][@"Path"];
}
非常感謝Hamed,這是一個很好的解釋和解決方案爲我工作。 – user3932883 2014-10-09 07:10:39
不知道爲什麼我的更改被拒絕,但我仍然想提到bindleIdentifier應該是bundleIdentifier,而不是使用[type]鍵應該是[appType]。 – user3932883 2014-10-09 07:51:46
@ user3932883感謝您提到的修改。我糾正它們:) – Hamed 2014-10-10 12:51:59