Apache Cordova工具(VS2015):为iOS

时间:2015-09-23 15:53:50

标签: ios cordova visual-studio-2015 visual-studio-cordova

我在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文档here的理解,也由SO问题here引用,Apache Cordova工具允许您将* info.plist文件添加到/ res / native /用于代替任何生成文件的ios文件夹。但是,我不能让它发挥作用。

上面的文档(在我看来)对于文件的命名有点混乱......

  

将自定义Info.plist文件放在res / native / ios / config.xml中   显示名称文件夹以覆盖诸如启动画面或图标之类的设置。   Info.plist文件名必须重命名如下:config.xml display   name-Info.plist更新iOS框架密钥。

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

给定一个项目&#34;显示名称&#34; &#34;我的项目&#34; (如&#34; Common选项卡&#34;,&#34;显示名称&#34;在设计器中查看config.xml时),我假设文件名已经是&#34;我的项目-Info.plist&#34;或者可能&#34; config.xml我的项目-Info.plist&#34;。我也不确定是否应该创建另一个子文件夹来包含文件......

  

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

然而,如果我在构建之后在Xcode中打开项目,我使用这些文件名中的任何一个(remotebuild / taco子系统在〜/ .taco_home / remote-builds / taco-中留下项目的副本remote / builds / nnn / cordovaApp / platforms / ios / My Project&#34;文件夹,直到你关闭remotebuild服务器),然后查看使用我的设置不存在的构建提交的plist。

我还发现有一个&#34;我的项目-Info.plist&#34;在&#34;平台/ ios /我的项目&#34;文件夹,但如果我再次对该文件副本进行更改,则不会过滤到Mac进行构建。

任何人都可以验证我应该使用的文件夹和文件名。我知道我上面提到的SO问题是在2月回来的,因此它将引用其中一个预览构建并且知道项目的格式在那时和RTM之间发生了变化,这可能就是我过时的指示。

感谢。

2 个答案:

答案 0 :(得分:3)

您可以创建一个插件来执行此操作。这就是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

答案 1 :(得分:0)

好的,我终于弄明白了这是怎么回事。给出示例显示名称&#34;我的项目&#34;以上...

  • plist文件应命名为&#34;我的项目-Info.plist&#34;
  • 该文件应放在文件夹&#34; res / native / ios / My project&#34;

我想文档中引用&#34; config.xml显示名称&#34;确实有意义,因为它引用了&#34;显示名称&#34;查看&#34; config.xml&#34;时从公共标签中查看在设计器中(虽然元素实际上命名为&#34; name&#34;)。我仍然认为这不是很清楚!

  

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

因此建议您从原始文件的副本开始,该副本可以在&#34; platforms / ios / {display name} / {display name} -Info.plist&#34;中找到,或者坚持使用示例,&#34; platforms / ios / My project / My project-Info.plist&#34;。