【发布时间】:2019-06-06 05:12:14
【问题描述】:
TLDR; 使用 Cordova,有没有办法覆盖插件可能设置的任何 Info.plist 值,例如 NSPhotoLibraryAddUsageDescription? (即,也许有一个钩子?)
许多 Cordova 插件尝试配置 plist 值,例如 NSPhotoLibraryUsageDescription。例如:
<config-file target="*-Info.plist" parent="NSPhotoLibraryAddUsageDescription">
<string>Please authorize photo library to save pictures.</string>
</config-file>
<config-file target ="*-Info.plist" parent="NSPhotoLibraryUsageDescription">
<string>Please authorize photo library to save pictures.</string>
</config-file>
如果有多个插件这样做,我们最终会在platforms/ios/ios.json 中得到多个值,例如:
{
"prepare_queue": {
"installed": [],
"uninstalled": []
},
"config_munge": {
"files": {
"*-Info.plist": {
"parents": {
"NSPhotoLibraryUsageDescription": [
{
"xml": "<string>Send photos in your messages to the app.</string>",
"count": 1
},
{
"xml": "<string>We allow you to send us photos via our in-app messenger</string>",
"count": 144
}
],
...
这是有问题的,因为 Cordova 似乎只会将任何键 (NSPhotoLibraryUsageDescription) 的 last 项的值复制到 Info.plist 文件中。
另一个问题是在config.xml 中自己设置这些设置不会优先于插件设置的设置。这仅取决于 platforms/ios/ios.json 中的 last 值。
所以这里有两个问题:
-
插件可以提供错误的描述(例如
cordova-plugin-x-socialsharing插件),Apple can reject you for那么你就无法覆盖我所看到的这一点。
-
如果多个插件为同一个 Info.plist 值提供了一个值,则只使用最后一个。这对我来说是个问题,因为你无法真正控制哪个是“最后一个”。
所以我的问题是 - 在 config.xml 或钩子中有没有办法提供将使用的实际 Info.plist 设置?
(我目前使用的是 Cordova CLI 8.1.2)
【问题讨论】:
标签: ios cordova cordova-plugins info.plist cordova-cli