Xcode 8 “o direito aps-environment está faltando na assinatura do aplicativo” no envio

118

Eu tenho um aplicativo para o qual enviamos dezenas de versões nos últimos 6 meses e usamos APNS. Recebi o seguinte e-mail da Apple após atualizar para o Xcode 8

Caro desenvolvedor,

Detetámos um ou mais problemas com a sua entrega recente de APP_NAME. Sua entrega foi bem-sucedida, mas você pode querer corrigir os seguintes problemas em sua próxima entrega:

Autorização de notificação por push ausente - Seu aplicativo inclui uma API para o serviço de notificação por push da Apple, mas a autorização do aps-environment está ausente na assinatura do aplicativo. Para resolver isso, certifique-se de que seu ID de aplicativo esteja habilitado para notificação push no Portal de provisionamento. Em seguida, assine seu aplicativo com um perfil de provisionamento de distribuição que inclui o direito aps-environment. Isso criará a assinatura correta e você poderá reenviar seu aplicativo. Consulte "Provisioning and Development" no Local and Push Notification Programming Guide para obter mais informações. Se o seu aplicativo não usa o serviço Apple Push Notification, nenhuma ação é necessária. Você pode remover a API de envios futuros para interromper este aviso. Se você usa uma estrutura de terceiros,

Depois de corrigir os problemas, você pode usar o Xcode ou o Application Loader para fazer upload de um novo binário para o iTunes Connect.

Saudações,

A equipe da App Store

O estranho é que fui para developer.apple.com -> Certificados, identificadores e perfis e meu AppId ainda tem notificações push ativadas. Não estou fazendo nada diferente do que já fiz, então estou curioso se a atualização do Xcode 8 quebrou alguma coisa. Alguma ideia?

BTW: o link que eles colocaram para o Guia de programação de notificação push foi quebrado no e-mail, então isso não é um bom sinal.

Unome
fonte

Respostas:

156

Muito fácil, na verdade. Por algum motivo, ele foi desativado no Xcode 8, mas vá para Targets -> Capabilities e verifique se as Notificações Push estão corretas nessa visualização. Para mim, tinha um "Fix Me" que tive de clicar e voila.

Unome
fonte
4
O estranho nesse problema não era a solução, era o fato de que no Xcode 7 isso estava habilitado e após a atualização foi desabilitado.
Unome
2
Eu também tive que ir para o arquivo de direitos e alterar o valor do Ambiente APS para 'produção' porque ele foi definido como 'desenvolvimento' por padrão quando criado.
Bek
61
Deve haver algum pessoal sem cérebro contratado recentemente na Apple .. Por que eles estão perdendo tempo dos desenvolvedores desabilitando coisas por padrão e configurando implicitamente valores inadequados sem qualquer aviso sobre isso. Perdi um dia na criação de perfis, certificados, depuração e outras coisas chatas ..
Hristo Atanasov
3
Finalmente! Isso é ridículo, tem sido tão difícil fazer funcionar. Estou removendo e recriando os certificados / perfis por quase 5 horas. O bom é que posso dizer que entendo perfeitamente o que são esses certs / profiles / identifiers agora :) Obrigado por essa dica.
Kamil Rykowski
4
@bek note que você provavelmente deve deixá-lo como desenvolvimento. Ele é alterado para produção automaticamente após o upload para o iTunes Connect.
Montdidier
84

Eu também tenho o mesmo problema e tenho certeza de que a notificação push está desativada por padrão no Xcode8. Eu não percebi. Tenha cuidado com isso.

capacidade

Bruce Tsai
fonte
Você pode me dizer por que não tenho seção de notificação push em minha conta?
Anuj
28

Houve uma mudança no Xcode 8, onde seus direitos não vêm mais dos identificadores de aplicativo, mas dos recursos selecionados no destino do seu aplicativo. Então, como Unome (o OP) disse, você deve verificar se as notificações push estão ativadas.

Para mim, não era um botão "Corrigir", mas eu tinha dois arquivos de direitos (um para desenvolvimento e outro para distribuição). Alternar o recurso de notificações por push adicionaria a aps-environmentchave - com o valor development- ao arquivo de direitos de desenvolvimento, mas não o adicionaria ao arquivo de direitos de distribuição. Copiar a mesma chave para a distribuição funcionou para se livrar do e-mail de aviso ao fazer upload para o iTunes Connect.

Para a maioria dos projetos, deve ser suficiente ativar as notificações push ou, se já estiverem ativadas, mas a chave não estiver nos direitos, tente ativá-las novamente.

Timgcarlson
fonte
Este é o barco em que estou, exceto que não importa o que eu especifique no meu .entitlementsarquivo para a configuração / esquema atual, ele sempre usa productioncomo o aps-environment.
Albert Bori
alternar Notificação push em Capacidades trava meu Xcode 8 !!
djay
2
@AlbertBori Estranho, só consegui fazer com que mostrasse o desenvolvimento, o que foi bom porque quando foi arquivado, parecia production.
timgcarlson
6
@meteors Deve estar correto se o valor for development. Será alterado no ipa quando o projeto for arquivado.
timgcarlson
2
@timgcarlson Isso realmente não acontece durante o arquivamento. Isso acontece durante o envio ou quando exportado. Além disso, algumas informações úteis para verificar se estão definidas corretamente aqui: developer.apple.com/library/content/qa/qa1798/_index.html
Mark Leonard
27

