web-dev-qa-db-fra.com

Droits d'accès à la notification push manquants

J'ai une application à soumettre quand elle a été rejetée et que j'ai reçu le message

Titre de notification push manquant - Votre application semble s'inscrire avec le service de notification Apple Push, mais la signature de l'application les droits ne comprennent pas le droit "environnement-aps". Si ton app utilise le service de notification Apple Push, assurez-vous que votre identifiant d'application est activé pour la notification push dans le portail de provisioning et le soumettre à nouveau après avoir signé votre application avec un profil de provisionnement de distribution qui inclut le droit "aps-environment".

J'ai vérifié mon provisiong ad hoc et j'ai trouvé aps-environment et production. Cependant, lorsque j'ouvre mon provisioning de distribution, je n'en trouve pas.

Est-ce la cause de ce message d'erreur et du rejet d'Apple, comment puis-je résoudre le problème?

102
paul polo

Oui, c'est la cause du rejet de l'App Store. Si votre profil de provisioning ad-hoc a la clé aps-environment, cela signifie que votre application est configurée correctement dans le portail d'approvisionnement Apple. Tout ce que vous avez à faire est de supprimer le profil de distribution App Store sur votre ordinateur local, puis de télécharger à nouveau et d'installer le profil de distribution à partir du portail de provisioning. Ce nouveau devrait contenir la clé aps-environment.

73
tom

Premier identifiant d'application

assurez-vous que votre notification ID Push est activée en production 

comme apparaissent dans l'image 

enter image description here

Deuxième certificat 

depuis la section production, créez deux certificats avec votre identifiant (notification push activée)

App Store et Ad Hoc certificat

Service de notification Apple Push SSL (Sandbox) certificat 

enter image description here

Troisième profils d'approvisionnement 

Depuis la section Distribution, créez App Store profile avec votre identifiant 

Finalement

pendant que vous téléchargez votre bac, vous devez vérifier le profil d'approvisionnement utilisé et disposer de nombreux droits. 

enter image description here

cela tous les cas causent ce problème espérons que ceci soit utile avec vous 

41
Mina Fawzy

Dans XCode 8, vous devez activer l’affichage Push dans l’onglet Capacités de votre cible, en plus de tout activer dans les dispositions et les certificats: Xcode 8 "le droit relatif à l’environnement aps est absent de la signature de l’application" lors de la soumission

Mon article sur ce blog ici .

38
Vaiden

J'ai reçu ce message pour une raison différente: j'ai soumis une application via Xcode sans avoir au préalable créé un profil de distribution App Store spécifiquement pour l'application. Je pense que Xcode utilise automatiquement un profil générique de l'App Store, si vous en avez un. Mais une application utilisant les notifications push nécessite son propre profil.

Le correctif consiste à créer un nouveau profil de distribution App Store pour l'application. Ensuite, téléchargez-le, faites-le glisser sur Xcode et modifiez votre projet Paramètres de construction> Signature de code> Libérer pour utiliser le nouveau profil.

22
Simon Woodside

Suite à la réponse donnée par @Vaiden, dans Xcode 8, vous pouvez résoudre ce problème en sélectionnant la cible et en cliquant sur le bouton "Résoudre le problème". Bien sûr, vous devrez toujours configurer les notifications Push dans le portail Apple Developer (vous pouvez simplifier un peu le processus en utilisant la nouvelle option "Gérer automatiquement la signature", ce qui vous évite d'avoir à télécharger le provisioning profils).

 Fix me option

9
Ian

Pour ceux qui rencontrent ce problème et qui utilisent réellement les notifications push dans leurs applications:

Nos certs Push étant sur le point d'expirer, nous avons donc créé de nouveaux certs Push de type dev/prod de la manière standard décrite par Apple (je n'entrerai pas dans les détails ici, il y a de nombreuses informations à ce sujet sur le Web lors de la mise à jour votre certs pour une autre année d’utilisation).

