Direito de notificação por push ausente

126

Eu tenho um aplicativo para envio quando ele foi rejeitado e recebi a mensagem

Direito de notificação por push ausente - Seu aplicativo parece registrar-se no serviço Apple Push Notification, mas os direitos da assinatura do aplicativo não incluem o direito "aps-environment". Se seu aplicativo usar o serviço Apple Push Notification, verifique se o ID do aplicativo está ativado para Push Notification no Portal de provisionamento e reenvie após assinar seu aplicativo com um perfil de provisionamento de distribuição que inclua o direito "aps-environment".

Eu verifiquei meu aprovisionamento ad-hoc e lá encontrei o ambiente e a produção de APs, no entanto, quando abro meu aprovisionamento de distribuição, não encontro esse.

É essa a causa dessa mensagem de erro e rejeição da maçã, como posso corrigi-la?

mirageservo
fonte

Respostas:

80

Sim, essa é a causa da rejeição da App Store. Se o seu perfil de provisionamento ad-hoc tiver a chave aps-environment, significa que o aplicativo está configurado corretamente no Apple Provisioning Portal. Tudo o que você precisa fazer é excluir o perfil de distribuição da App Store em sua máquina local e, em seguida, baixar novamente e instalar o perfil de distribuição no Portal de provisionamento. Este novo deve conter a chave aps-environment.

tom
fonte
Só para esclarecer um pouco mais de neblina, isso afirma que o "perfil de distribuição DEVE ter o ambiente aps, etc.", e que quando eu abrir o provisionamento em um editor de texto, eu o encontrarei lá ...
mirageservo
preciso gerar um novo certificado SSL, especialmente quando mudei algo do meu perfil de distribuição?
mirageservo
2
Não, não há necessidade de um novo certificado de desenvolvedor. Quando você ativou a distribuição para notificações push (o que você deve ter feito em algum momento porque seu perfil ad hoc possui a chave aps-environment), o iTunes Provisioning Portal gera um novo perfil de distribuição da loja de aplicativos que contém a chave aps-environment. Você provavelmente acabou de baixar e instalar o mais recente.
tom
mais uma coisa antes que essa pergunta chegue à galáxia, preciso recompilar (arquivar novamente) o ipa, pois haveria uma alteração nas configurações de criação do projeto ou posso distribuir o aplicativo diretamente sem incomodar uma recompilação?
mirageservo
Você precisa arquivar novamente. O perfil de provisionamento associado ao aplicativo é incorporado ao .ipa.
tom
43

Primeiro ID do aplicativo

certifique-se de que sua notificação por push de ID seja ativada no lado da produção

como aparecem na imagem

insira a descrição da imagem aqui

Segundo certificado

da seção de produção, crie dois certificados com seu ID (notificação por push ativada)

App Store e certificado Ad Hoc

Certificado SSL (Sandbox) do serviço de notificação por push da Apple

insira a descrição da imagem aqui

Terceiros perfis de provisionamento

Na seção Distribuição, crie um perfil da App Store com seu ID

Finalmente

enquanto você carrega sua lixeira, deve verificar qual perfil de provisionamento usado e tem muitos direitos

insira a descrição da imagem aqui

isso todos os casos causam esse problema espero que isso seja útil com você

Mina Fawzy
fonte
1
Isso é o que eu estava perdendo. Eu tive que criar um novo perfil de provisionamento no site do desenvolvedor da apple usando o ID do aplicativo com notificações por push. Com o novo perfil de provisionamento, finalmente o direito aps-environment foi adicionado ao meu aplicativo. Obrigado!
M. Luisa Carrión
38

No XCode 8, você precisa ativar o push na guia Capacidades do seu destino, além de ativar tudo o que está relacionado às provisões e certificados: Xcode 8 "o direito do ambiente aps está ausente na assinatura do aplicativo" ao enviar

Meu post sobre isso aqui .

Vaiden
fonte
8
Esta é a Apple tão clássica. Duas horas depois de enviar uma compilação, eles enviam uma mensagem de erro sobre um problema que eu resolvi há muito tempo (ativando o Serviço de Aplicativo de Notificação por Push no Portal de Desenvolvimento) e é explicado com um link para um 404. Depois, verifica-se que o verdadeiro O problema é que eles não migraram minhas configurações ao atualizar para uma nova versão do software (na qual estou bloqueado). Ugh.
Rembrandt P. Einstein
3
A mesma história aqui. Quase descartamos a mensagem de erro como um bug da Apple.
Vaiden
23

