Droit de notification push manquant

126

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

Droit de notification push manquant - Votre application semble s'enregistrer auprès du service de notification push Apple, mais les droits de signature de l'application n'incluent pas le droit «aps-environnement». Si votre application utilise le service de notification push Apple, assurez-vous que votre ID d'application est activé pour la notification push dans le portail de provisionnement et soumettez à nouveau après avoir signé votre application avec un profil de provisionnement de distribution qui inclut le droit «aps-environnement».

J'ai vérifié mon provisiong ad-hoc et là j'ai trouvé aps-environnement et production cependant, quand j'ouvre mon provisioning de distribution, je ne trouve pas tel.

Est-ce la cause de ce message d'erreur et du rejet d'Apple, comment puis-je y remédier?

mirageservo
la source

Réponses:

80

Oui, c'est la cause du rejet de l'App Store. Si votre profil de provisionnement ad hoc possède la clé d'environnement aps, cela signifie que votre application est configurée correctement dans le portail de provisionnement 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.

à M
la source
Juste pour clarifier un peu plus de brouillard, cela indique assez que le "profil de distribution DOIT contenir l'environnement aps, etc.", et que lorsque j'ouvre l'approvisionnement dans un éditeur de texte, je devrais le trouver là ...
mirageservo
Dois-je générer un nouveau certificat SSL, spécialement lorsque j'ai changé quelque chose de mon profil de distribution?
mirageservo
2
Non, pas besoin d'un nouveau certificat de développeur. Lorsque vous avez activé la distribution des notifications push (ce que vous avez dû faire à un moment donné car votre profil ad hoc possède la clé aps-environment), le portail de provisionnement iTunes génère un nouveau profil de distribution de l'App Store contenant la clé aps-environment. Vous n'avez probablement pas téléchargé et installé la dernière version.
tom
Une dernière chose avant que cette question ne parvienne à la galaxie, dois-je recompiler (réarchiver) l'ipa, car il y aurait un changement dans les paramètres de construction du projet ou, je peux directement distribuer l'application sans déranger une recompilation?
mirageservo
Vous devez réarchiver. Le profil de provisionnement associé à l'application est intégré dans le .ipa.
tom
43

ID de la première application

assurez-vous que la notification push de votre identifiant est activée côté production

comme apparaissent dans l'image

entrez la description de l'image ici

Deuxième certificat

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

App Store et certificat Ad Hoc

Certificat SSL (Sandbox) du service Apple Push Notification

entrez la description de l'image ici

Troisièmes profils d'approvisionnement

Dans la section Distribution, créez un profil App Store avec votre identifiant

finalement

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

entrez la description de l'image ici

tous les cas causent ce problème j'espère que cela vous sera utile

Mina Fawzy
la source
1
C'est ce qui me manquait. J'ai dû créer un nouveau profil d'approvisionnement sur le site des développeurs Apple à l'aide de l'ID d'application avec des notifications push. Avec le nouveau profil de provisioning, le droit aps-environment a finalement été ajouté à mon application. Je vous remercie!
M. Luisa Carrión
38

Dans XCode 8, vous devez activer le push dans l'onglet Capabilities sur votre cible, en plus de tout activer sur les dispositions et les certificats: Xcode 8 "le droit aps-environnement est absent de la signature de l'application" lors de la soumission

Mon article de blog à ce sujet ici .

Vaiden
la source
8
C'est un Apple si classique. Deux heures après avoir soumis une version, ils envoient un message d'erreur concernant un problème que j'ai résolu depuis longtemps (en activant le service d'application de notification push dans le portail des développeurs) et qui est expliqué avec un lien vers un 404. Ensuite, il s'avère que le vrai Le problème est qu'ils n'ont pas migré mes paramètres lors de la mise à niveau vers une nouvelle version de leur logiciel (dans laquelle je suis verrouillé). Pouah.
Rembrandt
3
Même histoire ici. Nous avons presque rejeté le message d'erreur comme un bogue Apple.
Vaiden
23

J'ai reçu ce message pour une raison différente: j'ai soumis une application via Xcode sans créer au préalable un profil de distribution App Store spécifiquement pour l'application. Je pense que Xcode utilise automatiquement un profil App Store générique si vous en avez un installé. Mais une application utilise 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 les paramètres de construction de votre projet> Signature de code> Libérer pour utiliser le nouveau profil.

Simon Woodside
la source
11

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 "Résoudre le problème". Bien sûr, vous devrez toujours configurer des notifications push dans le portail des développeurs Apple (vous pouvez simplifier un peu le processus en utilisant la nouvelle option "Gérer automatiquement la signature", qui vous évite d'avoir à télécharger les profils d'approvisionnement).

Option de réparation

Ian
la source
8

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

Nos certificats push étaient récemment sur le point d'expirer, nous avons donc créé de nouveaux certificats push 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 à ce sujet partout sur le Web lors de la mise à jour vos certificats push pour une autre année d'utilisation).

