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только скопирует значение элемента last для любой клавиши (NSPhotoLibraryUsageDescription
) в файл Info.plist
.
Другая проблема заключается в том, что установка этих настроек самостоятельно в config.xml
не будетиметь приоритет перед теми, которые установил плагин.Это зависит только от того, какие значения являются последними в platforms/ios/ios.json
.
Так что здесь есть две проблемы:
Плагин может дать плохое описание(например, плагин cordova-plugin-x-socialsharing
), который Apple может отклонить вас за
У вас нет способа переопределить это, что я вижу.
Если несколько плагинов предоставляют значение для одного и того же значения Info.plist, используется только последний.Это проблема для меня, так как вы не можете реально контролировать, какой из них «последний».
Так что мой вопрос - есть ли способ в config.xml или ловушка, чтобы предоставить фактические настройки Info.plist, которые будут использоваться?
(в настоящее время я использую Cordova CLI 8.1.2)