Après cela, cependant, le problème dans cette question est apparu. Peu importe ce que nous avons fait, nous avons reçu cet e-mail d'Apple après avoir soumis notre application. Lorsque nous avons vérifié les paramètres de notre profil d'approvisionnement de distribution dans le centre des membres Apple, tout semblait aller pour le mieux (le Push a été activé pour notre ID d'application pour les deux prod/dev, et notre profil d'approvisionnement de distribution était toujours connecté à cet ID d'application, nous venons de créer nouvelles alertes Push pour une autre année, comme cela est généralement le cas).

Enfin, voici ce qui a finalement été résolu pour moi:

  1. Créez un nouveau profil d'approvisionnement de la distribution pointant vers votre ID d'application (laissez votre profil actuel intact)
  2. Dans Xcode, actualisez vos profils de provisionnement via Paramètres> Comptes> Sélectionnez votre compte> Détails> Cliquez sur l'icône d'actualisation.
  3. Créez manuellement un fichier de pliste de droits d'accès pour votre application:
    • Menu Fichier> Nouveau fichier ...
    • Sélectionnez iOS> Ressource> Liste de propriétés
    • Nommez le nouveau fichier "foo.entitlements" (généralement, "foo" est le nom de la cible)
    • Cliquez sur le signe (+) en regard de "Fichier des droits" pour ajouter un élément de niveau supérieur (l'éditeur de liste de propriétés utilisera le schéma approprié en raison de l'extension du fichier).
  4. Assurez-vous que ce fichier de droits est utilisé dans les paramètres de construction de votre cible (Cible> Paramètres de construction> Recherchez "Droits", dans CODE_SIGN_ENTITLEMENTS, définissez le chemin d'accès au fichier de droits que vous venez de créer).
  5. Assurez-vous que l'identité de signature de code/profil d'approvisionnement dans votre cible est définie correctement sur votre profil d'approvisionnement/identité de signature de distribution approprié (cela devrait être évident)
  6. Je ne suis pas sûr à 100% si cela l'a affecté (cela ne devrait pas être le cas puisque les paramètres de la cible remplacent ceux du projet, mais je l'ai quand même fait), assurez-vous que le profil d'approvisionnement/l'identité de signature de votre projet correspond à celui de votre cible.
  7. Dans le fichier de droits que vous avez créé, cliquez avec le bouton droit de la souris sur le fichier vide et sélectionnez "Afficher les clés/valeurs brutes".
  8. Ajoutez une nouvelle entrée au fichier de droits appelée "aps-environment" et définissez sa valeur sur "production"
  9. Une remarque clé, si vous utilisiez précédemment le droit trousseau-groupes d'accès, vous voudrez également ajouter cette clé ici car pour une raison quelconque, elle a été effacée pour moi lorsque je le fais manuellement. Assurez-vous que la valeur est identique à celle utilisée dans les versions précédentes (vous pouvez trouver la valeur en recherchant une version précédente dans Organizer, en essayant de la soumettre à la boutique d'applications, sélectionnez votre équipe, puis avant de soumettre l'application, appuyez sur la flèche située en regard de la fenêtre. "Chaîne" (X) Droits "pour développer les droits et voir la valeur du droit du trousseau d'accès.
  10. Archivez votre application et essayez de la soumettre au point d'arriver au dernier bouton "Soumettre". Vous devriez voir que cette application a maintenant été créée avec le nouveau profil de provisioning que vous avez créé dans le centre des membres. Annulez ceci maintenant.
  11. Retournez dans le centre des membres Apple et supprimez le nouveau profil de provisioning créé à l'étape 1.
  12. De retour dans Xcode, actualisez à nouveau votre liste de profils d'approvisionnement en répétant l'étape 2.
  13. Maintenant archivez à nouveau votre application et vous devriez voir que celle-ci a été créée avec l'ancien profil d'approvisionnement de distribution que vous souhaitez utiliser et qu'elle dispose correctement du droit aps-environment. Soumettez et vous avez terminé.

Je sais que ce n'est pas aussi détaillé qu'il devrait l'être car il devrait contenir des captures d'écran. J'essaierai de le mettre à jour avec des captures d'écran dès que je pourrai, mais pour le moment, je suis dans une situation critique en ce moment et je voulais obtenir le titre de ce que j'ai fait là-bas. Il est également fort probable que certaines ou la plupart des étapes que je viens d'esquisser ne soient pas nécessaires. Je les mets ici parce que je les ai faites et qu'elles ont peut-être conduit à la solution finale.

8
Adam Eisfeld

J'étais également confronté à ce problème même je n'utilisais pas du tout les notifications Push dans mon application.Fabrication nouveau profil d'approvisionnement n'a pas fonctionné pour moi également. Ce que j'ai fait était: -

1.Créez un nouveau certificat pour le logiciel Ad hoc et App Store uniquement.

2.Puis création du profil de distribution avec ce certificat et intégration du profil dans Xcode.

Ensuite, la nouvelle construction soumise avec ce profil a été approuvée sans aucun avertissement.

4
Desert Rose

vérifiez si votre identifiant d'application est Push activé ou non sur developer.Apple.com sur le portail de provisioning iOS Si ce n'est pas le cas, configurez votre certificat SSL Push pour votre identifiant d'application. Téléchargez-le, et réinstallez-le à nouveau dans votre trousseau puis Téléchargez votre profil de distribution installé dans votre bibliothèque Xcode

4
Vishal's p

Dans mon cas, même j’ai créé un fichier myapp.profile et l’ai défini manuellement dans xcode. Lorsque j’ai choisi "Afficher dans le Finder" et que je trouvais le fichier embedded.mobileprovision et que je vérifiais que aps-environment existait toujours là.

Je suis ensuite allé au centre des développeurs et j'ai constaté que le statut de XC: myapp.profile est invalide. Je l'ai mis à jour et installé le XC: myapp.profile et cela a bien fonctionné.

Je pense que xcode essaie de gérer le profil et vous devez vérifier le profil de provisioning lorsque vous envoyez votre fichier binaire à stocker et vous assurer qu'il s'agit du bon. Et selon d’autres réponses, cela peut être causé pour diverses raisons, donc cela peut être vraiment ennuyant.

METTRE À JOUR:

Une fois que vous avez signé avec le profil téléchargé et confirmé que aps-environment était présent lorsque vous essayez de soumettre à App Store, vous devriez pouvoir modifier le profil et l'entité de signature de code en automatique et iOS Developer. J'espère que cela pourra être amélioré dans Xcode 7.

2
superarts.org

Pour résoudre ceci pour une application expo 'éjectée', je suis allé à l'onglet des fonctionnalités, j'ai activé Push, puis à nouveau désactivé. Cela a supprimé le paramètre "autorisations" d'APNS du fichier .entitlements.

1
Chris

C'est ce qui a réglé le problème pour moi. (J'avais déjà essayé d'activer/de désactiver les fonctionnalités, de recréer le profil d'approvisionnement, etc.).

