Droit de notification push manquant

J'ai une application pour la soumission quand elle a été rejetée et j'ai reçu le message

Droit de notification push manquant – Votre application semble s'inscrire auprès du service de notification push Apple, mais les droits de la signature de l'application n'incluent pas le droit "aps-environment". Si votre application utilise le service Apple Push Notification, assurez-vous que votre ID d'application est activé pour la notification Push dans le portail Provisioning Portal et renvoyez après avoir signé votre application avec un profil de provisionnement de dissortingbution incluant le droit "aps-environment".

J'ai vérifié mon provisionnement ad-hoc et là j'ai trouvé l'environnement et la production d'aps cependant, quand j'ouvre mon provisionnement de dissortingbution, je ne le trouve pas.

Est-ce la cause de ce message d'erreur et le rejet d'Apple, comment puis-je le réparer?

Oui, c'est la cause du rejet de l'App Store. Si votre profil d'approvisionnement ad hoc a la key aps-environment, cela signifie que votre application est correctement configurée dans le portail Apple Provisioning Portal. Tout ce que vous devez faire est de supprimer le profil de dissortingbution de l'App Store sur votre machine locale, puis de download à nouveau et d'installer le profil de dissortingbution à partir du portail de provisionnement. Ce nouveau devrait contenir la key aps-environment.

Premier identifiant de l'application

assurez-vous que votre notification Push ID est activée côté production

comme apparaît dans l'image

entrez la description de l'image ici

Deuxième certificate

à partir de la section de production, créez deux certificates avec votre identifiant (notification push activée)

App Store et certificate Ad Hoc

Certificat de service Push Apple SSL (Sandbox)

entrez la description de l'image ici

Troisièmes profils de provisionnement

À partir de la section Dissortingbution, créez un profil App Store avec votre identifiant

finalement

Pendant que vous téléchargez votre chutier, vous devez vérifier le profil d'approvisionnement utilisé et avoir de nombreux droits

entrez la description de l'image ici

tous les cas causent ce problème espérons que cela vous sera utile

Dans XCode 8, vous devez activer l'onglet Capabilities sur votre cible, en plus de tout activer sur les provisions et les certificates: Xcode 8 "le droit aps-environment est manquant dans la signature de l'application" sur submit

Mon blog à ce sujet ici .

J'ai reçu ce message pour une raison différente – j'ai soumis une application via Xcode sans d'abord créer un profil de dissortingbution App Store spécifiquement pour l'application. Je crois que Xcode utilise automatiquement un profil App Store générique si vous en avez installé un. Mais une application utilise les notifications Push nécessite son propre profil.

La solution consiste à créer un nouveau profil de dissortingbution App Store pour l'application. Ensuite, vous le téléchargez, le faites glisser sur Xcode et modifiez votre projet Build Settings> Code Signing> Release pour utiliser le nouveau profil.

Pour ceux qui sont confrontés à ce problème et qui utilisent des notifications Push dans leurs applications:

Comme nos certificates d'expédition étaient sur le point d'expirer, nous avons créé de nouveaux certificates de dev / prod de la manière standard décrite par Apple (je n'entrerai pas dans les détails ici, il y a beaucoup d'informations sur le web lors de la mise à jour vos certificates de poussée pour une autre année d'utilisation).

Après avoir fait cependant, le problème dans cette question a surgi. Peu importe ce que nous avons fait, nous avons reçu cet e-mail d'Apple après avoir envoyé notre application. Lorsque nous avons vérifié les parameters de notre profil de provisionnement de dissortingbution dans le Centre des membres Apple, tout s'est bien passé (Push était activé pour notre ID d'application pour prod / dev, et notre profil de dissortingbution était toujours connecté à cet ID d'application. nouveaux cercles de poussée pour une autre année comme c'est la pratique standard).

Finalement, c'est ce qui a fini par le résoudre pour moi:

  1. Créez un nouveau profil d'approvisionnement de dissortingbution pointant vers votre identifiant d'application (laissez votre identifiant actuel)
  2. Dans Xcode, actualisez vos profils d'approvisionnement via Paramètres> Comptes> Sélectionnez votre count> Détails> Cliquez sur l'icône d'actualisation
  3. Créez manuellement un file plist de droits pour votre application:
    • Menu Fichier> Nouveau file …
    • Sélectionnez iOS> Ressource> Liste des propriétés
    • Nommez le nouveau file "foo.entitlements" (typiquement, "foo" est le nom de la cible)
    • Cliquez sur le (+) en regard de "Fichier de droits" pour append un élément de niveau supérieur (l'éditeur de list de propriétés utilisera le schéma correct en raison de l'extension de file)
  4. Assurez-vous que ce file d'permissions est utilisé dans les parameters de construction de votre cible (Cible> Paramètres de construction> Rechercher des "droits", dans CODE_SIGN_ENTITLEMENTS, définissez le path d'access au file d'permissions que vous venez de créer)
  5. Assurez-vous que le profil d'approvisionnement / l'identité de signature de code dans votre cible est correctement défini sur votre profil de dissortingbution / identité de signature de dissortingbution approprié (cela devrait être évident)
  6. Je ne suis pas sûr à 100% si cela l'a affecté (il ne devrait pas, puisque les parameters de la cible remplacent les parameters du projet, mais je l'ai fait de toute façon), assurez-vous que le profil d'approvisionnement / l'identité de signature de votre projet
  7. Dans le file des droits que vous avez créé, faites un clic droit dans le file vide et select "Afficher les keys / valeurs brutes"
  8. Ajouter une nouvelle input au file de droits appelé "aps-environment" et définir sa valeur sur "production"
  9. Une remarque importante, si vous utilisiez précédemment le droit keychain-access-groups, vous voudrez append cette key ici aussi, car pour une raison quelconque, elle a été effacée pour moi manuellement. Assurez-vous que la valeur est identique à la valeur utilisée dans les versions précédentes (vous pouvez find la valeur en recherchant une version précédente dans Organizer, en essayant de la soumettre à l'App Store, select votre équipe, puis appuyez sur la flèche en regard de "(X) Entitlements" string pour développer les droits et voir la valeur de l'autorisation keychain-access-group.
  10. Archivez votre application et tentez de la soumettre au point d'access au button "Envoyer". Vous devriez voir que cette application a été créée avec le nouveau profil d'approvisionnement que vous avez créé dans le Centre des membres. Annuler à partir de maintenant.
  11. Revenez au centre membre Apple et supprimez le nouveau profil d'approvisionnement que vous avez créé à l'étape 1.
  12. De return dans Xcode, actualisez votre list de profils d'approvisionnement en répétant l'étape 2.
  13. Maintenant, archivez à nouveau votre application, et vous devriez voir que l'application a été créée avec l'ancien profil de provisionnement de dissortingbution que vous vouliez utiliser et qu'elle a correctement le droit d'access 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 avoir des captures d'écran, je vais essayer de le mettre à jour avec des captures d'écran quand je le peux mais pour le moment je suis dans un moment critique et je veux ce que j'ai fait là-bas. Il y a aussi une chance très probable que certaines ou la plupart des étapes que j'ai décrites ne soient pas nécessaires, je les pose ici parce que je les ai faites et qu'elles ont pu mener à la solution finale.

Je faisais aussi face à ce problème même si je n'utilisais pas les notifications push du tout dans mon application. Faire un nouveau profil de provisionnement ne fonctionnait pas non plus pour moi. Ce que j'ai fait était: –

1.Créer un nouveau certificate pour Ad hoc et App Store uniquement.

2. Ensuite, créez un profil de dissortingbution avec ce certificate et intégrez le profil avec Xcode.

Puis nouvellement construit build avec ce profil approuvé sans aucun avertissement.

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 "problème de correction". Bien sûr, vous aurez toujours besoin de configurer des notifications push dans le portail Apple Developer (vous pouvez simplifier un peu le process en utilisant la nouvelle option "Gérer automatiquement la signature", qui vous évite de devoir download les profils d'approvisionnement).

Fixe-moi l'option

Vérifiez que l'identifiant de votre application est activé ou non sur developer.apple.com dans iOS Provisioning Portal Si ce n'est pas le cas, configurez votre certificate SSL Push pour votre identifiant d'application Téléchargez-le et réinstallez-le dans votre trousseau dans votre Xcode Liabrary

Dans mon cas, même j'ai créé un myapp.profile et l'ai placé dans xcode manuellement, et quand j'ai choisi "show in finder" et localisé l'embedded.mobileprovision et vérifié pour m'assurer que l'environnement aps est là dans le file, l'erreur était toujours là.

Je suis ensuite allé au centre de développement et a 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 d'approvisionnement lorsque vous soumettez votre file binary à stocker, et assurez-vous qu'il est le bon. Et selon d'autres réponses, il peut être causé pour diverses raisons, donc cela peut être vraiment ennuyeux.

METTRE À JOUR:

Une fois que vous avez signé avec le profil téléchargé et confirmé que aps-environment était là lorsque vous essayez de soumettre à App Store , vous devriez être en mesure de changer le profil et l'entité de signature de code pour automatique et iOS Developer . Espérons qu'il peut être amélioré dans Xcode 7.

C'est ce qui m'a arrangé. (J'avais déjà essayé d'activer / désactiver les fonctionnalités, recréer le profil d'approvisionnement, etc.).

Dans l'onglet Paramètres de construction , dans Code Signing Entitlements , mon file .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.

entrez la description de l'image ici

Cela m'est arrivé soudainement parce que le profil de dissortingbution de mon application avait expiré. Xcode a commencé à utiliser le profil générique à la place, qui ne possédait pas l'autorisation de notification push activée. Je n'ai reçu aucun avertissement. Le correctif était facile. Il me suffisait de générer un autre profil de dissortingbution pour mon application dans le Centre des développeurs Apple, de le download et de double-cliquer pour l'installer dans Xcode.

Il y a de très bonnes suggestions ici.

En reference à la dernière capture d'écran fournie par Mina, après l'archivage initial de mon application, le profil d'approvisionnement mentionné lors du téléchargement contenait un caractère générique (XC. *). C'est faux.

Il a fallu un effort considérable pour résoudre ce problème. J'ai dû faire une combinaison des suggestions fournies par Simon Woodside et Mina Fawzy.

Si vous avez des certificates existants et des profils d'approvisionnement liés à votre projet, il serait time 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 elle est effectuée correctement, devrait prendre soin de vous en ligne.

Entrez la suggestion de Simon. Deux choses dont j'avais besoin pour vérifier dans mon projet. En utilisant Xcode, allez ici:

PROJET -> CONFIGURATION BUILD -> SIGNATURE DE CODE

Vérifiez les propriétés Identité de signature de code et Profil de provisionnement . Assurez-vous de définir ces deux propriétés sur celle du nom de votre projet. Ne permettez pas à XCode de sélectionner automatiquement pour vous, et n'utilisez pas une identité générique de signature de code (par exemple Iphone Developer).

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

Le plus gros problème que j'ai après avoir activé la Push Notification des Capabilities et refaire tous les certificates est que le nom de la cible et le nom du dossier où était stocké le projet étaient composés de 2 strings séparées par l'espace. Après avoir enlevé l'espace tout a bien fonctionné!

J'ai eu le même problème et ma solution consistait à append le droit de notification push de Target -> Capabilities.