Après cela, le problème de 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 de provisionnement de distribution dans le centre des membres Apple, tout avait l'air bien (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 littéralement de créer nouveaux certificats push pour une autre année, comme c'est la pratique courante).

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

  1. Créez un nouveau profil de provisioning de distribution pointant vers votre identifiant d'application (laissez votre profil actuel intact)
  2. Dans Xcode, actualisez vos profils d'approvisionnement via Paramètres> Comptes> Sélectionnez votre compte> Détails> Cliquez sur l'icône d'actualisation
  3. Créez manuellement un fichier plist de droits pour votre application:
    • Menu Fichier> Nouveau fichier ...
    • Sélectionnez iOS> Ressource> Liste des propriétés
    • Nommez le nouveau fichier "foo.entitlements" (généralement, "foo" est le nom de la cible)
    • Cliquez sur le (+) à côté de "Fichier de droits" pour ajouter un élément de niveau supérieur (l'éditeur de liste de propriétés utilisera le schéma correct en raison de l'extension de 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> Rechercher "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 le profil d'approvisionnement / l'identité de signature de code dans votre cible est correctement défini sur votre profil d'approvisionnement de distribution / identité de signature approprié (cela doit être évident)
  6. Je ne suis pas sûr à 100% si cela l'a affecté (cela ne devrait pas puisque les paramètres de la cible remplacent les paramètres du projet, mais je l'ai quand même fait), assurez-vous que le profil d'approvisionnement / l'identité de signature de votre projet correspondent à ceux de votre cible.
  7. Dans le fichier de droits que vous avez créé, cliquez avec le bouton droit sur le fichier vide et sélectionnez "Afficher les clés / valeurs brutes"
  8. Ajoutez une nouvelle entrée au fichier de droits intitulé "aps-environment" et définissez sa valeur sur "production"
  9. Une note clé, si vous utilisiez précédemment le droit d'accès aux groupes d'accès au trousseau, 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 la même que la valeur utilisée dans les versions précédentes (vous pouvez trouver la valeur en recherchant une version précédente dans l'Organisateur, en essayant de la soumettre à l'App Store, sélectionnez votre équipe, puis avant de soumettre l'application, appuyez sur la flèche à côté du Chaîne "(X) Entitlements" pour développer les droits et voir la valeur du droit d'accès au groupe d'accès au trousseau.
  10. Archivez votre application et essayez de la soumettre au point d'accéder au bouton final «Soumettre». Vous devriez voir que cette application a maintenant été créée avec le nouveau profil d'approvisionnement que vous avez créé dans le centre des membres. Annuler maintenant.
  11. Revenez au centre des membres Apple et supprimez le nouveau profil d'approvisionnement que vous avez 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 l'application a été créée avec l'ancien profil de provisioning de distribution que vous vouliez utiliser et qu'elle possède correctement le 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 y avoir des captures d'écran, j'essaierai de le mettre à jour avec des captures d'écran quand je le pourrai, mais pour le moment, je suis dans un manque de temps en ce moment et je voulais avoir le jist de ce que j'ai fait là-bas. Il y a aussi de fortes chances que certaines ou la plupart des étapes que j'ai décrites 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.

Adam Eisfeld
la source
Je vous remercie. Le n ° 8 pour moi était le développement, ce qui pourrait être notre problème.
ingage
Merci beaucoup, gaspillé une journée entière sur ce shittery, l'étape 4 était le problème, pour une raison quelconque sans spécifier CODE_SIGN_ENTITLEMENTS, les droits ont été ignorés uniquement lors du téléchargement de l'App Store.
Mark Kazakov
5

Vérifiez que votre identifiant d'application est activé ou non sur developer.apple.com dans le portail d'approvisionnement 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 dans votre trousseau une fois de plus, puis téléchargez l'installation de votre profil de distribution dans votre bibliothèque Xcode

Vishal's p
la source
4

J'étais également confronté à ce problème même si je n'utilisais pas du tout de notifications push dans mon application.La création d'un nouveau profil d'approvisionnement ne fonctionnait pas non plus pour moi.

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

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

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

Rose du désert
la source
2
J'ai essayé ceci - je n'ai pas aidé. je reçois toujours le truc des notifications push manquant .. je n'utilise pas les notifications push!
Adam le
2

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

Je suis ensuite allé au centre de développement et j'ai trouvé que le statut de XC: myapp.profile n'est pas valide. 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 binaire au stockage, et assurez-vous qu'il est le bon. Et selon d'autres réponses, cela 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é qu'il aps-environmentétait présent lorsque vous essayez de vous soumettre à App Store, vous devriez pouvoir changer le profil et l'entité de signature de code en automatique et iOS Developer. J'espère qu'il pourra être amélioré dans Xcode 7.

superarts.org
la source
J'ai vérifié tous les profils et aussi XC: le profil est mis à jour et il n'inclut aucune clé asp-environnement là-bas, j'ai toujours le même problème encore et encore. Toute aide serait appréciée. Et oui, je n'ai besoin d'aucune notification push implémentée dans l'application
The iOSDev
Pourriez-vous vous en assurer en vérifiant le contenu binaire du profil d'approvisionnement et voir si la chaîne "aps-environment" est à l'intérieur ou non? S'il se trouve à l'intérieur, vous devez trouver un moyen de vous en débarrasser, sinon vous devez vous assurer que ce profil est celui avec lequel vous signez votre application. Dans tous les cas, il doit y avoir un problème.
superarts.org
1
Je l'ai vérifié deux fois et j'essaye d'en savoir plus mais pas de chance. Il n'y a pas de chaîne comme celle-là, mais après 2 jours de recherche et d'essais, j'ai une chose conforme que ce problème est avec Xcode 7 beta pas avec mon code :) La même version via Xcode 6.4 fonctionne parfaitement et il n'y a pas d'e-mail d'Apple signalant que problème donc le problème est avec Xcode 7 beta 4 pas avec le code ou le profil.
The iOSDev
2

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

