После очередной успешной сборки приложения на Ionic, отправляемой в iTunes Connect, я неожиданно получил странное сообщение об ошибке от Apple на почку:
We have discovered one or more issues with your recent delivery for "****". To process your delivery, the following issues must be corrected:
Missing Info.plist key - This app attempts to access privacy-sensitive data without a usage description. The app's Info.plist must contain an NSCameraUsageDescription key with a string value explaining to the user how the app uses this data.
Once these issues have been corrected, you can then redeliver the corrected binary.
Regards,
After a quick search I found that in iOS 10 was a change after which all usage description Cocoa Keys which are shown when trying access privacy-sensitive data became mandatory.
Немного погуглив я обнаружил, что в iOS 10 произошло изменение, после которого все описания использования Cocoa Keys, которые отображаются при попытке доступа к конфиденциальным данным, стали обязательными.
Так, в моем случае это было не только NSCameraUsageDescription, но также в следующих письмах я получил NSPhotoLibraryUsageDescription, NSBluetoothPeripheralUsageDescription, NSLocationWhenInUseUsageDescription и NSLocationAlwaysUsageDescription.
Для устранения данной проблемы достаточно добавить edit-config опцию в Plugin.xml
<platform name="ios">
<edit-config file="*-Info.plist" mode="merge" target="NSCameraUsageDescription">
<string>Used to take pictures or videos if necessary</string>
</edit-config>
<edit-config file="*-Info.plist" mode="merge" target="NSPhotoLibraryUsageDescription">
<string>Used to load pictures if necessary</string>
</edit-config>
<edit-config file="*-Info.plist" mode="merge" target="NSBluetoothPeripheralUsageDescription">
<string>Used to communicate with beacons</string>
</edit-config>
<edit-config file="*-Info.plist" mode="merge" target="NSLocationWhenInUseUsageDescription">
<string>Used to show your location on the map</string>
</edit-config>
<edit-config file="*-Info.plist" mode="merge" target="NSLocationAlwaysUsageDescription">
<string>Used to trace your location</string>
</edit-config>
</platform>
Вы так же можете посмотреть все коды developer.apple.com.