Estou tentando configurar meu aplicativo para suportar notificação push, mas continuo recebendo este erro: Falha ao obter token, erro: Erro Domain = NSCocoaErrorDomain Code = 3000 "nenhuma string de autorização 'aps-environment' válida encontrada para o aplicativo" UserInfo = 0x1f818fc0 { NSLocalizedDescription = nenhuma string de autorização 'aps-environment' válida encontrada para o aplicativo}
- Eu habilitei meu aplicativo para oferecer suporte a notificações push (apenas para desenvolvimento neste momento).
- Eu criei o perfil de provisionamento APÓS habilitar as notificações push.
- Meu identificador de pacote é o mesmo que aparece no perfil.
- No meu arquivo de perfil, há uma string: aps-environment
- Tive a certeza de que, tanto no projeto quanto no destino, na seção "Identidade de assinatura do código", TODOS os valores foram selecionados para ser meu perfil de provisionamento.
Mais alguma ideia? Obrigado.
Respostas:
No meu caso, o que está em meu perfil de provisionamento:
Era diferente das coisas no aplicativo que foi realmente construído (você pode descobrir onde ele foi construído olhando a guia Logs do Xcode)
codesign -d --entitlements - '/Users/drew/Library/Developer/Xcode/DerivedData/spolsky-bdbtdfjeeywhqzccpmmceqvnhgtm/Build/Products/Debug-iphoneos/spolsky-ios.app' <dict> <key>application-identifier</key> <string>Y2X6Z7Z2GR.com.dca.spolsky-ios</string> <key>get-task-allow</key> <true/> <key>keychain-access-groups</key> <array> <string>Y2X6Z7Z2GR.com.dca.spolsky-ios</string> </array> </dict>
Isso era verdade , embora o texto de dica "Atualmente corresponde" em Identidade de assinatura de código estivesse indicando o perfil de provisionamento correto - estranho, não? Para tornar uma história estranha ainda mais estranha, o perfil de provisionamento correto estava sendo instalado no dispositivo quando eu executei, (Configurações-> Geral-> Perfis) me levando a acreditar que o perfil de provisionamento estava certo - mas estava voltando para um ID curinga quando o aplicativo foi realmente iniciado .
A pista era a diferença na saída desses dois comandos:
Y2X6Z7Z2GR .com.dca. spolsky-ios vs P5GM95Q9VV .com.dca. spolsky
Quando fiz a correspondência da parte em negrito, a parte em itálico mudou para corresponder automaticamente. Além disso, a saída de segurança e code-sign estavam de acordo, e não havia mais erro aps-entitlement.
Meu palpite aqui é que o XCode estava usando uma correspondência de estilo curinga no meu ID não curinga. ("spolsky" é, afinal, quase "spolsky-ios"), e isso explica a saída "Corresponde atualmente". Mas algo na cadeia de construção é mais estrito sobre isso, então ele volta para um ID curinga real durante a construção.
fonte
O problema ocorre 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 para limpar o erro.
fonte
Eu tive esse mesmo problema depois que as notificações push já estavam funcionando no meu dispositivo. Parece que o Xcode armazenou algo em cache incorretamente, então atualizá-lo corrigiu meu problema:
fonte
recebi este erro e não criei um novo perfil de provisionamento; criou um novo e teve que reiniciar o xCode, mas funciona agora!
fonte
Esteja ciente de que o identificador do pacote deve corresponder ao perfil de provisionamento de maneira sensível a maiúsculas e minúsculas . Eu tinha algo como com.FirstLast.appname quando deveria ser com.firstlast.appname. Bem, isso me manteve ocupado por um bom tempo.
fonte
Corrigi esse problema habilitando o recurso de notificação por push.
Selecione Projeto> Alvo> Capacidades> Ativar notificações push
fonte
Se esse problema aconteceu repentinamente após a atualização para o Xcode 8, você pode encontrar um aviso na tela de recursos que permitirá que você corrija isso automaticamente:
Selecione Projeto> Alvo> Capacidades> Ativar notificações push
fonte
Produto-> Clean fez isso por mim. Espero que isso aconteça para outra pessoa.
fonte
Eu encontrei isso em um caso de uso possivelmente não frequente. Estou trabalhando com o Xcode 6 e o iOS 8. Estava criando uma série de projetos de aplicativos totalmente novos e tentando reutilizar o mesmo ID de pacote, para não precisar passar por toda a configuração do portal novamente. Isso também era apenas para testes de sandbox.
Eu descobriria que, embora a configuração e o registro funcionassem bem para o primeiro aplicativo, se eu excluísse esse aplicativo do dispositivo, definisse o mesmo ID de pacote para o segundo aplicativo e tentasse registrar PNs com esse aplicativo, obteria esse erro.
Minha solução foi:
.mobileprovision
arquivo baixado para instalá-lo de volta no XcodeEssa abordagem parece perder qualquer estado anterior e posso me registrar para PNs com o novo aplicativo / mesmo ID de pacote.
fonte
Para quem obteve esse erro no ios 10, você pode tentar seguir as etapas:
1. Limpe seu projeto.
2.e marque Alvos -> Recursos -> Notificação push. Se estiver desativado, ative-o.
E o problema será resolvido. As etapas acima me ajudam a me livrar desse problema. Espero que seja útil para alguém.
fonte
Novo perfil de provisionamento funcionou para mim. Certifique-se de usar um perfil de desenvolvedor se estiver em desenvolvimento (não use Ad Hoc). Ficou bem depois disso, não faço ideia por que o antigo parou de funcionar direito.
fonte