Xcode 8 «le droit d'accès à l'environnement aps est absent de la signature de l'application» lors de la soumission

118

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 l'e-mail suivant d'Apple après la mise à niveau vers Xcode 8

Cher développeur,

Nous avons découvert un ou plusieurs problèmes avec votre récente diffusion pour APP_NAME. Votre livraison a réussi, mais vous souhaiterez peut-être corriger les problèmes suivants lors de votre prochaine livraison:

Droit de notification push manquant - Votre application comprend une API pour le service de notification push d'Apple, mais le droit aps-environnement est absent de la signature de l'application. Pour résoudre ce problème, assurez-vous que votre ID d'application est activé pour la notification push dans le portail de provisioning. Ensuite, signez votre application avec un profil de provisionnement de distribution qui inclut le droit aps-environment. Cela créera la signature correcte et vous pourrez soumettre à nouveau votre application. Voir «Provisioning and Development» dans le Guide de programmation des notifications locales et push pour plus d'informations. Si votre application n'utilise pas le service Apple Push Notification, aucune action n'est requise. Vous pouvez supprimer l'API des futures soumissions pour arrêter cet avertissement. Si vous utilisez un framework tiers,

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

Cordialement,

L'équipe App Store

Ce qui est étrange, c'est que je suis allé sur developer.apple.com -> Certificats, identificateurs et profils et mon AppId a toujours les notifications push activées. Je ne fais rien de différent de ce que j'ai déjà fait, alors je suis curieux de savoir si la mise à jour 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 rompu dans l'e-mail, ce n'est donc pas un bon signe.

Unome
la source

Réponses:

156

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

Unome
la source
4
La chose étrange à propos de ce problème n'était pas la solution, c'était le fait que sur Xcode 7, cela était activé et qu'après la mise à niveau, il était désactivé.
Unome
2
J'ai également dû aller dans le fichier des droits et changer la valeur de l'environnement APS en «production» car elle était définie sur «développement» par défaut lors de sa création.
Bek
61
Il doit y avoir des gens sans cervelle embauchés récemment chez Apple. Pourquoi perdent-ils du temps aux développeurs en désactivant les choses par défaut et en définissant implicitement des valeurs inappropriées sans aucun avertissement à ce sujet. J'ai perdu un jour dans la création de profils, de certificats, de débogage et d'autres choses ennuyeuses ..
Hristo Atanasov
3
Finalement! C'est ridicule, il a été si difficile de le faire fonctionner. J'ai supprimé et recréé les certificats / profils pendant près de 5 heures. La bonne chose est que je peux dire que je comprends parfaitement ce que sont ces certificats / profils / identificateurs maintenant :) Merci pour cet indice.
Kamil Rykowski
4
@bek notez que vous devriez probablement le laisser en développement. Il passe automatiquement en production lors du téléchargement sur iTunes Connect.
Montdidier
84

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é. Soyez prudent à ce sujet.

aptitude

Bruce Tsai
la source
Pouvez-vous me dire pourquoi je n'ai pas de section de notification push dans mon compte?
Anuj
28

Il y a eu un changement dans Xcode 8, où vos droits ne proviennent plus des identificateurs d'application, mais des fonctionnalités sélectionnées dans votre cible d'application. Ainsi, comme Unome (l'OP) l'a dit, 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). Activer la fonctionnalité Notifications push ajouterait la aps-environmentclé - avec la valeur development- au fichier des droits de développement, mais cela ne l'ajouterait pas au fichier des droits de distribution. La copie de la même clé dans la distribution a permis de supprimer l'e-mail d'avertissement lors du téléchargement sur iTunes Connect.

Pour la plupart des projets, il devrait être suffisant d'activer les notifications push, ou si elle est déjà activée mais que la clé ne figure pas dans les droits, essayez de la désactiver puis de la réactiver.

