web-dev-qa-db-fra.com

aucune chaîne de droits 'aps-environment' valide n'a été trouvée pour l'application

J'essaie de configurer mon application pour prendre en charge la notification Push, mais le message d'erreur suivant s'affiche: Erreur d'obtention du jeton, erreur: Domaine d'erreur = Code NSCocoaErrorDomain = 3000 "aucune chaîne de droits 'valide' n'a été trouvée pour l'application" UserInfo = 0x1f818fc0 { NSLocalizedDescription = pas de chaîne de droits valide 'environnement-aps' trouvée pour l'application}

  • J'ai permis à mon application de prendre en charge les notifications Push (uniquement pour le développement à ce stade).
  • J'ai créé le profil d'approvisionnement APRÈS l'activation des notifications Push.
  • Mon identifiant de paquet est le même que celui qui apparaît dans le profil.
  • Dans mon fichier de profil, il y a une chaîne: aps-environment
  • Je me suis assuré que, dans la section "Identité de signature de code" du projet et de la cible, TOUTES les valeurs sont sélectionnées pour être mon profil d'approvisionnement.

Plus d'idées? Merci.

82
bashan

Dans mon cas, les éléments de mon profil d'approvisionnement:

security cms -D -i ~/Downloads/spolskyDevelop.mobileprovision 
...
<key>application-identifier</key>
<string>P5GM95Q9VV.com.dca.spolsky</string>
<key>aps-environment</key>
<string>development</string>

Était différent de ce qui était réellement construit dans l'application (vous pouvez savoir où elle est construite en consultant l'onglet Logs de Xcode)

codesign -d --entitlements - '/Users/drew/Library/Developer/Xcode/DerivedData/spolsky-bdbtdfjeeywhqzccpmmceqvnhgtm/Build/Products/Debug-iphoneos/spolsky-ios.app'
<dict>
    <key>application-identifier</key>
    <string>Y2X6Z7Z2GR.com.dca.spolsky-ios</string>
    <key>get-task-allow</key>
    <true/>
    <key>keychain-access-groups</key>
    <array>
        <string>Y2X6Z7Z2GR.com.dca.spolsky-ios</string>
    </array>
</dict>

C'était vrai même si le texte d'indication "Actuellement correspond" sous Identité de signature de code indiquait le profil d'approvisionnement correct - bizarre, hein? Pour rendre cette histoire étrange, le profil de provisioning correct était installé sur l'appareil lorsque je me présentais (Paramètres-> Général-> Profils), ce qui me laissait croire que le profil de provisioning était correct - mais il revenait à un ID générique. quand l'application était réellement lancé.

L'indice était la différence dans la sortie de ces deux commandes:

Y2X6Z7Z2GR . Com.dca .spolsky-ios vs P5GM95Q9VV . com.dca .spolsky

Lorsque j'ai fait correspondre la partie en gras, la partie en italique a été modifiée pour correspondre automatiquement. De plus, les sorties de security et codesign étaient concordantes et il n’y avait plus d’erreur de droit aps.

Mon hypothèse est que XCode utilisait une correspondance de style générique sur mon identifiant non générique. ("spolsky" est, après tout, assez proche de "spolsky-ios"), ce qui explique la sortie "Actuellement correspond". Mais quelque chose dans la chaîne de construction est plus strict à ce sujet, il revient donc à un ID générique réel pendant la construction.

64
Drew

Le problème est dû au fait que le profil d'approvisionnement actuel ne contient pas d'informations APNS, car le profil d'approvisionnement est créé AVANT créant le certificat APNS.

Par conséquent, pour résoudre le problème, créez un nouveau profil de provisioning et sélectionnez le profil de provisioning dans Xcode pour effacer l'erreur.

37
Raptor

J'ai eu ce même problème après que les notifications Push fonctionnaient déjà sur mon appareil. Semblait comme si Xcode avait mis en cache quelque chose de manière incorrecte, l’actualisation a donc résolu mon problème:

  1. Xcode -> Préférences -> Comptes
  2. Afficher les détails de votre compte de développeur
  3. Cliquez simplement sur Actualiser pour les profils de provision à quelques reprises. Je voyais ces changements à chaque rafraîchissement. Continuez à rafraîchir jusqu'à ce qu'ils cessent de changer.
29
Oren

Sachez que l'identificateur de groupe doit correspondre au profil d'approvisionnement de manière sensible à la casse. J'ai eu quelque chose comme com.FirstLast.appname quand cela aurait dû être com.firstlast.appname. Eh bien, cela m'a occupé pendant un bon moment.

9
sudo

J'ai résolu ce problème en activant la capacité de notification Push.

Sélectionnez Projet> Cible> Fonctions> Activer les notifications Push.

check out the image

9
error-404

j'ai eu cette erreur et je n'ai pas créé de nouveau profil d'approvisionnement; en a créé un nouveau puis a dû redémarrer xCode mais fonctionne maintenant!

9
jasonpurdy

Si ce problème survient soudainement après la mise à niveau vers Xcode 8, un écran d'avertissement vous permettant de résoudre ce problème automatiquement peut vous être fourni:

Sélectionnez Projet> Cible> Fonctions> Activer les notifications Push.

3
Departamento B

Je me suis heurté à cela dans ce qui pourrait être un cas d'utilisation peu fréquent. Je travaille avec Xcode 6 et iOS 8. Je créais une série de projets d'application entièrement nouveaux et tentais de réutiliser le même ID d'ensemble, afin de ne pas avoir à passer par toute la configuration côté portail. Cela aussi était juste pour le test du bac à sable.

Je constaterais que, bien que la configuration et l'enregistrement fonctionnent correctement pour la première application, si je supprimais cette application de l'appareil, définissais le même identifiant de bundle pour la seconde application, puis tentais d'enregistrer des PN avec cette application, j'obtiendrais cette erreur.

Ma solution était de:

  1. Supprimez le profil d'approvisionnement associé du périphérique.
  2. Supprimez le profil d'approvisionnement associé de Xcode.
  3. Fermer Xcode
  4. Double-cliquez sur mon téléchargé .mobileprovision fichier pour le réinstaller dans Xcode
  5. Ouvrez le projet et déployez-le.

Cette approche semble faire perdre de vue quel que soit l'état précédent, et je peux enregistrer des PN avec le nouvel identifiant d'application/même bundle.

2
KevinH

Produit-> Clean l'a fait pour moi. J'espère que ça le fait pour quelqu'un d'autre.

2
Louis Cremen

Pour ceux qui ont eu cette erreur dans iOS 10, vous pouvez essayer les étapes suivantes:

1. nettoyez votre projet.
2.et vérifiez Cibles -> Capacités -> Notification Push. Si elle est désactivée, cliquez dessus.

Et le problème sera résolu. Les étapes ci-dessus m'aident à résoudre ce problème. J'espère que ça aidera à quelqu'un.

2
bittu

Le nouveau profil d'approvisionnement a fonctionné pour moi. Veillez à utiliser un profil de développeur si vous êtes en développement (n'utilisez pas Ad Hoc). C'était bien après cela, je ne savais pas pourquoi l'ancien avait cessé de fonctionner correctement.

0
user3344717