Visual Studio Cordova Отсутствует ключ Info.plist

Я использую визуальную студию для разработки приложений cordova.

Если я загружу свое приложение в магазин с помощью Xcode8, я получаю следующее сообщение об ошибке.

Missing Info.plist key - This app attempts to access privacy-sensitive data without a usage description. The app Info.plist must contain an NSPhotoLibraryUsageDescription key with a string value explaining to the user how the app uses this data.

На основе другого вопроса stackoverflow я добавил плагин https://github.com/leecrossley/cordova-plugin-transport-security и изменил файл plugin.xml:

<platform name="ios"> <config-file target="*-Info.plist" parent="NSAppTransportSecurity"> <dict> <key>NSAllowsArbitraryLoads</key> <true/> <key>NSPhotoLibraryUsageDescription</key> <string>This app requires access to the photo library.</string> <key>NSMicrophoneUsageDescription</key> <string>This app does not require access to the microphone.</string> <key>NSCameraUsageDescription</key> <string>This app requires access to the camera.</string> </dict> </config-file> </platform>

В моем файле config.xml:

<plugin name="cordova-plugin-transport-security" version="0.1.2" src="C:\Users\xxx\cordova-plugin-transport-security-master\cordova-plugin-transport-security-master" />

После этого я создаю приложение для iOS и загружаю его через xcode.

Но ошибка все еще существует.

Ответ 1

С этим изменением вы пишете NSPhotoLibraryUsageDescription и другие UsageDescriptions внутри NSAppTransportSecurity, он должен быть в корне.

Если вы используете последнюю версию кордо-плагина-медиа-захвата, она уже имеет необходимые значения

        <preference name="CAMERA_USAGE_DESCRIPTION" default=" " />
        <config-file target="*-Info.plist" parent="NSCameraUsageDescription">
            <string>$CAMERA_USAGE_DESCRIPTION</string>
        </config-file>

        <preference name="MICROPHONE_USAGE_DESCRIPTION" default=" " />
        <config-file target="*-Info.plist" parent="NSMicrophoneUsageDescription">
            <string>$MICROPHONE_USAGE_DESCRIPTION</string>
        </config-file>

        <preference name="PHOTOLIBRARY_USAGE_DESCRIPTION" default=" " />
        <config-file target="*-Info.plist" parent="NSPhotoLibraryUsageDescription">
            <string>$PHOTOLIBRARY_USAGE_DESCRIPTION</string>
        </config-file>

Значение $CAMERA_USAGE_DESCRIPTION, потому что оно выбрано из переменной whey, вы устанавливаете плагин из CLI. Поскольку вы используете Visual Studio, я думаю, вы можете установить значение, используя тег переменной в файле config.xml. Теги переменных должны находиться внутри плагина, который будет их использовать:

    <plugin name="cordova-plugin-media-capture" spec="~1.4.1">
        <variable name="CAMERA_USAGE_DESCRIPTION" value="your camera usage message" />
        <variable name="MICROPHONE_USAGE_DESCRIPTION" value="your microphone usage message" />
        <variable name="PHOTOLIBRARY_USAGE_DESCRIPTION" value="your photolibrary usage message" />
    </plugin>

Если это не сработает, вы можете продолжить использовать модифицированный плагин, но добавьте каждый UsageDescription в отдельный тег config-file, как в предыдущем коде.