2017-01-07 48 views
7

Gdy próbuję i obciążenie przesłać moje iTunes App instalatora iTunes ja złagodzić ten błąd:PhoneGap brakującym plist.key

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

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.

Co mogę dodać do mojego pliku konfiguracyjnym poniżej pozwolić działać:

<preference name="permissions" value="none" /> 
    <preference name="orientation" value="default" /> 
    <preference name="target-device" value="universal" /> 
    <preference name="fullscreen" value="false" /> 
    <preference name="webviewbounce" value="false" /> 
    <preference name="disallowOverscroll" value="true" /> 
    <preference name="prerendered-icon" value="true" /> 
    <preference name="stay-in-webview" value="false" /> 
    <preference name="ios-statusbarstyle" value="black-opaque" /> 
    <preference name="detect-data-types" value="true" /> 
    <preference name="exit-on-suspend" value="false" /> 
    <preference name="show-splash-screen-spinner" value="true" /> 
    <preference name="auto-hide-splash-screen" value="true" /> 
    <preference name="disable-cursor" value="false" /> 
    <preference name="android-minSdkVersion" value="10" /> 
    <preference name="android-targetSdkVersion" value="19" /> 
    <preference name="android-installLocation" value="auto" /> 
    <gap:plugin name="org.apache.cordova.battery-status" source="npm" /> 
    <gap:plugin name="org.apache.cordova.camera" source="npm"/>  
    <gap:plugin name="org.apache.cordova.media-capture" source="npm"/> 
    <gap:plugin name="org.apache.cordova.console" source="npm" /> 
    <gap:plugin name="org.apache.cordova.contacts" source="npm"/> 

    <gap:plugin name="org.apache.cordova.device-motion" source="npm"/> 
    <gap:plugin name="org.apache.cordova.device-orientation" source="npm"/> 
    <gap:plugin name="org.apache.cordova.dialogs" source="npm"/> 
    <gap:plugin name="org.apache.cordova.file" source="npm"/> 
    <gap:plugin name="org.apache.cordova.file-transfer" source="npm"/> 

    <gap:plugin name="org.apache.cordova.inappbrowser" source="npm"/> 
    <gap:plugin name="org.apache.cordova.media" source="npm"/> 
    <gap:plugin name="org.apache.cordova.network-information" source="npm"/> 
    <gap:plugin name="org.apache.cordova.splashscreen" source="npm"/> 
    <gap:plugin name="org.apache.cordova.vibration" source="npm"/> 
    <icon src="icon.png" /> 

    <gap:splash src="splash.png" gap:platform="android" gap:qualifier="port-ldpi" /> 
    <gap:splash src="splash.png" gap:platform="android" gap:qualifier="port-mdpi" /> 
    <gap:splash src="splash.png" gap:platform="android" gap:qualifier="port-hdpi" /> 
    <gap:splash src="splash.png" gap:platform="android" gap:qualifier="port-xhdpi" /> 
    <gap:splash src="splash.png" gap:platform="blackberry" /> 
    <gap:splash src="splash.png" gap:platform="ios" width="320" height="480" /> 
    <gap:splash src="splash.png" gap:platform="ios" width="640" height="960" /> 
    <gap:splash src="splash.png" gap:platform="ios" width="640" height="1136" /> 
    <gap:splash src="splash.png" gap:platform="ios" width="768" height="1024" /> 
    <gap:splash src="splash.png" gap:platform="ios" width="1024" height="768" /> 
    <gap:splash src="splash.png" gap:platform="winphone" /> 
    <access origin="*" /> 

    <gap:plugin name=" phonegap-plugin-barcodescanner" source="npm" /> 
    <gap:plugin name="uk.co.workingedge.phonegap.plugin.launchnavigator" source="npm" /> 
    <gap:plugin name="cordova-plugin-directions" source="npm" /> 


    <!-- iPhone/iPod Touch - lower 4s --> 
    <icon src="icon-57.png" gap:platform="ios" width="57" height="57" /> 
    <icon src="icon.png" gap:platform="ios" width="114" height="114" /> 
    <icon src="icon-72.png" gap:platform="ios" width="72" height="72" /> 
    <icon src="152.png" gap:platform="ios" width="152" height="152" /> 
    <icon src="icon-120.png" gap:platform="ios" width="120" height="120" /> 
    <icon src="76.png" gap:platform="ios" width="76" height="76" /> 
    <icon src="icon-40.png" gap:platform="ios" width="40" height="40" /> 

    <!-- iPhone/iPod Touch - 5-5s --> 
    <icon src="icon.png" gap:platform="ios" width="60" height="60" /> 
    <icon src="icon.png" gap:platform="ios" width="120" height="120" /> 
    <!-- iPhone6-6+ --> 
    <icon src="icon.png" gap:platform="ios" width="180" height="180" /> 

    <!-- Settings Icon --> 
    <icon src="icon-29.png" gap:platform="ios" width="29" height="29" /> 
    <icon src="icon.png" gap:platform="ios" width="58" height="58" /> 

    <!-- Spotlight Icon --> 
    <icon src="icon.png" gap:platform="ios" width="40" height="40" /> 
    <icon src="icon.png" gap:platform="ios" width="80" height="80" /> 

    <plugin name="cordova-plugin-whitelist" version="1" source="npm"/> 

    <gap:plugin name="cordova-plugin-geolocation" source="npm"/> 

    <feature name="http://api.phonegap.com/1.0/battery" /> 
    <feature name="http://api.phonegap.com/1.0/camera" /> 
    <feature name="http://api.phonegap.com/1.0/network" /> 
    <feature name="http://api.phonegap.com/1.0/notification" /> 

    <gap:plugin name="cordova-plugin-x-socialsharing" source="npm" /> 