Recebi esta mensagem por um motivo diferente - enviei um aplicativo via Xcode sem antes criar um perfil de distribuição da App Store especificamente para o aplicativo. Acredito que o Xcode use automaticamente um perfil curinga da App Store se você tiver um instalado. Mas um aplicativo usa o Push Notifications requer seu próprio perfil.

A correção é criar um novo perfil de distribuição da App Store para o aplicativo. Em seguida, faça o download, arraste-o para o Xcode e modifique seu projeto Build Settings> Code Signing> Release para usar o novo perfil.

Simon Woodside
fonte
11

Seguindo a resposta dada por @Vaiden, no Xcode 8, você pode resolver esse problema selecionando o destino e clicando em "Corrigir problema". Obviamente, você ainda precisará configurar notificações por push no portal do desenvolvedor da Apple (você pode simplificar um pouco o processo usando a nova opção "Gerenciar assinatura automaticamente", o que poupa o trabalho de baixar os perfis de provisionamento).

Fix me option

Ian
fonte
8

Para aqueles que estão enfrentando esse problema que realmente estão usando o Push Notifications em seus aplicativos:

Recentemente, como nossos certificados estavam prestes a expirar, criamos novos certificados de dev / prod da maneira padrão descrita pela Apple (não entrarei em detalhes aqui, há muitas informações em toda a web ao atualizar seus certificados por mais um ano de uso).

Depois de fazer isso, no entanto, o problema nesta pergunta apareceu. Não importa o que fizemos, recebemos este e-mail da Apple após o envio do aplicativo. Quando verificamos as configurações do nosso Perfil de provisionamento de distribuição no Apple Member Center, tudo parecia bem (o Push foi ativado para o nosso App ID para ambos prod / dev, e nosso perfil de provisionamento de distribuição ainda estava conectado a esse App ID, literalmente acabamos de criar novos certificados por mais um ano, como é a prática padrão).

