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
Respostas:
Eu corrijo esse problema habilitando o recurso de notificação por push.
Clique em .xcodeproj -> Capacidades -> Habilitar Notificação Push
fonte
Corrigi este problema assim:
E tente novamente!
Fonte:
fonte
Você deve ter que habilitar Destino—> capacidades—> notificação push. Eu enfrentei esse problema usando o Xcode 8.
fonte
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.
fonte
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.
2. Ative os recursos de Notificação Push
fonte
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
e agora execute o projeto definitivamente funcionará.
fonte
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.
fonte
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?
fonte
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.
fonte