ITMS-90683: Missing purpose string in Info.plist
Geschützte Ressource ohne Begründungstext in der Info.plist.
Was ist ITMS-90683?
Apples Ablehnung für einen Build, der Kamera, Standort, Kontakte oder eine andere geschützte Ressource ansprechen kann, ohne dass in der Info.plist ein Satz steht, wozu. Sie ergibt sich aus dem Binary, nicht aus dem, was die App tut: Ein Plugin, das die Kamera einbindet, bringt die Pflicht mit, auch wenn die Kamera nie geöffnet wird. So erreicht ein Build, der auf dem Telefon einwandfrei läuft, TestFlight nie. Wir nennen den Schlüssel und das Plugin, das ihn verlangt.
Woher das in einer Flutter-App kommt
App Store Connect sucht in jeder Binärdatei nach den Frameworks für Kamera, Fotos, Standort, Kontakte, Bluetooth und andere geschützte Ressourcen, ob die App je danach fragt oder nicht. In einer Flutter-App bringt meist ein Plugin sie mit: image_picker Kamera und Fotomediathek, geolocator den Standort, camera und mobile_scanner die Kamera. permission_handler über CocoaPods kompiliert eine Berechtigung nur ein, wenn ihr Makro PERMISSION_… in ios/Podfile auf 1 steht; über Swift Package Manager nur, wenn ihr Schlüssel schon in der Info.plist steht.
So beheben Sie es
- Führen Sie die kostenlose Build-Prüfung mit der .ipa aus. Sie nennt den fehlenden Schlüssel und das Plugin, das ihn braucht.
- Nutzt die App diese Ressource, ergänzen Sie den Schlüssel in
ios/Runner/Info.plistmit einem Satz, wofür sie genutzt wird. - Nutzt sie sie nicht, entfernen Sie das Plugin oder setzen Sie bei
permission_handlerdas Makro dieser Berechtigung auf 0. - Eine Übersetzung in
InfoPlist.stringsersetzt den Schlüssel in derInfo.plistselbst nicht.
Die kostenlose Build-Prüfung liest Ihre .ipa im Browser und nennt die Ursache dieser und der anderen Ablehnungen, ohne etwas hochzuladen.
Oder lassen Sie den ganzen Build prüfen: Die Store-Prüfung kostet 190 €, 2 Arbeitstage.