Nenhuma string de autorização 'aps-environment' válida encontrada para o aplicativo na app store

103

Tenho um aplicativo chamado Dripper que lancei há cerca de um mês e uma atualização alguns dias atrás. A atualização adicionou notificações push e alguns pequenos ajustes. Eu testei com o sandbox-apn usando o perfil de desenvolvimento e funcionou muito bem. Então mudei as coisas para o apn de produção e coloquei em voo de teste, novamente as coisas funcionaram perfeitamente. Depois de colocar a atualização no mercado e executá-la, percebi que não estava recebendo nenhum novo registro push no servidor. Eu olhei os logs do console para o dispositivo e encontrei isto:

4 de dezembro 17:55:15 Ina-touch-it coffco [1210]: Registrando para notificações remotas
4 de dezembro 17:55:15 Ina-touch-it SpringBoard [52]: Nenhuma string de autorização 'aps-environment' válida encontrada para o aplicativo 'Gotejador': (nulo). As notificações não serão entregues.
4 de dezembro 17:55:15 Ina-touch-it coffco [1210]<Warning>: Failed to register with error : Error Domain=NSCocoaErrorDomain Code=3000 "no valid 'aps-environment' entitlement string found for application" UserInfo=0x174270900 {NSLocalizedDescription=no valid 'aps-environment' entitlement string found for application}

Estou um pouco confuso porque pensei que o apn de produção funcionaria da mesma forma entre compilações ad-hoc e de app store.

Aqui está o id do meu aplicativo e seus direitos -> http://i.stack.imgur.com/uf4pB.png

Aqui está o perfil de provisionamento da loja de aplicativos -> http://i.stack.imgur.com/AYOV5.png

Jessiah
fonte
Aqui está sendo assinado e carregado -> i.stack.imgur.com/AziCI.png Configurações de compilação -> i.stack.imgur.com/j2TFG.png
Jessiah

Respostas:

282

Eu corrijo esse problema habilitando o recurso de notificação por push.

Clique em .xcodeproj -> Capacidades -> Habilitar Notificação Push

wei
fonte
15
No XCode 8, vi um erro nesta seção dizendo que um arquivo de direitos precisava ser adicionado. Cliquei para corrigir e funcionou bem.
Pelota de
Só recentemente apareceu quando começou a desenvolver no Xcode 8 e isso corrigiu. Obrigado!
Kody R.
Antes estava trabalhando no Xcode 7.3, mas de repente não me registrei no Xcode 8, mas isso resolveu meu problema ao ativar o recurso de notificação por push.
Vinod Rathod
A Apple decide ocultar essa opção em algum lugar dentro do Xcode 8.1. Por favor, deixe-me saber se alguém conseguir encontrar.
Thomas Sebastian
Não recebi a opção "Notificação push" na lista de recursos. Era algo a ver com o fato de que o XCode estava gerando automaticamente meu perfil de provisionamento (eu sou novo no iOS dev, então posso estar errado ...). Tive que entrar em minha conta de desenvolvedor e criar manualmente um perfil de provisionamento para meu aplicativo antes de exibir notificações push na lista de recursos. Por fim, ativá-lo corrigiu esse problema.
Max Mumford
103

Corrigi este problema assim:

  • Vá para "Preferências" do Xcode
  • Vá para a guia "Contas"
  • Selecione meu ID Apple e clique em "Ver detalhes"
  • Clique na seta no canto inferior esquerdo para atualizar
  • Clique em "Concluído"

E tente novamente!

Fonte:

Erwan
fonte
6
então você deve selecionar o perfil de aprovisionamento correto em Build Setting
Hashem Aboonajmi
2
No meu caso, precisei regenerar os perfis de provisionamento no centro de desenvolvimento. Em seguida, baixe todos os perfis e certificados novamente em Xcode> preferências> Contas> Seu ID Apple> botão visualizar detalhes no canto direito> botão baixar tudo. Depois disso, deve funcionar novamente.
blackjacx
2
Acho triste que haja tantas falhas no processo de envio e implantação. A única maneira de tolerar tudo isso é fazer 100% tudo manualmente e saber o que o Xcode está tentando fazer e gerenciar identidades de Keychain e perfis de provisionamento no sistema de arquivos e por meio do Utilitário de configuração do iPhone.
Tom Pace
57

Você deve ter que habilitar Destino—> capacidades—> notificação push. Eu enfrentei esse problema usando o Xcode 8.insira a descrição da imagem aqui

Ram G.
fonte
18

Esses problemas ocorrem porque o Perfil de Aprovisionamento atual não contém informações de APNS, pois o Perfil de Aprovisionamento é criado ANTES de criar o certificado de APNS.

Portanto, para resolver o problema, crie um novo Perfil de Provisionamento e selecione o Perfil de Provisionamento no Xcode. Então você está FEITO.