+0

Próbowałem tej poprawki, ale nie działało: https://medium.com/collaborne-engineering/cordova-ios-10-nscamerausagedescription-missing-fbcbe5e41565#.duxoaay7a – Mike

+0

może być konieczne wykonanie http: // stackoverflow .com/questions/38498275/ios-10-changes-in-asking-permissions-of-camera-microphone-and-photo-library-c – Naitik

Odpowiedz

14

Kolejny edit: Większość wtyczek usuwa zmienne dla opisem użytkowania, więc teraz sposób ich ustalania korzysta edit-config tag w pliku config.xml podobnym do tego.

Jesteśmy przy użyciu aparatu do czegoś ...

Ale nie wszystkie wtyczki zostały jeszcze zaktualizowane, więc lepiej przed czytać Wtyczka za README.md. W podstawowych wtyczkach znajduje się w sekcji o nazwie iOS Quirks.

Musi także CLI 7.0.1 lub nowszej, należy ustawić go w config.xml tak:

<preference name="phonegap-version" value="cli-8.0.0" /> 

EDIT:

Mój stary odpowiedź już nie działa, jeśli masz <preference name='phonegap-version' value='cli-7.0.1' /> (lub jeśli nie ma żadnych phonegap-version jak użyje go jako domyślny)

Aby ustawić opisy użytkowania korzystać params na wtyczce

<plugin name="cordova-plugin-camera"> 
    <param name="CAMERA_USAGE_DESCRIPTION" value="We are using the Camera for something..." /> 
    <param name="PHOTOLIBRARY_USAGE_DESCRIPTION" value="We are using the Photo Library for something..." /> 
</plugin> 

Pamiętaj, że jeśli masz jakieś wtyczki z tych samych opisów użytkowania i nie wypełnić je tagami param mogliby zastąpić domyślny pusty ciąg

Można wymusić używać starego budowniczy z tego tagu , ale nie jest to zalecane, nowy konstruktor jest lepszy <preference name='pgb-builder-version' value='1' />

OLD ODPOWIEDŹ:

można pisać w informacji.plist tak:

<gap:config-file platform="ios" parent="NSCameraUsageDescription" overwrite="true"> 
    <string>We are using the Camera for something...</string> 
</gap:config-file> 

overwrite="true" jest ważne, ponieważ najnowsza wersja wtyczki aparatu jest już pisanie pustych wartości.

Ja testowałem go na app próbki i to działa https://github.com/jcesarmobile/phonegap-template-hello-world/blob/454e852955e66470890cba636450abd422f50598/config.xml#L153-L155

+0

Niesamowite, udało się to ustalić za pomocą sugestii. Po prostu musiałem usunąć tę linię: z góry – Mike

+0

Edytowałem i wyjąłem. Również w moim kodzie właśnie skopiowałem ten sam kod i dodałem drugi dla NSCameraUsageDescription – Mike

+1

tak, przepraszam, skopiowałem część sekcji NSPhotoLibraryUsageDescription, która była powyżej. Zaktualizowałem link do pliku config.xml mojej przykładowej aplikacji, wskazując tylko właściwe wiersze dla NSCameraUsageDescription – jcesarmobile

2

Proszę otworzyć swój projekt w Xcode i przejdź do pliku w folderze .plist zasobów,

potem na koniec w tobie .plist pliku kliknij na „+” i dodać wyszukiwania dla "Prywatność - zdjęcie librar y Opis użycia "i dodaj jego wartość w kolumnie obok.