Finalmente, foi isso que acabou resolvendo para mim:

  1. Crie um novo perfil de provisionamento de distribuição apontando para o seu ID do aplicativo (deixe o atual atual no tato)
  2. No Xcode, atualize seus perfis de aprovisionamento em Configurações> Contas> Selecione sua conta> Detalhes> Clique no ícone de atualização
  3. Crie manualmente um arquivo plist de direitos para o seu aplicativo:
    • Menu Arquivo> Novo arquivo ...
    • Selecione iOS> Recurso> Lista de propriedades
    • Nomeie o novo arquivo "foo.entitlements" (normalmente "foo" é o nome do destino)
    • Clique no (+) ao lado de "Arquivo de direitos" para adicionar um item de nível superior (o editor da lista de propriedades utilizará o esquema correto devido à extensão do arquivo)
  4. Verifique se esse arquivo de direitos está sendo usado nas Configurações de compilação do seu destino (Destino> Configurações de compilação> Procurar "Direitos", em CODE_SIGN_ENTITLEMENTS defina o caminho para o arquivo de direitos que você acabou de criar)
  5. Verifique se o perfil de provisionamento / identidade de assinatura de código no seu Target está definido corretamente com o perfil de provisionamento de distribuição / identidade de assinatura apropriado (isso deve ser óbvio)
  6. Não tenho 100% de certeza se isso afetou (não deve, pois as configurações do Target substituem as configurações do projeto, mas fiz isso de qualquer maneira), verifique se o perfil de provisionamento / identidade de assinatura do seu projeto corresponde ao seu
  7. No arquivo de direitos que você criou, clique com o botão direito do mouse no arquivo vazio e selecione "Mostrar chaves / valores brutos"
  8. Adicione uma nova entrada ao arquivo de autorizações chamada "aps-environment" e defina seu valor como "produção"
  9. Uma observação importante: se você já estava usando o direito de acesso a grupos de chaves, também deve adicionar essa chave aqui porque, por algum motivo, ela foi liberada para mim ao fazer isso manualmente. Verifique se o valor é o mesmo que o usado nas versões anteriores (você pode encontrá-lo localizando uma versão anterior no Organizer, tentando enviar para a loja de aplicativos, selecionar sua equipe e, antes de enviar o aplicativo, toque na seta ao lado de Sequência "(X) Titular" para expandir os titulares e ver o valor da titulação do grupo de acesso ao chaveiro.
  10. Arquive seu aplicativo e tente enviá-lo ao ponto de chegar ao botão "Enviar" final. Você deve ver que este aplicativo foi criado com o novo perfil de aprovisionamento que você criou no centro membro. Cancele isso agora.
  11. Volte para o centro de membros da Apple e exclua o novo perfil de provisionamento que você criou na etapa 1.
  12. De volta ao Xcode, atualize sua lista de perfis de provisionamento novamente repetindo a etapa 2.
  13. Agora arquive seu aplicativo novamente e você deverá ver que o aplicativo foi criado com o antigo perfil de provisionamento de Distribuição que você deseja usar e possui corretamente o direito aps-environment. Envie e pronto.

Eu sei que isso não é tão detalhado quanto deveria, e deve ter capturas de tela. Tentarei atualizá-lo com capturas de tela quando puder, mas, por enquanto, estou em uma crise de tempo no momento e queria ter a oportunidade de o que eu fiz lá fora. Também há uma chance muito provável de que algumas ou a maioria das etapas que descrevi não sejam necessárias, estou colocando-as aqui porque as fiz e elas podem ter levado à solução final.

Adam Eisfeld
fonte
Obrigado. O item 8 para mim foi definido para desenvolvimento, o que poderia ser nosso problema.
ingage
Muito obrigado, desperdicei um dia inteiro com essa merda, a etapa 4 foi o problema. Por algum motivo, sem especificar CODE_SIGN_ENTITLEMENTS, os direitos foram ignorados apenas no upload da loja de aplicativos.
precisa saber é o seguinte
5

verifique se o ID do seu aplicativo está ativado por push ou não no developer.apple.com no iOS Provisioning Portal. Se não estiver ativado, configure o seu certificado SSL Push para o seu ID do aplicativo Faça o download e reinstale em seu chaveiro novamente. no seu Xcode Liabrary

Vishal's p
fonte
4

Eu também estava enfrentando esse problema, mesmo que não estivesse usando notificações por push no meu aplicativo. Criar um novo perfil de provisionamento também não funcionou para mim.

1.Crie um novo certificado novo apenas para a Ad hoc & App Store.

2.Em seguida, faça o perfil de distribuição com este certificado e integre o perfil ao Xcode.

A construção recém-enviada com este perfil é aprovada sem nenhum aviso.

Rosa do Deserto
fonte
2
Eu tentei isso - não ajudou. ainda estou recebendo a coisa de notificações push ausentes .. eu não uso notificações push!
Adam
2

No meu caso, até eu criei um myapp.profile e o configurei manualmente no xcode, e quando escolhi "show in finder" e localizei o embedded.mobileprovision e verifiquei se o aps-environment está lá no arquivo, o erro foi ainda lá.

Fui ao desenvolvedor center e constatei que o status do XC: myapp.profile é inválido. Atualizei e instalei o XC: myapp.profile e funcionou bem.

Acho que o xcode está tentando gerenciar o perfil e você precisa verificar o perfil de provisionamento ao enviar seu binário para armazenar e garantir que ele seja o correto. E, de acordo com outras respostas, isso pode ser causado por várias razões, por isso pode ser realmente irritante.

ATUALIZAR:

Depois de assinar com o perfil baixado e confirmar que aps-environmentexistia quando você tenta enviar para App Store, poderá alterar o perfil e a entidade de assinatura de código para automático e iOS Developer. Espero que possa ser melhorado no Xcode 7.

superarts.org
fonte
Eu verifiquei todos os perfis e também o XC: profile é atualizado e não inclui nenhuma chave asp-environment. Ainda assim, tenho o mesmo problema repetidamente. Qualquer ajuda será apreciada. E sim, eu não preciso de qualquer notificação push implementado no aplicativo
O iOSDev
Você pode verificar o conteúdo binário do perfil de provisionamento e ver se a cadeia "aps-environment" está dentro ou não, por favor? Se estiver dentro, você precisará encontrar uma maneira de se livrar dele, caso contrário, precisará garantir que o perfil seja com o qual você está assinando seu aplicativo. De qualquer maneira, tem que haver um problema.
superarts.org
1
Eu o verifiquei duas vezes e tento descobrir mais, mas sem sorte. Não existe uma string como essa, mas após dois dias de pesquisa e tentativas, entendi que esse problema está no Xcode 7 beta, não no meu código :) A mesma versão do Xcode 6.4 está funcionando perfeitamente e não há e-mail da Apple informando que problema, então o problema está no Xcode 7 beta 4 e não no código ou perfil.
O iOSDev
2

Foi isso que o corrigiu para mim. (Eu já havia tentado ativar / desativar os recursos, recriar o perfil de provisionamento etc.).

