2016-01-06 59 views
2

如何从命令行获取NSUserDefaults共享首选项?这将用于开发构建。我想使用某种类型的shell脚本并调用它来检索这个信息。这可能吗?如果是这样,怎么样?如何从命令行获取NSUserDefaults

更新: 不幸的是,我还需要从无根设备而不是模拟器中获取它。因为我想抓住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命令从外壳拉下容器?

+0

除非您的设备遭到破解,否则我怀疑这是可能的。 – mah

+0

如果您将令牌记录到控制台,可以使用libimobiledevice检索它:http://krypted.com/mac-os-x/use-libimobiledevice-to-view-ios-logs/ – chedabob

回答

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或Windows上的iFunbox上)并插入您的设备。
  3. 打开iExplorer(或iFunbox)和浏览器到这个应用程序。将整个沙箱目录导出到PC。
  4. 用户默认值存储在Library/Preferences/<app-bundle>.plist中。用Xcode打开它。
+0

我需要它自动执行。我的自动化测试发生了什么,我需要获得APNS令牌,以便我们可以使用它进行自动化测试。您是否建议我们将它打印到控制台并从那里读取? iFunbox不会自动化,而是手动。 – j2emanue

+0

@ john-wong如果你安装了Xcode,你不需要iFunbox。您可以从“设备”窗口获取应用程序沙箱。 – chedabob