In iOS10, prima di accedere a dati sensibili alla privacy come Fotocamera, Contatti e così via, devi chiedere l'autorizzazione, altrimenti la tua app si bloccherà quando accederai. Quindi Xcode registrerà come:
Questa app si è arrestata in modo anomalo perché ha tentato di accedere a dati sensibili alla privacy senza una descrizione dell'utilizzo. Il file Info.plist dell'app deve contenere una NSContactsUsageDescription
chiave con un valore stringa che spiega all'utente come l'app utilizza questi dati.
Come affrontarlo?
Apri il file nel tuo progetto denominato info.plist
, fai clic con il pulsante destro del mouse, aprendolo come Source Code
, incolla questo codice qui sotto. Oppure puoi aprire info.plist
come Property List
predefinito, fare clic sul pulsante Aggiungi, Xcode ti darà i completamenti suggeriti durante la digitazione Privacy -
con l'aiuto della tastiera ⬆️ e ⬇️.
Ricordati di scrivere la descrizione del motivo per cui chiedi questa autorizzazione, tra <string>
e </string>
, o la tua app verrà rifiutata da Apple:
<!-- 🖼 Photo Library -->
<key>NSPhotoLibraryUsageDescription</key>
<string>$(PRODUCT_NAME) photo use</string>
<!-- 📷 Camera -->
<key>NSCameraUsageDescription</key>
<string>$(PRODUCT_NAME) camera use</string>
<!-- 🖼 Write To Image Gallery>
<key>NSPhotoLibraryAddUsageDescription</key>
<string>$(PRODUCT_NAME) save phots in gallry</string>
<!-- 🎤 Microphone -->
<key>NSMicrophoneUsageDescription</key>
<string>$(PRODUCT_NAME) microphone use</string>
<!-- 📍 Location -->
<key>NSLocationUsageDescription</key>
<string>$(PRODUCT_NAME) location use</string>
<!-- 📍 Location When In Use -->
<key>NSLocationWhenInUseUsageDescription</key>
<string>$(PRODUCT_NAME) location use</string>
<!-- 📍 Location Always -->
<key>NSLocationAlwaysUsageDescription</key>
<string>$(PRODUCT_NAME) always uses location </string>
<!-- 📆 Calendars -->
<key>NSCalendarsUsageDescription</key>
<string>$(PRODUCT_NAME) calendar events</string>
<!-- ⏰ Reminders -->
<key>NSRemindersUsageDescription</key>
<string>$(PRODUCT_NAME) reminder use</string>
<!-- 📒 Contacts -->
<key>NSContactsUsageDescription</key>
<string>$(PRODUCT_NAME) contact use</string>
<!-- 🏊 Motion -->
<key>NSMotionUsageDescription</key>
<string>$(PRODUCT_NAME) motion use</string>
<!-- 💊 Health Update -->
<key>NSHealthUpdateUsageDescription</key>
<string>$(PRODUCT_NAME) heath update use</string>
<!-- 💊 Health Share -->
<key>NSHealthShareUsageDescription</key>
<string>$(PRODUCT_NAME) heath share use</string>
<!-- ᛒ🔵 Bluetooth Peripheral -->
<key>NSBluetoothPeripheralUsageDescription</key>
<string>$(PRODUCT_NAME) Bluetooth Peripheral use</string>
<!-- 🎵 Media Library -->
<key>NSAppleMusicUsageDescription</key>
<string>$(PRODUCT_NAME) media library use</string>
<!-- 📱 Siri -->
<key>NSSiriUsageDescription</key>
<string>$(PRODUCT_NAME) siri use</string>
<!-- 🏡 HomeKit -->
<key>NSHomeKitUsageDescription</key>
<string>$(PRODUCT_NAME) home kit use</string>
<!-- 📻 SpeechRecognition -->
<key>NSSpeechRecognitionUsageDescription</key>
<string>$(PRODUCT_NAME) speech use</string>
<!-- 📺 VideoSubscriber -->
<key>NSVideoSubscriberAccountUsageDescription</key>
<string>$(PRODUCT_NAME) tvProvider use</string>
Se non funziona, prova a chiedere l'autorizzazione in background:
<key>UIBackgroundModes</key>
<array>
<!-- something you should use in background -->
<string>location</string>
</array>
Oppure vai a target -> Capabilities -> Background Modes -> open the background Modes
:
quindi pulisci il tuo progetto, eseguilo.
Vai a qui per maggiori informazioni: iOS10AdaptationTips .