NSCameraUsageDescription no travamento do tempo de execução do iOS 10.0?

154

Usando a iOS 10.0última versão beta. Eu tentei usar a Câmera para escanear código de barras no meu aplicativo e ele travou com esse erro de tempo de execução.

Este aplicativo falhou porque tentou acessar dados sensíveis à privacidade sem uma descrição de uso. O Info.plist do aplicativo deve conter uma chave NSCameraUsageDescription com um valor de sequência explicando ao usuário como o aplicativo usa esses dados.

Coloque essa chave na lista, mas ela ainda travou?

user3069232
fonte
6
Eu tenho o mesmo problema, adicionei o NSCameraUsageDescription em info.plist, mas ainda trava com a mesma mensagem. Você conseguiu resolvê-lo? Aparentemente, ninguém que respondeu a esse problema entendeu que ele falha mesmo que você já tenha adicionado a chave.
Carmena
Se você adicionou a entrada ao arquivo info.plist correto, mas ainda assim falhou, pode ser porque o Xcode às vezes falha em perceber alterações nos arquivos de recursos, como info.plist, imagens, áudio, filmes etc. Pode ser necessário executar um limpe ou exclua o produto de criação do aplicativo da pasta Dados Derivados para forçar o Xcode a usar a versão mais recente.
Walt Sellers

Respostas:

227

Após o iOS 10, você precisa definir e fornecer uma descrição de uso de todos os dados sensíveis à privacidade do sistema acessados ​​pelo seu aplicativo no Info.plist, conforme abaixo:

Calendário

Key    :  Privacy - Calendars Usage Description    
Value  :  $(PRODUCT_NAME) calendar events

Lembrete:

Key    :   Privacy - Reminders Usage Description    
Value  :   $(PRODUCT_NAME) reminder use

Contato :

Key    :   Privacy - Contacts Usage Description     
Value  :  $(PRODUCT_NAME) contact use

Foto :

Key    :  Privacy - Photo Library Usage Description    
Value  :  $(PRODUCT_NAME) photo use

Compartilhamento Bluetooth:

Key    :  Privacy - Bluetooth Peripheral Usage Description     
Value  :  $(PRODUCT_NAME) Bluetooth Peripheral use

Microfone:

Key    :  Privacy - Microphone Usage Description    
Value  :  $(PRODUCT_NAME) microphone use

Câmera :

Key    :  Privacy - Camera Usage Description   
Value  :  $(PRODUCT_NAME) camera use

Localização:

Key    :  Privacy - Location Always Usage Description   
Value  :  $(PRODUCT_NAME) location use

Key    :  Privacy - Location When In Use Usage Description   
Value  :  $(PRODUCT_NAME) location use

Heath:

Key    :  Privacy - Health Share Usage Description   
Value  :  $(PRODUCT_NAME) heath share use

Key    :  Privacy - Health Update Usage Description   
Value  :  $(PRODUCT_NAME) heath update use

HomeKit:

Key    :  Privacy - HomeKit Usage Description   
Value  :  $(PRODUCT_NAME) home kit use

Biblioteca de mídia :

Key    :  Privacy - Media Library Usage Description   
Value  :  $(PRODUCT_NAME) media library use

Movimento:

Key    :  Privacy - Motion Usage Description   
Value  :  $(PRODUCT_NAME) motion use

Reconhecimento de fala :

Key    :  Privacy - Speech Recognition Usage Description   
Value  :  $(PRODUCT_NAME) speech use

SiriKit:

Key    :  Privacy - Siri Usage Description  
Value  :  $(PRODUCT_NAME) siri use

Fornecedor de TV:

Key    :  Privacy - TV Provider Usage Description   
Value  :  $(PRODUCT_NAME) tvProvider use

Você pode obter informações detalhadas neste link.

Bhoopi
fonte
1
Privacy - Photo Library Usage Descriptiono erro ocorreuNSPhotoLibraryUsageDescription
Bruno Bieri 17/05
Sou novo no desenvolvimento da Apple e esse problema foi irritante. Ainda bem que me deparei com isso. Felicidades!
user2529011
1
@ MaylorTaylor: Sim, você precisa adicioná-lo.
Bhoopi 9/08/19
111

Como a Apple mudou, como você pode acessar qualquer tipo de dados particulares do usuário iOS 10.

Você precisa adicionar a Privacy - Camera usage descriptionchave " " às Info.plistinformações de uso e aos aplicativos que são aplicáveis ​​ao seu aplicativo, como no exemplo abaixo, forneci que utilizei para digitalizar códigos de barras.

Para mais informações, consulte a captura de tela abaixo.

insira a descrição da imagem aqui

Ramkrishna Sharma
fonte
62

Você deve adicionar esta chave abaixo em info.plist.

NSCameraUsageDescription Ou Privacy - Camera usage description

E adicione uma descrição de uso.

Capturas de tela detalhadas estão disponíveis neste link

