checkApp

Стори

ITMS-90683: Missing purpose string in Info.plist

Захищений ресурс без пояснення в Info.plist.

Що таке ITMS-90683?

Відмова Apple для білда, який може звернутися до камери, геолокації, контактів чи іншого захищеного ресурсу, а в Info.plist немає речення, навіщо. Вона береться з бінарки, а не з того, що робить застосунок: плагін, який підключає камеру, приносить цю вимогу, навіть якщо камеру ніхто ніколи не відкриває. Тому білд, що чудово працює на телефоні, так і не доходить до TestFlight. Ми називаємо ключ і плагін, через який він потрібен.

Звідки це береться у Flutter-застосунку

App Store Connect шукає в кожному бінарнику фреймворки для камери, фото, геолокації, контактів, Bluetooth та інших захищених ресурсів — незалежно від того, чи застосунок колись про них просить. У Flutter-застосунку їх зазвичай приносить плагін: image_picker — камеру й фотобібліотеку, geolocator — геолокацію, camera і mobile_scanner — камеру. permission_handler, встановлений через CocoaPods, компілює дозвіл лише тоді, коли його макрос PERMISSION_… в ios/Podfile дорівнює 1; через Swift Package Manager — лише тоді, коли його ключ уже є в Info.plist.

Як виправити

  1. Запустіть безкоштовну перевірку білда на .ipa. Вона назве відсутній ключ і плагін, якому він потрібен.
  2. Якщо застосунок користується цим ресурсом, додайте ключ в ios/Runner/Info.plist з реченням, навіщо він.
  3. Якщо не користується, приберіть плагін або, для permission_handler, виставте макрос цього дозволу в 0.
  4. Переклад в InfoPlist.strings не замінює ключ у самому Info.plist.

Безкоштовна перевірка білда читає ваш .ipa в браузері й називає причину цієї та інших відмов, нічого не завантажуючи.

Або доручіть перевірити весь білд: аудит готовності до сторів — 190 €, 2 робочі дні.

Усі коди відмов