如何从命令行获取NSUserDefaults

3
我该如何从命令行中获取NSUserDefaults共享偏好设置?这是为了开发构建。我想使用某种脚本来调用它来检索此信息。这可能吗?如果可以,怎么做?
更新: 不幸的是,我还需要从未越狱的设备中获取它,而不是模拟器。这是因为我想抓取APNS令牌并将其存储在某个地方。我目前正在一个NSUserDefaults中存储APNS令牌。明确一下,我有一个iOS应用程序,并且我希望使用Mac上的命令行脚本获取我在NSUserDefaults中存储的APNS令牌。我需要从设备中获取它的原因是我无法从模拟器进行推送通知,因此除非真实设备注册,否则我将无法获得APNS令牌。
更新: 我看到了这篇SO文章Browse the files created on a device by the IOS application I'm developing, on workstation?但我想自动化这个过程。是否有办法使用xcode命令从shell中拉取容器?

除非你的设备越狱了,否则我怀疑这是不可能的。 - mah
如果您在控制台中记录令牌,可以使用libimobiledevice检索它:http://krypted.com/mac-os-x/use-libimobiledevice-to-view-ios-logs/ - chedabob
2个回答

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)


0

首先,您不需要解决这个问题。只需编写一些代码将数据打印到控制台即可。

如果确实需要这样做,以下是标准用户默认值的解决方案(组用户默认值存储在另一个路径中,我现在无法处理)。

  1. 确保您的应用程序未通过App Store安装。
  2. 安装iExplorer(在Mac OS上)或iFunbox(在Windows上),并插入您的设备。
  3. 打开iExplorer(或iFunbox)并浏览到此应用程序。将整个沙盒目录导出到您的PC。
  4. 用户默认值存储在Library/Preferences/<app-bundle>.plist中。使用Xcode打开它。

我需要自动化。我的自动化测试需要获取APNS令牌,以便我们可以进行自动化测试。您是在建议我们将其打印到控制台并从那里读取吗?iFunbox不是自动化的,而是手动的。 - j2emanue
@john-wong 如果你已经安装了Xcode,就不需要使用iFunbox了。你可以从“设备”窗口获取应用程序沙盒。 - chedabob

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接