159 votes

Comment réparer « non valide ' aps-environnement ' droit chaîne trouvée pour application » dans Xcode 4.3 ?

J'ai été très très difficile d'essayer de créer une simple application iOS qui peut recevoir des notifications push. Ma seule raison de faire ceci est d'établir une procédure pour certains autres membres de l'équipe à utiliser, et n'ont pas été en mesure de trouver une mise à jour, la version de telles instructions ailleurs sur le web. Notre boutique est assez nouvelle pour iOS dev, personnellement, je suis complètement pas d'expérience avec les dev iOS et Xcode. J'ai trébuché à travers des dizaines de tutoriels, des articles, et de la difficulté des postes d'Apple et d'ailleurs, et je sens que je pourrais être à peu près là...

C'est ici que je dois (remarque je suis en utilisant Xcode 4.3 et en essayant d'abord de déployer juste pour iOS 5.1, et je suppose que certaines choses peuvent avoir changé récemment contre des versions antérieures de Xcode, mais encore une fois je suis nouveau à tout cela, et de trouver qu'il est complètement déroutant et alambiqué):

1) j'ai un profil de configuration sur mon iPhone qui a Push activé

2) Dans mon test Xcode projet que j'ai un profil de configuration sélectionné comme la signature de l'identité (dans les Paramètres de construction de la > Signature de Code)

enter image description here

3) j'ai mon identifiant de lot en vertu de la Synthèse et de l'Info > Custom iOS Cible définir les Propriétés correctement* (je crois??)

4) j'ai des registerForRemoteNotificationTypes être appelé dans mon délégué didFinishLaunchingWithOptions

5) j'ai didRegisterForRemoteNotificationswithdevicetoken et didFailToRegisterForRemoteNotificationswitherror dans mon délégué, mis en place pour connecter l'appareil à un jeton ou une erreur, respectivement

6) j'ai Activer les Droits contrôlés dans le Résumé.

7) juste en dessous de laquelle les Droits du Fichier sélectionné est Tinker6 (le nom de mon projet de test), qui a été généré automatiquement quand j'ai coché la case Activer les Droits

8) Dans le Tinker6.les droits du fichier, j'ai eu la suivante (que j'ai rassemblés juste en fonction de différents posts sur le web, mais que je ne peux pas trouver quelque chose de définitif d'Apple lui-même):

enter image description here

Mise à jour

9) j'ai Également essayé de l'ensemble de la chose sans les droits du fichier, et obtenir essentiellement le même résultat.

