Кордова - можете ли вы переопределить значения NSPhotoLibraryUsageDescription для plist, установленные плагином? - PullRequest
1 голос
/ 06 июня 2019

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.

Так что здесь есть две проблемы:

  1. Плагин может дать плохое описание(например, плагин cordova-plugin-x-socialsharing), который Apple может отклонить вас за

    У вас нет способа переопределить это, что я вижу.

  2. Если несколько плагинов предоставляют значение для одного и того же значения Info.plist, используется только последний.Это проблема для меня, так как вы не можете реально контролировать, какой из них «последний».

Так что мой вопрос - есть ли способ в config.xml или ловушка, чтобы предоставить фактические настройки Info.plist, которые будут использоваться?

(в настоящее время я использую Cordova CLI 8.1.2)

1 Ответ

2 голосов
/ 06 июня 2019

Вы можете использовать cordova-custom-config , чтобы переопределить сообщения описания использования, которые были вставлены Cordova: поскольку cordova-custom-config применяет свои изменения (по умолчанию) к хуку Cordova after_prepare, он будет выполняться позже, поэтому его изменения будут иметь приоритет.

Установите его в свой проект:

cordova plugin add cordova-custom-config

Затем определите блок <custom-config-file> в вашем config.xml, например:

<custom-config-file platform="ios" target="*-Info.plist" parent="NSPhotoLibraryUsageDescription">
    <string>My override description</string>
</custom-config-file>

Примечание: cordova-plugin-x-socialsharing предоставляет механизм для переопределения своих собственных описаний по умолчанию - он определяет <preference> s , который можно переопределить с помощью переменной во время установки плагина, например:

cordova plugin add cordova-plugin-x-socialsharing --variable PHOTO_LIBRARY_ADD_USAGE_DESCRIPTION="Some description" --variable PHOTO_LIBRARY_USAGE_DESCRIPTION="Some other description"
...