samo zrób dla „NSCameraUsageDescription” ponownie kliknij „+” i wyszukać „prywatności - kamera Użycie Opis” i ponownie dać jakiś opis wykorzystania w kolumnie obok.

to rozwiążesz problem.

Aby uzyskać więcej informacji odwiedź następujące:

1) Stackoverflow question related to your question 2) Official apple doc for all required keys to be added

+0

Używam kompilacji phonegap i phonegap. Nie mam pliku plist. Muszę dodać soemthing do mojego pliku config.xml – Mike

+0

, więc musisz wykonać http://stackoverflowflow.com/questions/22769111/add-entry-to-ios-plist-file-via-cordova-config-xml i dodać powyższe Pozwolenie – Naitik

1

Przed dostępu prywatne dane wrażliwe jak aparat fotograficzny, Kontakty, i tak dalej, należy poprosić o zezwolenie, aplikacja będzie awaria podczas uzyskać do nich dostęp. Następnie Xcode będzie logować się jak:

This app has crashed because it attempted to access privacy-sensitive data without a usage description. The app's Info.plist must contain an NSContactsUsageDescription key with a string value explaining to the user how the app uses this data.

Jak sobie z tym poradzić? Jak jabłko powiedzieć:

You must statically declare your app’s intended use of protected data classes by including the appropriate purpose string keys in your Info.plist file.

W twoim przypadku może trzeba dodać następujące w Info.plist,

<!-- Photo Library --> <key>NSPhotoLibraryUsageDescription</key> <string>$(PRODUCT_NAME) photo use</string>

sugerują również, aby spojrzeć na ten link bardziej szczegółowych informacji na ten temat . Mam nadzieję, że to pomoże.

Można również sprawdzić ten plugin który pomaga w manipulowaniu * -info.plist

+0

Jak dodać to za pomocą narzędzia do budowania PhoneGap? nie ma info.plist tylko plik konfiguracyjny? – Mike

+0

@Mike info.plist będzie dostępny w folderze platformy/ios/ROJECT_NAME. możesz użyć konfiguracji pliku konfiguracyjnego, aby zmienić info.plist. Sprawdź ten link - http://cordova.apache.org/docs/en/6.x/plugin_ref/spec.html#config-file Mam nadzieję, że pomaga – Gandhi

+0

@Gandhi używa Phonegap Build, nie ma tam żadnego folderu platform lub jakikolwiek sposób ręcznego edytowania pliku info.plist, sposób, w jaki to robię jest taki, jak mówiłem, nie wiem, dlaczego nie próbował mojej odpowiedzi :( – jcesarmobile

0

żadna z odpowiedzi tutaj pracował dla mnie dokładnie tak ja figura Dodam moje dwa centy, jak dostałem tę pracę.

Najpierw spróbowałem zaakceptowanej odpowiedzi (napisanej przez jcesarmobile). Kiedy próbowałem tego i działałem: phonegap kompilował iOS za każdym razem, gdy konfiguracja została usunięta z mojego pliku config.xml. Więc następnym Próbowałem rozwiązanie wskazano tutaj:

http://geeklearning.io/how-to-add-specific-configuration-parameters-to-ios-p-list-and-android-manifest/

To nie działa na początku, było wiele zmian, które miały być wykonane, z których wszystkie dostałem od komentarzach github repo o pliku . Proponuję uruchomić kompilację, skopiuj komunikat o błędzie i wyszukaj w komentarzach i rób to, co mówią. Kiedy raz go zbudowałem, to nadal nie działało po przesłaniu połączenia iTunes.

W końcu musiałem otworzyć plik Info.plist i ręcznie umieścić w poniższym

<key>NSCameraUsageDescription</key> 
<string>We are using the Camera to (blah blah blah, your explanation)</string> 
<key>NSPhotoLibraryUsageDescription</key> 
<string>We are using the Photo Library to (your reason)</string> 
<key>NSMainNibFile</key> 

Choć hak nie zrobić dokładnie tak, jak twierdził, nadal uważam, że to ważne, ponieważ przed I Czy to wszystko zostało usunięte, a teraz zostaje.

Mam nadzieję, że to pomoże komuś.

0

PhoneGap Build - dla każdego, za pomocą CLI-7.0.1 jak zapewne każdy powinien być teraz:

<edit-config target="NSPhotoLibraryUsageDescription" file="*-Info.plist" mode="overwrite"> 
    <string>Used to allow the user to select media to upload to us</string> 
</edit-config> 

który nie iść w tagu, po prostu w tagu Widget jak wszystko inne. Zmień ciąg na cokolwiek, co będzie dla ciebie odpowiednie.