Dans l'onglet Build Settings, dans Code Signing Entitlements, mon fichier .entitlements n'était pas un lien pour toutes les sections. Une fois que je l'ai ajouté à la section Any SDK, l'erreur a été résolue.

 enter image description here

1
mogile_oli

J'avais le même problème et ma solution consistait à ajouter le droit à notification Push de Target -> Capabilities.

0
Shalom Dahan

Cela m'est arrivé soudainement parce que le profil de distribution de mon application avait expiré. Xcode a commencé à utiliser le profil générique, pour lequel le droit de notification Push n’était pas activé. Je n'ai reçu aucun avertissement. La solution était facile. Je devais simplement générer un autre profil de distribution pour mon application dans le centre des développeurs Apple, le télécharger et double-cliquer pour l'installer dans Xcode.

0
ahmacleod

Il y a de très bonnes suggestions ici. 

En vous référant à la dernière capture d'écran fournie par Mina, après avoir initialement archivé mon application, le profil de provisionnement mentionné lors du téléchargement contenait un caractère générique (XC. *). C'est faux.

Il a fallu déployer des efforts considérables pour résoudre ce problème. J'ai dû combiner les suggestions de Simon Woodside et Mina Fawzy. 

Si vous avez des certificats et des profils de provisionnement existants liés à votre projet, le moment est venu de les supprimer tous localement et de les révoquer tous à distance. Donnez-vous un nouveau départ.

La suggestion détaillée de Mina Fawzy est excellente. Effectuer la suggestion de Mina, si effectuée correctement, devrait prendre soin de vous en ligne. 

Entrez la suggestion de Simon. Deux choses que je devais vérifier dans mon projet. En utilisant XCode, allez ici:

PROJET -> PARAMÈTRES DE CONSTRUCTION -> SIGNATURE DE CODE

Consultez les Identités de signature de code et Profil d'approvisionnement propriétés. Assurez-vous de définir ces deux propriétés sur celles de votre nom de projet. Ne laissez pas XCode se sélectionner automatiquement pour vous et n'utilisez pas une identité de signature de code générique (par exemple, Iphone Developer).

Assurez-vous que vous pouvez réellement installer l'application sur vos appareils avant de décider d'archiver.

0
Coach Roebuck

Le plus gros problème que j'ai après avoir activé le Push Notification à partir de Capabilities et avoir refait tous les certificats est que le nom de la cible et le nom du dossier où était stocké, le projet était composé de 2 chaînes séparées par espace. Après avoir enlevé l'espace, tout a bien fonctionné!

0
Constantin Saulenco