Enviei meu aplicativo para revisão na App Store Connect. Embora o aplicativo ainda esteja sendo analisado, recebi um e-mail para informar que preciso corrigir um erro. Aqui está o conteúdo da mensagem:
Caro desenvolvedor,
Identificamos um ou mais problemas com uma entrega recente para seu aplicativo XXXXX. Sua entrega foi bem-sucedida, mas você pode corrigir os seguintes problemas na sua próxima entrega:
"String de finalidade ausente no arquivo Info.plist. O código do aplicativo faz referência a uma ou mais APIs que acessam dados confidenciais do usuário. O arquivo Info.plist do aplicativo deve conter uma chave NSLocationAlwaysUsageDescription com uma string de finalidade voltada para o usuário, explicando clara e completamente por que o aplicativo precisa A partir da primavera de 2019, todos os aplicativos enviados à App Store que acessam dados do usuário deverão incluir uma sequência de propósitos.Se você estiver usando bibliotecas externas ou SDKs, eles poderão fazer referência a APIs que exigem uma sequência de propósitos. pode não usar essas APIs, ainda é necessária uma sequência de objetivos.Você pode entrar em contato com o desenvolvedor da biblioteca ou do SDK e solicitar que eles liberem uma versão do código que não contenha as APIs.
Depois de corrigir os problemas, você pode usar o Xcode ou o Application Loader para carregar um novo binário no iTunes Connect.
Cumprimentos,
Equipe da App Store
Meu aplicativo foi totalmente desenvolvido com a Expo e não sei como acessar e modificar o Info.plist.
Qualquer ideia?
fonte
Respostas:
Se você estiver usando o Expo, poderá adicionar a solução resolvida adicionando infoPlist a app.json da seguinte forma:
Expo Docs
fonte
EDITAR abril de 2019 : Agora você precisa adicionar essas duas chaves, já que a primavera de 2019 já começou. Observe que
NSLocationAlwaysUsageDescription
agora está obsoleto (desde o iOS 11) e foi substituído porNSLocationAlwaysAndWhenInUseUsageDescription
eNSLocationWhenInUseUsageDescription
. Se você deseja oferecer suporte abaixo do iOS 11, precisará usar os três valores.Para resumir, você deve:
NSLocationAlwaysAndWhenInUseUsageDescription
ANDNSLocationWhenInUseUsageDescription
para iOS 11 e maisNSLocationAlwaysUsageDescription
se você deseja oferecer suporte ao iOS 10 e menosNSLocationUsageDescription
se quiser oferecer suporte ao iOS 8 e menos.Você pode enviar seu aplicativo mesmo que tenha recebido esta mensagem!Acabei de enfrentar o mesmo problema ontem, mesmo que o aplicativo não esteja usando a funcionalidade de localização. Pode estar relacionado a alguma estrutura incluída no projeto que possui esse recurso opcional.
Posso confirmar que meu aplicativo foi aprovado mesmo sem as teclas
NSLocationAlwaysUsageDescription
eNSLocationWhenInUseUsageDescription
info.plist
De fato, como a Apple afirmou no correio:
Portanto, a única coisa a fazer é adicionar essa chave (agora é melhor, para que você não esqueça) em seu projeto, para que ela seja incluída em sua próxima atualização .
Basta adicionar duas novas entradas nas chaves
info.plist
, comNSLocationAlwaysUsageDescription
eNSLocationWhenInUseUsageDescription
como, e uma breve descrição do motivo pelo qual você as usa como valor (mesmo se você realmente não as usa ...).fonte
NSLocationAlwaysUsageDescription
deveria ser substituído porNSLocationAlwaysAndWhenInUseUsageDescription
eNSLocationWhenInUseUsageDescription
, e não porNSLocationUsageDescription
(como escrevi anteriormente, desculpe ...). Atualizei minha resposta para adicionar uma soma do processo.Tenho alguns aplicativos na loja e tentei distribuir uma versão para o controle de qualidade, e o mesmo aconteceu em dois aplicativos diferentes. Acho que esse é um novo critério para aceitar os uploads de compilações na Appstore connect.
A solução é simples, adicione as seguintes linhas no arquivo .plist.
<key>NSLocationAlwaysUsageDescription</key>
<string>custom message</string>
<key>NSLocationWhenInUseUsageDescription</key>
<string>custom message</string>
PS: No meu caso, não usei nenhum recurso de localização, mas adicionei essas linhas para cumprir as diretrizes de conexão da Appstore. Btw depois de receber esse email, eu pude testar o aplicativo mesmo quando eles disseram que a compilação tinha alguns problemas.
Espero que este trabalho para vocês.
fonte
<key>NSLocationUsageDescription</key>
É um novo requisito da apple, mesmo que você não use o local. Se você deseja adicionar as permissões no Xcode, procure "Privacidade - Descrição do Uso do Local" e "Privacidade - Local quando estiver em Uso da Descrição do Uso" e digite uma string personalizada para cada um deles.
fonte
Para simplificar, você pode adicionar essas linhas no seu info.plist. Esses erros estão ocorrendo porque a partir da primavera de 2019, todos os aplicativos enviados à App Store que acessam dados do usuário deverão incluir uma sequência de objetivos.
Adicione estas linhas a seguir no seu plist
fonte
NSLocationAlwaysUsageDescription Sua localização é necessária para obter benefícios xyz para você NSLocationWhenInUseUsageDescription Sua localização é necessária para obter benefícios xyz para você
fonte
Recebemos o mesmo email e não estamos usando o CoreLocation. Após uma pesquisa rápida, descobrimos que o Parse SDK poderia usar o CoreLocation. No email da Apple, eles dizem claramente:
Isso significa que o minuto em que seu código ou qualquer outra biblioteca ou SDK pode usar o CoreLocation, mesmo que você não o use, é necessário fornecer uma descrição de privacidade para "Quando estiver em uso" e "Sempre usar".
Também é algo novo da Apple e, por enquanto, é apenas um aviso, mas será necessário a partir da primavera de 2019 para novos envios.
fonte
CLLocationManager.requestWhenInUseAuthorization()
seja chamado algum lugar no código . A Apple analisou cada código de aplicativo para ver se essa função poderia ser chamada. Se nunca for chamado, o alerta não será exibido.Este problema está ocorrendo porque você não incluiu
para o seu aplicativo. Eu enfrentei o mesmo problema ao tentar enviar meu aplicativo na AppStore. Depois que o aplicativo foi processado, recebi o mesmo email. Acabei de adicionar a descrição e agora está resolvida.
Espero que isto ajude.
fonte
<key>NSLocationAlwaysUsageDescription</key> <string>Always And In Use Permission</string>
Existem os seguintes casos:
A Apple declara em:
e:
NSLocationUsageDescription
parece morto, a única ref no site ADC é: https://developer.apple.com/ibeacon/Getting-Started-with-iBeacon.pdfPortanto, para ter certeza, use os 3 primeiros.
fonte
Todas essas respostas mostram como cumprir as regras da App Store para evitar o aviso, mas a verdadeira correção seria a Expo permitir que você desabilitasse os requisitos de SDKs para os Serviços de Localização, a menos que você realmente os use - não tenho certeza se isso é verdade. possível.
fonte
mesmo problema em 19 de fevereiro, recebi um email com várias permissões que não estou usando, presumo que sejam de plugins. A Apple diz que em 19 de março é um requisito, por isso estou adicionando-os no info.plst e enviando novamente.
É muito bobo mesmo.
fonte
Também enfrento o mesmo problema, mas após 27 horas, recebi o email sobre aprovado, mesmo que não fiz nada. Portanto, aguarde aproximadamente 24 horas em vez de fazer todo esse processo novamente.
fonte
Eu tinha em
<key>NSLocationWhenInUseUsageDescription </key>
vez de<key>NSLocationWhenInUseUsageDescription</key>
certifique-se de remover o espaço em branco à direita
fonte
Revise o e-mail que você recebeu da ** App Store Connect **
Identifique a chave ausente
Instruções
Abra o arquivo info.plist.
Adicione e pesquise a chave ausente nas opções fornecidas (por exemplo, Contatos = Privacidade - Descrição de uso dos contatos)
Adicionar descrição de uso:
Exemplo:
fonte
Com o Xcode 11, copie a chave
NSLocationAlwaysUsageDescription
e adicione-a emInfo
->Custom iOS Target Properties
-> Clique+
no canto inferior esquerdo desta guia e, como valor, insira algum tipo de descrição comoThis app requires location access to function properly.
.fonte
"String de finalidade ausente no arquivo Info.plist. O código do aplicativo faz referência a uma ou mais APIs que acessam dados confidenciais do usuário. O arquivo Info.plist do aplicativo deve conter uma chave NSLocationAlwaysUsageDescription com uma string de finalidade voltada para o usuário, explicando clara e completamente por que o aplicativo precisa A partir da primavera de 2019, todos os aplicativos enviados à App Store que acessam dados do usuário deverão incluir uma sequência de propósitos.Se você estiver usando bibliotecas externas ou SDKs, eles poderão fazer referência a APIs que exigem uma sequência de propósitos. pode não usar essas APIs, ainda é necessária uma sequência de objetivos.Você pode entrar em contato com o desenvolvedor da biblioteca ou do SDK e solicitar que eles liberem uma versão do código que não contenha as APIs.
Abra info.plist como código fonte.
Adicione estas linhas a seguir no seu plist
fonte
Meu aplicativo também entendeu isso, e eu não faço nada a respeito, mas pode funcionar bem, da próxima vez que acho que devo adicionar essa chave, basta fazer uma descrição
fonte
Uma resposta curta para o problema acima -
NSLocationAlwaysUsageDescription
deve ser atualizado com a seguinte descrição no arquivo Info.plistfonte
No nosso caso, estávamos usando
NSLocationWhenInUseUsageDescription
nosso aplicativo, mas nãoNSLocationAlwaysUsageDescription
.Lendo os comentários aqui (obrigado matt-oakes), parece que
NSLocationAlwaysUsageDescription
está sendo usado por uma das estruturas de dependência que usamos.Ao executar nosso aplicativo, ele não mostra o modal de permissão NSLocationAlwaysUsageDescription real, portanto, parece apenas lidar com isso em segundo plano.
Então, em resumo, adicionar
NSLocationAlwaysUsageDescription
ao Info.plist corrigiu o email de aviso e não alterou nenhum comportamento no aplicativo 👍🏻fonte