Além disso, quando você adiciona push, acredito que também atualizou os certificados no keychain.

Fahim Parkar
fonte
O perfil que estou usando foi criado depois que criei o certificado para o push de produção apn. Posso fazer algo para confirmar que está faltando ou contém as informações do apns?
Jessiah
@Jessiah: Não .. É como se tivéssemos que seguir os passos fornecidos pela Apple.
Fahim Parkar
6

Em relação ao Xcode 9, algumas das respostas estão desatualizadas ou incompletas para resolver esse problema específico.

Aqui estão os passos a seguir para mim:

1. Crie o Perfil de Provisionamento

( FCM não é um pré-requisito para notificação push, mas seus guias são incrivelmente claros, aqui está o link )

Para testar seu aplicativo durante o desenvolvimento, você precisa de um Perfil de Provisionamento para desenvolvimento para autorizar seus dispositivos a executar um aplicativo que ainda não foi publicado na App Store.

  1. Navegue até o Apple Developer Member Center e faça login.
  2. Navegue até Certificados, Identificadores e Perfis.
  3. No menu suspenso no canto superior esquerdo, selecione iOS, tvOS, watchOS se ainda não estiver selecionado e navegue até Provisioning Profiles> All.
  4. Clique no botão + para criar um novo Perfil de Provisionamento.
  5. Selecione iOS App Development como tipo de perfil de provisionamento e clique em Continue.
  6. No menu suspenso, selecione o ID do aplicativo que deseja usar e clique em Continuar.
  7. Selecione o certificado de desenvolvimento iOS do ID do aplicativo que você escolheu na etapa anterior e clique em Continuar.
  8. Selecione os dispositivos iOS que deseja incluir no perfil de provisionamento e clique em Continuar. Certifique-se de selecionar todos os dispositivos que deseja usar para o seu teste.
  9. Insira um nome para este perfil de provisionamento (por exemplo, Firebase Sample App Development Profile) e clique em Gerar.
  10. Clique em Download para salvar o Perfil de Provisionamento em seu Mac.
  11. Clique duas vezes no arquivo de perfil de provisionamento para instalá-lo.

2. Ative os recursos de Notificação Push

  1. Vá para o editor de projeto, do manual oficial insira a descrição da imagem aqui
  2. Na seção de recursos, Ativar Notificação Push insira a descrição da imagem aqui
micabola
fonte
4

Tive o mesmo problema ao usar o iOS 8.0 e versões superiores; Não recebi o token do dispositivo e estava dando o erro: "nenhuma string de autorização 'aps-environment' válida encontrada para o aplicativo"

Eu consertei usando as etapas abaixo

  • Eu criei um novo perfil de provisionamento para a id do aplicativo
  • adicionou no xcode
  • projeto Vá para "Preferências" do Xcode
  • Vá para a guia "Contas" Selecione meu ID Apple e clique em "Ver Detalhes"
  • selecione seu perfil de aprovisionamento
  • Clique na seta no canto inferior esquerdo para atualizar
  • Clique em "Concluído"

e agora execute o projeto definitivamente funcionará.

Venky Chittala
fonte
3

Por algum motivo, a solução de Wei não estava funcionando para mim. Ao clicar em Reparar direitos, o Xcode gerou dois arquivos e ainda não funcionou, de fato, os arquivos de direitos gerados estavam vazios.

Isso foi causado (aparentemente) pelo fato de o PRODUCT_NAME do projeto ser bastante longo e incluir espaços e letras "ä" e "ö". Após alterá-lo para uma versão curta com letras apenas em inglês, a correção de Wei funcionou corretamente.

FrankByte.com
fonte
1

Levei um tempo para descobrir o que estava causando um erro de autorização do aps-environment válido. O problema era que havia dois arquivos .entitlements no projeto XCode. Um é platform / ios //. Entitlements e outro é platform / ios // Resources / .entitlements e os direitos apropriados estão presentes no primeiro arquivo apenas enquanto o XCode está configurado para usar o último. Atualizei o último arquivo manualmente e tudo começou a funcionar. Outra opção para corrigir isso é alterar quais .entitlements é usado pelo XCode. Isso pode ser feito em Build Settings -> Signing -> Code Signing Entitlements config param.

Não sei por que existem dois arquivos .entitlements no XCode. Será que o plug-in cordova push criou o segundo (estou desenvolvendo um aplicativo móvel cordova híbrido)? E qual é o local correto para o arquivo .entitlements?

Alex Ryltsov
fonte
-1

Eu experimentei esse problema e resolvi com a primeira solução.

No entanto, falhei uma vez porque tinha duas contas da Apple conectadas. Depois de removido um, tudo começou a funcionar.

Desen GUO
fonte