10) Mon fichier mobileprovision contenu incluent correctement (j'ai codé le nombre et le domaine, mais structurellement les mêmes):

<key>application-identifier</key>
<string>12355456A7.com.whatever.tinker</string>
<key>aps-environment</key>
<string>development</string>
<key>get-task-allow</key>
<true/>
<key>keychain-access-groups</key>
<array>
    <string>12355456A7.*</string>
</array>

/mise à jour de fin

Lorsque je tente de l'exécuter sur mon appareil, j'obtiens l'erreur suivante dans Xcode de sortie:

2012-06-11 12:45:23.762 Tinker6[13332:707] Failed to get token, error: 
Error Domain=NSCocoaErrorDomain Code=3000 "no valid 'aps-environment' 
entitlement string found for application" UserInfo=0x24a3b0 
{NSLocalizedDescription=no valid 'aps-environment' entitlement string 
found for application}

J'ai essayé paramètre get-tâche-NON, aps-environnement de la production, tous les quatre combinaisons possibles, la même chose.

Comment puis-je obtenir passé ce? Où est la documentation définitive sur ce point?

-- de plus amples informations suivantes --

*En ce qui concerne le bundle id, je ne suis toujours pas clair sur la façon dont cela devrait être mis en rapport avec les Id d'Application et le Profil d'id dans le profil de configuration. Dans le Provisioning portal en vertu de l'Id d'Application, j'ai ceci (encore une fois, brouillés, le nombre et le domaine):

enter image description here

Et les deux endroits id est réglé, j'ai ceci:

enter image description hereenter image description here

Je ne suis pas du tout sûr que ceux-ci sont corrects, ou si un ou les deux doivent être mis à 12355456A7.com.quoi que ce soit.bricoleur, mais j'ai essayé ceux plus tôt dans le processus, sans succès...

Note que j'ai réaliser il y a beaucoup de messages avec des titres similaires, mais ils semblent tous être en dehors de la date basée sur les noms de fichier, et ainsi de suite donné, et le fait aucun de ces solutions semblent être utiles. Je suis en espérant que le plus grand niveau de détail que je vous ai donné garantit une réponse de qualité. Je vais probablement attribuer une prime dès que possible et si vous donnez une haute qualité de la réponse qui conduit à une solution je vais la récompense ainsi que la promotion de votre réponse via twitter et mon blog. Surtout si vous crosspost post vraiment une bonne "voici l' exacte 500 étapes que vous avez besoin pour obtenir une simple notification push d'application de travail, y compris le dimensionnement et tout le reste" de l'article sur votre blog ou quoi que ce soit.

95voto

elpsk Points 4120

Si vous avez créé votre profil approvisionnement avant de configurer le `` pour pousser, tenter de régénérer le provisioning profil.

iOS Provisioning Portal -> Configuration -> votre cert -> EDIT -> faire un edit -> téléchargement nouveau provisioning

A fonctionné pour moi. Je suis maintenant en mesure d’utiliser push.

71voto

Mike Weller Points 28387

Tout d'abord, vous n'avez pas les droits du fichier, sauf si vous êtes l'ajout de paires clé/valeur qui n'existent pas dans le profil de configuration. Lorsque votre application est construite, tout droit à partir du profil de configuration seront copiés dans l'application.

Étant donné que vous voyez toujours un message d'erreur sur les droits, je ne peux que supposer la signature de code options ne sont pas correctes dans les paramètres de construction.

Vous devez vous assurer que le profil correct est sélectionné pour le "Debug" de la configuration, et pour être sûr que vous avez sélectionné le bon profil pour le "Debug" et de l'enfant-nœud étiqueté "Toute SDK iOS":

enter image description here

Bien que cette capture d'écran montre l'Automatique "Développeur" profil sélectionné, choisissez le exact profil de configuration que vous souhaitez à partir du menu déroulant, juste pour des fins de test. Il se pourrait que Xcode est automatiquement choisir un profil différent de celui que vous voulez.

Aussi assurez-vous de faire une nouvelle version, complètement supprimer l'application de votre appareil, etc. C'est juste pour vérifier que vous n'avez pas un vieux fluff traîner.

47voto

ooxio Points 75

Moyen le plus simple est de le faire de vos comptes avec Xcode :

Rendez-vous sur Xcode-> préférences-> choisissez comptes onglet-> voir les détails-> bouton de rafraîchissement Hit en bas à gauche-> fait.

Construire à nouveau et cela devrait fonctionner.

19voto

mamnun Points 1334

Ok, j'ai affronté le problème avant. Depuis de notification push nécessite serverside mise en œuvre, pour moi, de recréer profil n'était pas une option. J'ai donc trouvé cette solution SANS avoir à créer un profil de configuration.

Xcode n'est pas correctement choisir le bon profil de configuration bien que nous sommes en sélectionnant correctement.

D'abord aller à l'organisateur. Sur l'onglet Périphériques, profil de configuration à partir de la Bibliothèque de la liste, sélectionnez le profil voulu nous essayons de l'utiliser. Clic droit dessus puis "Révéler le Profil dans le Finder".

enter image description here

Le profil approprié sera sélectionné dans la fenêtre du Finder. À noter que le nom.

enter image description here

Maintenant, allez à Xcode > Journal de navigation. Sélectionnez le filtre "Tous" et "Tous les Messages". Maintenant dans la dernière phase(Cible de génération) regardez pour l'étape appelée "ProcessProductPackaging" le développer. Remarque le profil d'approvisionnement de nom. Ils ne doivent PAS correspondre si vous rencontrez l'erreur. enter image description here

Maintenant, dans la fenêtre du Finder supprimer le rogue profil de configuration qui Xcode. Maintenant de construire à nouveau. L'erreur doit être résolu. Si pas de répéter le processus pour trouver un autre faux profil à supprimer.

Espérons que cette aide.

18voto

user1006117 Points 261

Supprimer ancien profil de provisionnement de XCode dans l’organiseur.

Puis, de générer un nouveau profil de provisionnement pour le même id de bundle dans iOS provisioning portal (après avoir activé le push).

Importer le nouveau profil de provisionnement dans XCode, définissez-la dans votre application des paramètres de configuration.

Créer, exécuter, cela fonctionne.

J’ai juste fait.

Il m’a fallu 10 minutes de l’erreur à succès  :)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X