ITMS-90683: Missing purpose string in Info.plist
Risorsa protetta senza motivazione in Info.plist.
Che cos'è ITMS-90683?
Il rifiuto di Apple per un build che può accedere a fotocamera, posizione, contatti o un'altra risorsa protetta senza una frase nell'Info.plist che spieghi perché. Dipende dal binario, non da ciò che l'app fa: un plugin che include la fotocamera porta con sé l'obbligo anche se la fotocamera non si apre mai, e così un build che funziona sul telefono non arriva mai a TestFlight. Indichiamo la chiave e il plugin che la richiede.
Da dove arriva in un'app Flutter
App Store Connect cerca in ogni binario i framework per fotocamera, foto, posizione, contatti, Bluetooth e altre risorse protette, che l'app li chieda o no. In un'app Flutter di solito li porta un plugin: image_picker fotocamera e libreria foto, geolocator la posizione, camera e mobile_scanner la fotocamera. permission_handler installato con CocoaPods include un'autorizzazione solo se la sua macro PERMISSION_… in ios/Podfile vale 1; con Swift Package Manager, solo se la sua chiave è già in Info.plist.
Come risolverlo
- Eseguite il controllo gratuito della build sull'.ipa. Indica la chiave mancante e il plugin che la richiede.
- Se l'app usa quella risorsa, aggiungete la chiave in
ios/Runner/Info.plistcon una frase che dica a cosa serve. - Se non la usa, rimuovete il plugin oppure, per
permission_handler, impostate a 0 la macro di quell'autorizzazione. - Una traduzione in
InfoPlist.stringsnon sostituisce la chiave nell'Info.pliststesso.
Il controllo gratuito della build legge il vostro .ipa nel browser e indica la causa di questo e degli altri rifiuti, senza caricare nulla.
Oppure fate verificare l'intera build: la verifica degli store costa 190 €, 2 giorni lavorativi.