iOS7 中缺少 safari history.plist 文件

Posted

技术标签:

【中文标题】iOS7 中缺少 safari history.plist 文件【英文标题】:safari history.plist file missing in iOS7 【发布时间】:2014-10-08 07:20:42 【问题描述】:

我想以编程方式访问 safari 历史文件,在这里解决了几个问题后,我发现 safari 历史存储在以下路径:/var/mobile/Library/Safari/History.plist,但我看不到 History.plist 文件,只有 safari 书签相关文件存在于 Safari 目录中。

History.plist 文件是否已移动到 ios7 中的其他路径。 我已经使用 iFile 在越狱的 iPhone 5S(iOS 7.1.1) 和 iPhone 5C(iOS 7.1.2) 上进行了检查。

【问题讨论】:

【参考方案1】:

你可以去:

/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,这是一个很好的解释和解决方案对我有用。 不知道为什么我的更改被拒绝,但我仍然想提一下 bindleIdentifier 应该是 bundleIdentifier ,而不是使用 [type] 键应该是 [appType]。 @user3932883 感谢您提到的编辑。我纠正了他们:) 发现文件 com.apple.mobile.installation.plist 不再存在 iOS 8 及更高版本:( theiphonewiki.com/wiki/Com.apple.mobile.installation.plist【参考方案2】:

检查此路径:

/private/var/mobile/Applications/Library/Safari/History.plist

【讨论】:

谢谢,我得到了 History.plist 文件,但问题是路径是 /var/mobile/Applications//Library/Safari/History.plist;并且这个应用程序标识符在不同的 iphone 中是不同的;在这种情况下,我如何在我的代码中硬编码路径,因为这个路径取决于应用程序标识符。 你不能。您必须在应用程序中动态创建路径。您能否将答案标记为已接受;)? 谢谢,请问您能否告诉我如何动态获取此路径,或者我可以直接使用您列出的路径吗? 请告诉我动态获取此路径的代码 抱歉,这是建议,但没有代码,现在没有时间编写它。在 google 上查看如何检索库的路径。

以上是关于iOS7 中缺少 safari history.plist 文件的主要内容,如果未能解决你的问题,请参考以下文章

ios7 safari的地址栏用jquery怎么隐藏?

来自蓝牙键盘的 IOS7 上 Safari 中的 onkeyup 事件

iOS7中的UIActionSheet缺少背景

html Safari iOS7.1的最小UI

Jquery DOM 准备就绪 - 不是每次都在 iphone 5 (ios7) 上的 Safari 中加载

iPhone怎样升级Safari?如图,网银支付时出现该页面,iOS7.02的Safari是啥版