Das notas de lançamento do Xcode :

O Xcode 8 não copia automaticamente o direito aps-environment dos perfis de provisionamento no momento da construção. Esse comportamento é intencional. Para usar este direito, habilite as Notificações Push no painel de Capacidades do editor do projeto ou adicione manualmente o direito ao seu arquivo de direitos. (28076333)

Esta é uma grande mudança, pois sempre foi bastante estranho que o direito aps-environment não exigisse o plist, mas muitos outros exigiam.

Para aqueles de vocês que não querem apenas pressionar cegamente "Corrigir" e não têm atualmente um arquivo de direitos, é apenas um arquivo plist que é referenciado nas Configurações de construção do seu projeto em "Direitos de assinatura de código"

Mattyohe
fonte
1
Não consegui encontrar essa citação nas notas vinculadas!
Iulian Onofrei
Não sei quem votou a favor do meu comentário e o que estava errado, mas também posso encontrar agora.
Iulian Onofrei
13

Depois de um dia de luta com o Xcode 8, não conseguimos descobrir porque o aps-environmentdesenvolvimento NÃO foi adicionado às nossas compilações de depuração. Ele estava faltando na seção de direitos no aplicativo construído para teste de depuração ... embora tivéssemos ATIVADO o novo recurso e o arquivo de direitos existisse. O problema é que o arquivo de direitos precisa ser definido para QUALQUER SDK nas configurações de compilação do Xcode para direitos de depuração.

captura de tela

James L Harris
fonte
Não acho que haja qualquer diferença entre definir um valor para a Debugchave e defini-lo para o Debug> Any SDK, já que o último é usado para substituir o valor de um SDK específico.
Iulian Onofrei
Esta é a solução para mim
Himanth
Depois de lutar com isso a manhã toda, esse era o meu problema também. Alternar recursos, gerar perfis de provisionamento, nada funcionou. Isso fez.
Dave S de
esta ainda é uma solução válida em alguns casos no Xcode 8.3.3
dan
Eu gostaria de poder votar isso um milhão de vezes. Estou lutando há uma semana e essa foi a solução. Apenas digitar o caminho do arquivo nos Direitos de assinatura de código no topo não era suficiente, tinha que ser feito na parte "Qualquer SDK" também. Essa foi a chave para resolver isso para mim.
Robert Bentley
7

Recebi o mesmo e-mail da Apple usando o XCode 7.3.1. O que fiz para resolver o problema foi:

  1. Em Capacidades> Definir notificação PUSH LIGADA, conforme indicado na resposta @Bruce Tsai.
  2. Em Build-Settings> Code Signing> Code Signing Identity, defina o certificado de desenvolvedor para depuração e o certificado de distribuição para lançamento, conforme mostrado na imagem:

insira a descrição da imagem aqui insira a descrição da imagem aqui

Ruben
fonte
Olá, Em recursos, não estou recebendo recursos> Definir notificação PUSH
Anuj
@Anuj, adicionei um screenshoot onde deveria estar em seu Xcode.
Ruben
5

Se você estiver usando estruturas do Firebase e não estiver usando notificações push, existem duas soluções: 1. apenas aceite a mensagem de 'problema' que é enviada para toda a sua equipe sempre que enviar um binário. O aplicativo ainda será aceito como um envio, desde que você não esteja realmente usando notificações, você pode ignorar o aviso. ou 2. faça isso: https://stackoverflow.com/a/46802075/7529450 . Isso removerá a irritante notificação por e-mail e também será aceito como um envio.

Aaron Halvorsen
fonte
4

Gerenciar automaticamente a assinatura estava desativado para mim

Gerenciar automaticamente a assinatura estava desativada para mim, verifiquei e está funcionando bem para mim.

Shemeer M Ali
fonte
3

O uso de notificações push do Xcode 9 foi ativado.

Tentei desativar / reativar os recursos de notificação por push . (não funcionou)

Tentei desativar / reativar Gerenciar assinatura automaticamente . (não funcionou)

Acontece que tive que excluir e adicionar novamente meus perfis de provisionamento. ( veja aqui como fazê-lo ) Você pode ter que desabilitar / reabilitar Gerenciar automaticamente a assinatura após wards.

Aldracor
fonte
2

Para mim, o problema era porque havia dois arquivos de direitos: Entitlements-Debug.plisteEntitlements-Release.plist . E apenas um deles (Debug) tem configurações necessárias nele.

Alterar vários valores de Configurações de compilação> Assinatura> Direitos de assinatura de código para um único MyAppName/MyAppName.entitlementse, em seguida, reativar recursos> Notificações push alternador de funcionou para mim.

Espero que ajude.

Alexander Zinchuk
fonte
0

Mais uma opção que funcionou: copiar e colar a origem do AppName/Entitlements-Debug.plistem AppName/Entitlements-Release.plist.

Alexander Zinchuk
fonte