Na guia Configurações de compilação , em Autorizações de assinatura de código , meu arquivo .entitlements não estava vinculado a todas as seções. Depois de adicioná-lo à seção Qualquer SDK, o erro foi resolvido.

insira a descrição da imagem aqui

mogile_oli
fonte
2

Para resolver isso em um aplicativo de ejeção de expo, fui à guia de recursos, habilitei o push e desabilitei novamente. Isso removeu a configuração de 'direitos' do APNS do arquivo .entitlements.

Chris
fonte
tentei isso no meu projeto "ejetado", mas ainda estou recebendo essas notificações
webdevbyjoss
1

Eu tive o mesmo problema e minha solução foi adicionar o direito de notificação por push de Destino -> Recursos.

Shalom Dahan
fonte
0

Isso aconteceu comigo de repente porque o perfil de distribuição do meu aplicativo expirou. O Xcode começou a usar o perfil curinga, que não tinha o direito de notificação por push ativado. Não recebi nenhum aviso. A correção foi fácil; Eu apenas tive que gerar outro perfil de distribuição para o meu aplicativo no Apple Developer Member Center, baixá-lo e clicar duas vezes para instalar no Xcode.

ahmacleod
fonte
0

Existem algumas sugestões muito boas aqui.

Referindo-se à última captura de tela que Mina forneceu, depois de arquivar meu aplicativo inicialmente, o perfil de provisionamento mencionado durante o upload continha um curinga (XC. *). Isto está errado.

Foi necessário um esforço considerável para resolver isso. Eu tive que fazer uma combinação das sugestões que Simon Woodside e Mina Fawzy forneceram.

Se você possui certificados e perfis de provisionamento existentes relacionados ao seu projeto, agora é um bom momento para removê-los todos localmente e revogá-los remotamente. Dê a si mesmo um novo começo.

A sugestão detalhada de Mina Fawzy é excelente. A sugestão de Mina, se realizada corretamente, deve cuidar de você online.

Digite a sugestão de Simon. Precisava verificar duas coisas dentro do meu projeto. Usando o XCode, acesse aqui:

PROJETO -> CONFIGURAÇÕES DE CONSTRUÇÃO -> ASSINATURA DE CÓDIGO

Revise o perfil de identidade e provisionamento de assinatura de código propriedades . Certifique-se de definir essas duas propriedades para o nome do seu projeto. Não permita que o XCode selecione automaticamente para você e não use alguma identidade genérica de assinatura de código (por exemplo, Iphone Developer).

Certifique-se de instalar o aplicativo nos seus dispositivos antes de decidir arquivar.

Coach Roebuck
fonte
0

O maior problema que tenho depois de habilitar a Push Notificationpartir Capabilitiese refazer todos os certificados é que o nome do destino e o nome da pasta onde foi armazenado o projeto foram compostos de 2 cadeias separadas por espaço. Depois de remover o espaço, tudo funcionou bem!

Constantin Saulenco
fonte
1
Meu aplicativo não está usando notificação por push, mas ainda recebo esse aviso da apple. Por favor, sugira
Chandni
0

Eu tive esse problema porque meu arquivo de direitos estava incorreto devido à edição manual anterior. Eu removi a sintaxe da entrada de direito formatado incorretamente e, em seguida, clique em "corrigir" na guia recursos, e o Xcode adicionou o direito ao meu arquivo.

Aqui está um exemplo de um arquivo de direitos formatado corretamente (" Runner.entitlements"):

<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>aps-environment</key>
    <string>development</string>
    <key>com.apple.developer.applesignin</key>
    <array>
        <string>Default</string>
    </array>
</dict>
</plist>
Jonas357
fonte
0

CORREÇÃO DE IDÉIA Ei pessoal, então eu fiz um aplicativo e não usei nenhuma função de notificação por push, mas ainda recebi um e-mail. Depois de verificar os certificados, IDs e perfis do identificador de pacote que usei para criar meu aplicativo na Apple Store, conecte-se ao portal do desenvolvedor da Apple e percebi que as notificações por push estavam ativadas.

O que você precisa fazer é:

vá para o site de login para desenvolvedores da apple, onde você pode gerenciar seus certificados também 2. selecione a guia "Certificados, IDs e perfis" no lado direito 3. agora selecione "Identificadores" 4. e o ID do pacote da lista à direita 5. agora role para baixo até ver a notificação por push 6. desligue-o 7. arquive sua compilação e reenvie-a para a Apple Store Connect

Espero que ajude!

Qooplite
fonte