如何从命令行获取 NSUserDefaults
Posted
技术标签:
【中文标题】如何从命令行获取 NSUserDefaults【英文标题】:How to get a NSUserDefaults from command line 【发布时间】:2016-01-06 15:36:54 【问题描述】:如何从命令行拉取 NSUserDefaults 共享首选项?这将用于开发构建。我想使用某种 shell 脚本并调用它来检索此信息。这可能吗?如果是这样,怎么做?
更新: 不幸的是,我还需要从无根设备而不是模拟器中获取它。这是因为我想获取 APNS 令牌并将其存储在某个地方。我目前将 APNS 令牌存储在 NSUserDefaults 中。需要明确的是,我有一个 ios 应用程序,我想使用 Mac 上的命令行脚本获取我存储在 NSUserDefaults 中的 APNS 令牌。我需要从设备获得它的原因是我无法从模拟器推送通知,所以除非真实设备注册,否则我不会获得 APNS 令牌。
更新:我看到了这篇 SO 文章 Browse the files created on a device by the IOS application I'm developing, on workstation?,但我想自动执行此操作。无论如何要使用 xcode 命令从外壳中拉下容器?
【问题讨论】:
除非你的设备越狱,我怀疑这是可能的。 如果您将令牌记录到控制台,您可以使用 libimobiledevice 检索它:krypted.com/mac-os-x/use-libimobiledevice-to-view-ios-logs 【参考方案1】:如果您使用的是模拟器,您可以在
中找到它们~/Library/Developer/CoreSimulator/Devices/<dev-uuid>/data/Containers/Data/Application/<app-uuid>/Library/Preferences/<app-bundle>.plist
dev-uuid
是模拟器的UUID(你可以通过xcrun simctl list
找到它们的列表)
app-uuid
是此应用安装的 UUID
app-bundle
是您的应用程序包(即 com.test.testApp)
【讨论】:
【参考方案2】:首先,你不需要解决这个问题。只需编写一些代码即可将数据打印到控制台。
如果您确实需要这样做,这里是标准用户默认值的解决方案(组用户默认值存储在另一个路径中,我现在无法处理)。
-
确保您的应用不是通过 App Store 安装的。
安装 iExplorer(在 Mac OS 上或在 Windows 上的 iFunbox)并插入您的设备。
打开 iExplorer(或 iFunbox)和浏览器到这个应用程序。将整个沙盒目录导出到您的 PC。
用户默认值存储在
Library/Preferences/<app-bundle>.plist
。用 Xcode 打开它。
【讨论】:
我需要它自动化。发生了什么是我的自动化测试,我需要获取 APNS 令牌,以便我们可以使用它进行自动化测试。您是否建议我们将其打印到控制台并从那里读取? iFunbox 不会是自动化的,而是手动的。 @john-wong 如果你安装了 Xcode,你就不需要 iFunbox。您可以从“设备”窗口获取应用沙盒。以上是关于如何从命令行获取 NSUserDefaults的主要内容,如果未能解决你的问题,请参考以下文章