Bluewings
fonte
Parece que ele já adicionou isso, mas ainda está sofrendo o acidente. É o mesmo problema que estou tendo, mesmo que o KVP esteja presente, ainda está travando como se não estivesse.
43

Como alternativa, abra o Info.plist como código-fonte e adicione:

<key>NSCameraUsageDescription</key>
<string>Camera usage description</string>
ayalcinkaya
fonte
4
caso alguém esteja procurando localizar o "NSCameraUsageDescription", adicione "NSCameraUsageDescription" = "Requires access to the camera";seu arquivo infoPlist.strings localizado
Khurram Shehzad
30

Use esses valores brutos e copie em info.plist

    <key>NSCalendarsUsageDescription</key>
      <string>$(PRODUCT_NAME) calendar events</string>
    <key>NSRemindersUsageDescription</key>
      <string>$(PRODUCT_NAME) reminder use</string>
    <key>NSCameraUsageDescription</key>
      <string>This app requires to access your photo library to show image on profile and send via chat</string>
    <key>NSMicrophoneUsageDescription</key>
      <string>This app requires to access your microphone to record video with your voice send via chat</string>
    <key>NSPhotoLibraryUsageDescription</key>
      <string>This app requires to access your photo library to show image on profile and send via chat</string>
    <key>NSContactsUsageDescription</key>
       <string>$(PRODUCT_NAME) contact use</string>
    <key>NSLocationAlwaysUsageDescription</key>
      <string>$(PRODUCT_NAME) location use</string>
    <key>NSLocationWhenInUseUsageDescription</key>
      <string>$(PRODUCT_NAME) location use</string>
Zeeshan
fonte
de você conseguiu esses nomes de chave brutos?
Omar N Shamali
Isso é ótimo. Ele me salvou de fazer muitos cliques no Xcode
MaylorTaylor
26

a interface do usuário do xcode mudou um pouco de uma versão para a próxima, então aqui é onde você atualiza o plist para 9.0 beta 4 se isso ajuda Projeto -> Destino -> Informaçõesinsira a descrição da imagem aqui

user3325025
fonte
2
Essa deve ser a resposta aceita! Eu estava tendo esse mesmo problema no XCode 9.2, apesar de já ter adicionado <key>NSCameraUsageDescription</key>ao info.plist .
Psd
2
Resposta definitivamente aceita !! Eu tenho dois destinos no meu projeto e tentei adicionar isso <key>NSCameraUsageDescription</key>ao segundo arquivo info.plist , mas sem efeito, e posso confirmar que o XCode (10.1) definitivamente não está levando em consideração essas alterações executando o status git , porque meu info.plist para outro destino não teve alterações. Portanto, o caminho certo é percorrer o Projeto-> Alvo-> Informações . Valeu cara!
usar o seguinte código
4

Outro exemplo que enfrentei ao tentar usar a câmera foi que ela ainda estava ocupada travando, dando a mesma, _CRASHING_DUE_TO_PRIVACYmesmo depois de adicionar a "Descrição de uso da câmera". Depois de não conseguir obter nada tangível da pilha de chamadas, alternou para o "Organizador" e examinou os relatórios de falhas no dispositivo. Descobri que estava de fato reclamando da privacidade devido à falta de "Descrição de uso do microfone". Eu adicionei isso e me livrei de uma quebra tão enigmática.

Yoku
fonte
4

Para aqueles que ainda estão recebendo o erro, mesmo que você tenha adicionado as chaves apropriadas no Info.plist:

Certifique-se de adicionar a chave no Info.plist correto. Versão mais recente do xCode, aparentemente possui 3 Info.plist.

Um está na pasta com o nome do seu aplicativo, o que resolveu o problema para mim.

O segundo está em YourappnameTests e o terceiro está em YourappnameUITests.

Espero que ajude.

Vetuka
fonte
2

Se você estiver usando o Ionic, poderá resolvê-lo diretamente do config.xml adicionando a tag dentro da plataforma ios:

<platform name="ios">
.
.
.
    <config-file target="*-Info.plist" parent="NSPhotoLibraryUsageDescription">
        <string>photo library usage description</string>
    </config-file>
    <config-file target="*-Info.plist" parent="NSCameraUsageDescription">
        <string>camera usage description</string>
    </config-file>
.
.
.
</platform>

Também gostaria de agradecer à resposta @BHUPI.

Victor Tavares
fonte
1

Eu verifiquei o plist e descobri que ele não está funcionando, apenas nas informações do "projeto", você precisa adicionar a "Privacidade - Câmera ....", então deve funcionar. Espero ajudá-lo.

Mark90
fonte
0

Eu tive o mesmo problema e não consegui encontrar uma solução. Mark90 está certo, existem muitos arquivos info.plist e você deve editar o correto. Vá para Projeto, em TARGETS, selecione o projeto (não os testes), na barra de guias, selecione Informações e adicione a permissão em " Propriedades personalizadas de destino do iOS ".

Michael Marinos Likouras
fonte