Dans l' onglet Paramètres de construction , dans Droits de signature de code , mon fichier .entitlements n'était pas lié à 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

mogile_oli
la source
2

Pour résoudre ce problème pour une application expo `` éjectée '', je suis allé dans l'onglet fonctionnalités, j'ai activé le push, puis je l'ai désactivé à nouveau. Cela a supprimé le paramètre «droits» APNS du fichier .entitlements.

Chris
la source
essayé ceci sur mon projet "éjecté", mais je reçois toujours ces notifications
webdevbyjoss
1

J'ai eu le même problème et ma solution était d'ajouter le droit de notification push de Target -> Capabilities.

Shalom Dahan
la source
0

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 à la place, pour lequel le droit de notification push n'était pas activé. Je n'ai reçu aucun avertissement. La solution était facile; Je devais juste générer un autre profil de distribution pour mon application dans le centre des membres Apple Developer, le télécharger et double-cliquer pour l'installer dans Xcode.

ahmacleod
la source
0

Il y a de très bonnes suggestions ici.

En référence à 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 des efforts considérables pour résoudre ce problème. J'ai dû effectuer une combinaison des suggestions fournies par Simon Woodside et Mina Fawzy.

Si vous disposez de certificats existants et de profils d'approvisionnement 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. L'exécution de la suggestion de Mina, si elle est 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

Vérifiez les propriétés de l' identité de signature de code et du profil d'approvisionnement . Assurez-vous de définir ces deux propriétés sur celles du nom de votre projet. N'autorisez pas XCode à 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 de l'archiver.

Entraîneur Roebuck
la source
0

Le plus gros problème que j'ai après avoir activé Push Notificationfrom Capabilitieset refait tous les certificats est que le nom de la cible et le nom du dossier où a été stocké le projet ont été composés de 2 chaînes séparées par un espace. Après avoir supprimé l'espace, tout fonctionnait très bien!

Constantin Saulenco
la source
1
Mon application n'utilise pas de notification push, mais je reçois toujours cet avertissement d'Apple. S'il vous plaît suggérer
Chandni
0

J'ai eu ce problème car mon fichier de droits était mal formé en raison d'une précédente édition manuelle. J'ai supprimé la syntaxe d'entrée de droit mal formatée, puis je pouvais cliquer sur "réparer" dans l'onglet des fonctionnalités et Xcode a ajouté le droit à mon fichier.

Voici un exemple de fichier de droits correctement formaté (" Runner.entitlements"):

<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>aps-environment</key>
    <string>development</string>
    <key>com.apple.developer.applesignin</key>
    <array>
        <string>Default</string>
    </array>
</dict>
</plist>
Jonas357
la source
0

FIX IDEA Hé les gars, j'ai donc créé une application et n'ai utilisé aucune fonction de notification push, mais j'ai toujours reçu un e-mail. Après avoir vérifié les certificats, les identifiants et les profils de l'identifiant du bundle que j'ai utilisé pour créer mon application dans l'Apple Store, connectez-vous au portail des développeurs Apple, j'ai réalisé que les notifications push étaient activées.

Ce que vous devez faire est:

allez sur le site de connexion des développeurs Apple où vous pouvez gérer vos certificats aso 2. sélectionnez l'onglet «Certificats, IDs and Profiles» sur le côté droit 3. maintenant sélectionnez «Identifiers» 4. et l'identifiant du bundle dans la liste de droite 5. maintenant faites défiler vers le bas jusqu'à ce que vous voyiez une notification push 6. désactivez-la 7. archivez votre build et remettez-la en ligne sur Apple Store Connect

J'espère que ça aide!

Qooplite
la source