Timgcarlson
la source
C'est le bateau dans lequel je suis, sauf que peu importe ce que je spécifie dans mon .entitlementsfichier pour la configuration / le schéma actuel, il l'utilise toujours productioncomme aps-environment.
Albert Bori
le basculement de la notification push dans Capabilities plante mon Xcode 8 !!
djay
2
@AlbertBori Bizarre, je ne pouvais l'obtenir que pour montrer le développement, ce qui était bien parce que lorsqu'il était archivé, il ressemblait à production.
timgcarlson
6
@meteors Cela devrait être correct si la valeur est development. Il sera modifié dans l'ipa lorsque le projet sera archivé.
timgcarlson
2
@timgcarlson Cela ne se produit pas pendant l'archivage. Cela se produit lors de la soumission ou lors de l'exportation. Aussi quelques informations utiles pour vérifier qu'il est correctement défini ici: developer.apple.com/library/content/qa/qa1798/_index.html
Mark Leonard
27

À partir des notes de version de Xcode :

Xcode 8 ne copie pas automatiquement le droit aps-environment à 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 Capacités 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 aps-environment ne nécessite 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 qui n'ont pas actuellement de fichier de droits, il s'agit simplement d'un fichier plist qui est référencé dans les paramètres de construction de votre projet sous "Droits de signature de code"

mattyohe
la source
1
Je n'ai pas trouvé cette citation dans les notes liées!
Iulian Onofrei
Je ne sais pas qui a voté pour mon commentaire et ce qui n'allait pas, mais je peux le trouver aussi maintenant.
Iulian Onofrei
13

Après une journée de lutte avec Xcode 8, nous n'avons pas pu comprendre pourquoi le aps-environmentdéveloppement n'a PAS été ajouté à nos versions de débogage. Il manquait dans la section des droits de l'application intégrée pour les tests de débogage ... même si nous avions ACTIVÉ la nouvelle capacité et le fichier des droits existait. Le problème est que le fichier de droits doit être défini pour TOUT SDK dans les paramètres de construction Xcode pour les droits de débogage.

capture d'écran

James L. Harris
la source
Je ne pense pas qu'il y ait de différence entre définir une valeur pour la Debugclé et la définir pour le Debug> Any SDKun, car ce dernier est utilisé pour remplacer la valeur d'un SDK particulier.
Iulian Onofrei
C'est la solution pour moi
Himanth
Après avoir lutté avec ça toute la matinée, c'était aussi le problème que j'avais. Basculer les capacités, générer des profils d'approvisionnement, rien de tout cela n'a fonctionné. Cela a fait.
Dave S
c'est toujours une solution valable dans certains cas sur Xcode 8.3.3
dan
J'aimerais pouvoir voter un million de fois. Je me bats depuis une semaine et c'était la solution. Il ne suffisait pas de taper simplement le chemin du fichier dans les droits de signature de code en haut, cela devait également être fait dans la partie "Any SDK". C'était la clé pour le résoudre pour moi.
Robert Bentley
7

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

  1. Sous Capabilities> Activez la notification PUSH comme indiqué dans la réponse @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 la publication, comme indiqué dans l'image:

entrez la description de l'image ici entrez la description de l'image ici

Ruben
la source
Bonjour, Dans Capabilities, je ne reçois pas de capacités> Définir la notification PUSH
Anuj
@Anuj, j'ai ajouté une capture d'écran là où elle devrait être dans votre Xcode.
Ruben
5

Si vous utilisez des frameworks Firebase et que vous n'utilisez pas de notifications push, il existe deux solutions 1. Il suffit de mettre en place le message «problème» qui est envoyé à toute votre équipe à chaque fois que vous téléchargez un binaire. L'application sera toujours acceptée en tant que soumission tant que vous n'utilisez pas réellement 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ée en tant que soumission.

Aaron Halvorsen
la source
4

La gestion automatique de la signature était désactivée pour moi

La gestion automatique de la signature était désactivée pour moi, j'ai vérifié et fonctionne bien pour moi.

Shemeer M Ali
la source
3

L'utilisation des notifications push Xcode 9 a été activée.

J'ai essayé de désactiver / réactiver les capacités de notification push . (n'a pas fonctionné)

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

Il s'avère que j'ai dû 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 les salles.

Aldracor
la source
2

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

Changer la valeur multiple de Paramètres de construction> Signature> Droits de signature de code en un seul MyAppName/MyAppName.entitlements, puis réactiver Capabilities> Push Notifications Switcher a fait l'affaire pour moi.

J'espère que ça aide.

Alexander Zinchuk
la source
0

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

Alexander Zinchuk
la source