web-dev-qa-db-fra.com

Xcode 8 "le droit aps-environment est absent de la signature de l'application" lors de l'envoi

J'ai une application à laquelle nous avons soumis des dizaines de versions au cours des 6 derniers mois et nous utilisons APNS. J'ai reçu le courrier électronique suivant d'Apple après la mise à niveau vers Xcode 8

Cher développeur,

Nous avons découvert un ou plusieurs problèmes liés à votre livraison récente pour NOM DE L'APPLICATION. Votre livraison a été réussi, mais vous voudrez peut-être corriger les problèmes suivants dans votre prochaine livraison:

Droits de notification push manquants - Votre application comprend une API pour Le service de notification push d'Apple, mais le droit aps-environment est manquant dans la signature de l'application. Pour résoudre ce problème, assurez-vous que votre L'application ID est activée pour la notification Push dans le portail de provisionnement . Ensuite, signez votre application avec un profil de provisionnement de distribution qui inclut le droit aps-environment. Cela créera le correct signature, et vous pouvez resoumettre votre application. Voir "Provisioning and Development" dans le Guide de programmation des notifications locales et push pour Plus d'information. Si votre application n'utilise pas la notification Apple Push Notification service, aucune action n'est requise. Vous pouvez supprimer l'API de la future soumissions pour arrêter cet avertissement. Si vous utilisez un framework tiers, vous devrez peut-être contacter le développeur pour plus d'informations sur la suppression du fichier API.

Une fois les problèmes corrigés, vous pouvez utiliser Xcode ou Application Loader pour télécharger un nouveau fichier binaire vers iTunes Connect.

Cordialement,

L'équipe de l'App Store

Ce qui est bizarre, c’est que je suis allé sur developer.Apple.com -> Certificats, identifiants et profils et que mon identifiant d’application dispose des notifications push activées. Je ne fais rien de différent, alors je suis curieux de savoir si la mise à jour de Xcode 8 a cassé quelque chose. Des idées? 

BTW: Le lien qu'ils ont mis pour le Guide de programmation des notifications Push était cassé dans le courrier électronique, donc ce n'est pas un bon signe.

110
Unome

Très facile en fait. Pour une raison quelconque, il a été désactivé sur Xcode 8 mais allez à Cibles -> Fonctionnalités et vérifiez que les notifications Push sont correctes dans cette vue. Pour moi, il y avait un "Fix Me" je devais cliquer, et le tour est joué. 

142
Unome

J'ai également le même problème et je suis sûr que la notification Push est désactivée par défaut dans Xcode8. Je ne l'ai pas remarqué. Faites attention à ce sujet.

 capability

78
Bruce Tsai

Depuis le Xcode notes de publication :

Xcode 8 ne copie pas automatiquement le droit d'utilisation d'environnement aps à partir des profils d'approvisionnement au moment de la construction. Ce comportement est intentionnel. Pour utiliser ce droit, activez les notifications Push dans le volet Capabilities de l’éditeur de projet ou ajoutez manuellement le droit à votre fichier de droits. (28076333)

C'est un grand changement car il était toujours assez étrange que le droit d'accès environnement-dp n'exige pas le plist, mais beaucoup d'autres l'ont fait.

Pour ceux d'entre vous qui ne veulent pas simplement appuyer aveuglément sur "Fix Me" et ne disposent pas actuellement d'un fichier de droits, il s'agit simplement d'un fichier de liste de plist référencé dans les paramètres de construction de votre projet sous "Droits de signature de code"

27
mattyohe

Il y a eu un changement dans Xcode 8, où vos droits ne proviennent plus des identifiants d'application, mais des fonctionnalités sélectionnées dans votre cible d'application. Donc, comme dit Unome (l'OP), vous devez vérifier que les notifications push sont activées. 

Pour moi, ce n'était pas un bouton "Fix Me", mais j'avais deux fichiers de droits (un pour le développement et un pour la distribution). Le basculement de la fonctionnalité de notifications push ajouterait la clé aps-environment - avec la valeur development - au fichier des droits au développement, mais ne l'ajouterait pas au fichier des droits à la distribution. La copie de la même clé vers la distribution a permis d'éliminer le courrier électronique d'avertissement lors du téléchargement vers iTunes Connect.

Pour la plupart des projets, il devrait suffire d'activer les notifications Push ou, si elles sont déjà activées mais que la clé ne figure pas dans les droits, essayez de l'activer ou de la réactiver.

27
timgcarlson

Après une journée de lutte avec Xcode 8, nous ne pouvions pas comprendre pourquoi le développement de aps-environment n'était PAS ajouté à nos versions de débogage. Il manquait dans la section Droits d'accès de l'application construite pour les tests de débogage ... même si nous avions activé la nouvelle fonctionnalité et que le fichier de droits d'accès existait. Le problème est que le fichier de droits d'accès doit être défini pour TOUT SDK dans les paramètres de construction Xcode pour les droits de débogage.

 screenshot

12
James L Harris

J'ai reçu le même courrier électronique d'Apple utilisant XCode 7.3.1. Ce que j'ai fait pour résoudre le problème était:

  1. Sous Capacités> Activer la notification Push, comme indiqué dans la réponse de @Bruce Tsai.
  2. Sous Build-Settings> Code Signing> Code Signing Identity, définissez le certificat de développeur pour le débogage et le certificat de distribution pour l'édition, comme indiqué dans l'image:

 enter image description here  enter image description here

6
Ruben

Si vous utilisez des infrastructures Firebase et que vous n'utilisez pas les notifications Push, il existe deux solutions: 1. Il vous suffit de vous contenter du message 'issue' envoyé à l'ensemble de votre équipe à chaque téléchargement d'un fichier binaire. L'application sera toujours acceptée en tant que soumission tant que vous n'utilisez pas de notifications, vous pouvez ignorer l'avertissement. ou 2. procédez comme suit: https://stackoverflow.com/a/46802075/7529450 . Cela supprimera la notification par e-mail ennuyeuse et sera également accepté en tant que soumission.

5
Aaron Halvorsen

 Automatically manage signing was off for me

Gérer automatiquement la signature a été désactivée pour moi, j'ai vérifié et fonctionne bien pour moi.

4
Shemeer M Ali

L'utilisation de Xcode 9 Push Notifications a été activée.

J'ai essayé de désactiver/réactiver les fonctionnalités de Push Notification. (n'a pas fonctionné)

J'ai essayé de désactiver/réactiver Gérer automatiquement la signature. (n'a pas fonctionné)

Il s'est avéré que je devais supprimer et rajouter mes profils d'approvisionnement. ( Voir ici comment faire ) Vous devrez peut-être désactiver/réactiver gérer automatiquement la signature après la suppression.

4
Aldracor

Pour moi, le problème était dû au fait qu'il y avait deux fichiers de droits d'accès: Entitlements-Debug.plist et Entitlements-Release.plist. Et un seul d'entre eux (Debug) a besoin de paramètres.

Modification de la valeur multiple de Paramètres de construction> Signature> Droits de signature de code en un MyAppName/MyAppName.entitlements unique, puis la réactivation de Capacités> Notifications push Le commutateur a fonctionné pour moi.

J'espère que ça aide.

2
Alexander Zinchuk

Une autre option qui a fonctionné: copier-coller la source de AppName/Entitlements-Debug.plist dans AppName/Entitlements-Release.plist.

0
Alexander Zinchuk