Apache Cordova的工具(VS2015):为iOS的* info.plist添加自定义条目

我在VS2015上使用Apache Cordova的工具来开发一个项目,我需要在* info.plist文件中设置一些额外的选项,以临时解除阻止HTTP Web访问(NsAppTransportSecurity)以及启用地理定位服务在后台运行。

基本上,我需要添加以下…

<key>UIBackgroundModes</key> <array> <string>location</string> </array> <key>NSLocationAlwaysUsageDescription</key> <string>Location services are required.</string> <key>NSAppTransportSecurity</key> <dict> <key>NSAllowsArbitraryLoads</key> <true/> </dict> 

根据我对Microsoft文档的理解( 这里也是由SO问题引用的),Apache Cordova的Tools允许您将* info.plist文件添加到/ res / native / ios文件夹,以替代任何生成的文件。 我不能但得到这个工作。

上面的文档(在我看来)有点混淆文件的命名…

在res / native / ios / config.xml显示名称文件夹中放置一个自定义Info.plist文件,以覆盖闪屏或图标等设置。 Info.plist文件名必须重命名如下:config.xml显示名称Info.plist来更新iOS框架密钥。

这是我认为我可能会出错的地方; 我根本无法确定文件的名称应该是什么。

给定“我的项目”的项目“显示名称”(在“devise器”中查看config.xml时,在“常用选项卡”,“显示名称”中指定),我假设文件名为“我的项目 – Info.plist“或者可能是”config.xml My project-Info.plist“。 我也不知道是否应该创build另一个子文件夹来包含文件…

在res / native / ios / config.xml显示名称文件夹中放置一个自定义的Info.plist文件

然而,无论使用这些文件名,如果我在Xcode之后打开项目(remotebuild / taco子系统在〜/ .taco_home / remote-builds / taco-remote / builds中留下项目的副本) / nnn / cordovaApp / platforms / ios / My Project“文件夹,直到closuresremotebuild服务器),然后查看使用构build提交的plist,我的设置不存在。

我还发现在“Platforms / ios / My Project”文件夹中有一个“My project-Info.plist”,但是如果我再次修改这个文件的副本,他们就不会过滤到Mac上进行构build。

任何人都可以validation我应该使用的文件夹和文件名。 我知道上面提到的SO问题早在二月份就已经提到了,因此我们将会提到一个预览版本,并且知道项目的格式在当时与RTM之间已经发生了变化,这可能只是我遵循过时的指令。

谢谢。

你可以创build一个插件来做到这一点。 这就是plugin.xml的样子:

<plugin ...> <platform name="ios"> <config-file target="*-Info.plist" parent="UIStatusBarHidden"> <true/> </config-file> <config-file target="*-Info.plist" parent="UIViewControllerBasedStatusBarAppearance"> <false/> </config-file> </platform> </plugin>

这是一个很好的参考: https : //github.com/leecrossley/cordova-plugin-transport-security

好的,我终于搞清楚了这是如何工作的。 鉴于上面的“我的项目”的示例显示名称…

  • plist文件应该被命名为“My project-Info.plist”
  • 该文件应放置在“res / native / ios / My project”文件夹中

我猜在文档中对“config.xml显示名称”的引用在devise器中查看“config.xml”的时候,通用标签中的“显示名称”实际上是有意义的(尽pipe元素实际上被命名为“名称”)。 我仍然不认为这是非常明确的!

但是请注意,将使用该文件而不是生成的文件,并且对config.xml所做的任何更改都不会反映在此文件中(您将不得不手动复制这些更改)。

因此,build议您从“platforms / ios / {display name} / {display name} -Info.plist”中find原始文件的副本,或者坚持使用“platforms / ios /我的项目/我的项目 – Info.plist“。