Ios 从PLIST中删除特定键

Ios 从PLIST中删除特定键,ios,cordova,ionic3,cordova-ios,Ios,Cordova,Ionic3,Cordova Ios,我正在开发一个使用地理位置的Ionic应用程序,基于我的config.xml和一个额外的edit config元素,我在info.plist文件中获得以下三个键: NSLocationWhenUsageDescription:应用程序正在使用时将使用位置 NSLocationAlwaysUsageDescription:此应用程序需要不断访问您的位置,以便跟踪您的位置,即使在屏幕关闭或应用程序处于后台时也是如此 NSLocationAlways和WhenInUsageDescription:此

我正在开发一个使用地理位置的Ionic应用程序,基于我的config.xml和一个额外的edit config元素,我在info.plist文件中获得以下三个键:

  • NSLocationWhenUsageDescription:应用程序正在使用时将使用位置
  • NSLocationAlwaysUsageDescription:此应用程序需要不断访问您的位置,以便跟踪您的位置,即使在屏幕关闭或应用程序处于后台时也是如此
  • NSLocationAlways和WhenInUsageDescription:此应用程序需要不断访问您的位置,以便跟踪您的位置,即使在屏幕关闭或应用程序处于后台时也是如此
我正在添加使用钥匙时的位置,但其他两个是从其他地方输入的。以下是我的相关config.xml:

    ...
    <platform name="ios">
        <edit-config file="*-Info.plist" mode="merge" target="NSLocationWhenInUseUsageDescription">
            <string>Location will be used while app is in use.</string>
        </edit-config>
        ...
    </platform>
    ...
    <plugin name="cordova-plugin-geolocation" spec="^4.0.1">
        <variable name="GEOLOCATION_USAGE_DESCRIPTION" value="Geolocation will be used to determine your location" />
    </plugin>
。。。
应用程序正在使用时将使用位置。
...
...
我想做的是删除两个“始终”权限。我想问用户的唯一一件事是永不/何时使用

是否有任何方法可以使用config.xml删除这两个“始终”元素?我不想每次构建生产iOS时都要记住删除这两个键。

这些键都是

只有在运行时请求使用位置“始终”时,才会显示
NSLocationAlwaysUsageDescription
nsLocationAlways和WhenUsageDescription
中包含的字符串

更新

要从
.plist
中删除这些键,可以使用。首先安装它:

cordova plugin add cordova-custom-config
然后在
下添加
块以删除不需要的键:

<platform name="ios">
    <custom-config-file parent="NSLocationAlwaysUsageDescription" target="*-Info.plist" mode="delete"/>
    <custom-config-file parent="NSLocationAlwaysAndWhenInUseUsageDescription" target="*-Info.plist" mode="delete"/>


我理解,但客户端的要求是在应用程序的iOS设置中仅显示从不/正在使用选项。我能够让它工作的唯一方法是在XCode中手动修改plist文件并删除这两个键。当我这样做时,“始终”选项将不再显示。因此,如果我能找到一种方法让config.xml自动修改plist(即使这意味着不首先将always键放在那里)。如果在运行时使用请求位置权限,则可以在使用模式下显式请求,而不会显示always选项,即使plist密钥存在:
cordova.plugins.diagnostic.requestLocationAuthorization(成功、错误、cordova.plugins.diagnostic.locationAuthorizationMode.WHEN_IN_USE)是的,我就是这样做的。因此,在请求权限时,它仅显示“使用时”选项。因此,该部件符合要求。当他们进入设置->应用程序名->位置时,他们会看到三个选项,从不,使用时,总是。他们只想在选项中看到“永不”和“何时使用”。如果我从plist中删除这两个键,这就是应用程序位置设置页面上显示的内容。这有意义吗?那么您想防止用户手动进入设置并将位置模式从“使用时”更改为“始终”吗?似乎是一种解决边缘问题的方法,但是你可以在添加了plist键之后使用-我会更新答案来说明如何删除。是的,相信我;我知道当我在谷歌上搜索的时候,我会陷入困境,我找不到任何例子!哈哈,谢谢你,先生;谢谢。