68 votes

Identifiant de lot et certificat push... aps-environnement droit à l'erreur

J'ai lu Où xcode prendre en application de l'Identifiant? , XCode identifiant de lot mise en forme à partir de {NOM_PRODUIT} , et plus de charges mais...

Je vais essayer d'obtenir les notifications push et le redoutable

"Erreur de Domaine=NSCocoaErrorDomain Code=3000 "non valides" aps-environnement" droit de chaîne est trouvée pour une application" UserInfo=0x15b200 {NSLocalizedDescription=non valide 'aps-environnement" droit de chaîne trouvé pour application} erreur".

Je suis assez certain que j'ai suivi toutes les étapes correctement, y compris:

  • faites le certificat push bien à l'avance de la mise en service cert
  • fait un droit à des prestations.plist'
  • ajouté une tâche-pour autoriser boolean et attribuez la valeur true (ad-hoc de presse)

La seule chose que je n'arrive pas à obtenir ma tête autour de est l'Identifiant de lot

Le certificat push est pour

XXXXXXXXXX.com.julianbaker.pwcnewsuk

Le Bundle Identifiant dans PwCNewUK-Info.plist est pour

com.julianbaker.${PRODUCT_NAME:rfc1034identifier}

Si je modifier manuellement à

com.julianbaker.pwcnewsuk

Je reçois un UDID erreur d'incompatibilité que l'application est considérée comme PwCNewsUK

Quand j'ai Googlé ce il semble y avoir une certaine confusion sur la question, mais il semble qu'ils ont?

QUESTION:

Quel doit être le Bundle Indentifer être pour correspondre à la pousser certificat de
XXXXXXXXXX.com.julianbaker.pwcnewsuk ?

QUESTION:

Ai-je besoin d'ajouter un "aps-environnement" droit au profil de configuration, et si oui, où et comment? (Voir http://www.airplaysdk.com/node/3174 parmi d'autres)

Aimant de développement iPhone mais sheesh il peut être un headbanger à la fois!

88voto

J.R. Armstrong Points 966

J'ai trouvé cette question quand j'ai été en mouvement à partir d'un environnement de développement d'une production sur une application que je suis en train de travailler sur. Ce processus a impliqué la création d'un nouveau profil, une nouvelle ID de l'application, etc. J'ai créé l'app ID et un profil, mais l'Équipe de l'Agent avait pour configurer les notifications push. Je suis tombé sur le problème de la "non valides" aps-environnement "droit de chaîne est trouvée pour une application" quand j'ai essayé de reprendre le test avec le nouveau profil (après l'application a été configuré pour les notifications push). Je me suis alors souvenu de la lecture d'un petit avertissement dans la documentation:

"Vous devez modifier le profil d'une certaine façon (par exemple, activer une option) pour le portail pour générer un nouveau profil de configuration. Si le profil n'est pas "sale", vous avez le profil sans le push droits."

Source: Locale et de Notification Push Guide de Programmation

Pour moi, "salir" le profil de configuration et de le réinstaller était tout ce qui était nécessaire pour résoudre le problème. Par la documentation, ce qui était nécessaire en raison du profil de configuration a été créé avant l'application a été configuré pour les notifications push. Cela peut ou peut ne pas aider quelqu'un, mais c'est probablement ce qui explique (et élimine) de la nécessité d'ajouter manuellement en rien le profil de configuration.

20voto

huhitschris Points 722

J'ai couru dans la même "non valides" aps-environnement "droit de chaîne est trouvée pour une application" problème, mais les solutions ci-dessus ne fonctionne pas pour moi.

Je ne pouvais pas trouver une très bonne documentation sur cette erreur, ou même simplement la touche "aps-environnement".

Après quelques retouches, voici ce qui a résolu le problème pour moi:

Ouvrez le développement de votre certificat de configuration, "Appname.mobileprovision" avec un éditeur de texte, recherchez la clé de "Droits" puis ajoutez les valeurs trouvées ici à vos Droits fichier référencé par Signature du Code des Droits de réglage.

Voici un exemple de ce que les clés/valeurs que vous trouverez à l'intérieur:

<key>application-identifier</key>
<string>xyz.com.xyz.xyz</string>
<key>aps-environment</key>
<string>development</string>
<key>com.apple.developer.ubiquity-container-identifiers</key>
<array>
<string>xyz.*</string>
</array>
<key>com.apple.developer.ubiquity-kvstore-identifier</key>
<string>xyz.*</string>
<key>get-task-allow</key>
<true/>
<key>keychain-access-groups</key>
<array>
<string>xyz.*</string>
</array>

Après l'ajout de l'ensemble de ces valeurs à mes Droits au fichier de mon application crée avec succès et je peux enfin me remettre au travail sur les Notifications Push.

Je ne sais pas si ces valeurs sont censés être automatiquement ajouté à vos droits fichier par XCode, mais ils n'étaient certainement pas être générés pour moi dans mon projet.

6voto

vinzenzweber Points 2339

Programme d'installation:

Mac OS X 10.8 + Xcode 4.4

Ma Solution Simple:

  1. Réédition de votre profil d'approvisionnement ad hoc après la configuration des notifications push pour votre app ID et les importer dans Xcode.
  2. Jetez un oeil dans votre .xcodeproj dossier (clic droit -> Afficher le Contenu du Paquet) et de supprimer l' xcuserdata le dossier.
  3. C'est tout ;)

Quelques conseils sur cette question:

Après avoir activé les Notifications Push pour mon application, j'ai soudain impossible de créer ad hoc fichiers plus. J'ai couru à travers les erreurs dans mon journal de la Console sur mon iPhone, tout en essayant d'installer mon application, tels que ceux:

Apr  1 20:56:10 unknown installd[384] <Error>: entitlement 'keychain-access-groups' has value not permitted by a provisioning profile
Apr  1 20:56:10 unknown installd[384] <Error>: entitlement 'get-task-allow' has value not permitted by a provisioning profile
Apr  1 20:56:10 unknown installd[384] <Error>: entitlement 'application-identifier' has value not permitted by a provisioning profile
Apr  1 20:56:10 unknown installd[384] <Error>: 2ff66000 verify_signer_identity: Could not copy validate signature: -402620394
Apr  1 20:56:11 unknown installd[384] <Error>: 2ff66000 preflight_application_install: Could not verify executable at /var/tmp/install_staging.44jV0O/foo_extracted/Payload/PersonalTrainer-Tester-iPhone.app
Apr  1 20:56:11 unknown com.apple.itunesstored[392] <Notice>: MobileInstallationInstall: failed with -1
Apr  1 20:56:11 unknown installd[384] <Error>: 2ff66000 install_application: Could not preflight application install
Apr  1 20:56:11 unknown installd[384] <Error>: 2ff66000 handle_install: API failed
Apr  1 20:56:11 unknown installd[384] <Error>: 2ff66000 send_message: failed to send mach message of 71 bytes: 10000003
Apr  1 20:56:11 unknown installd[384] <Error>: 2ff66000 send_error: Could not send error response to client

Il y a quelques note technique qui recommande l'utilisation d' codesign -d --entitlements - <YourAppName>.app pour vérifier si votre application est signé correctement pour Apple de Notifications Push. Dans le cas où la sortie de la codesign de commande ne dispose pas d'un capteur aps-environnement de production ou de développement il y a quelque chose de louche!

Aussi loin que je connaissais jusqu'à présent, mes applications signé avec un adhoc profil d'approvisionnement de toujours avoir un embedded.mobileprovision à l'intérieur de l' <YourAppName>.app le dossier avec une partie spécifique comme, par exemple,:

<key>Entitlements</key>
<dict>
    <key>application-identifier</key>
    <string>ABCDEFGH.com.myappname.tester</string>
    <key>aps-environment</key>
    <string>production</string>
    <key>get-task-allow</key>
    <false/>
    <key>keychain-access-groups</key>
    <array>
        <string>ABCDEFGH.*</string>
    </array>
</dict>

Après l'utilisation de codesign, j'ai réalisé que le binaire réel en <YourAppName>.app avaient un peu de XML inclus en tant que bien, qui a dit quelque chose de très différent de celui de mon embedded.mobileprovision le fichier:

<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>application-identifier</key>
    <string>ABCDEFGH.com.myappname.tester</string>
    <key>get-task-allow</key>
    <true/>
    <key>keychain-access-groups</key>
    <array>
        <string>ABCDEFGH.com.myappname.tester</string>
    </array>
</dict>
</plist>

Je suppose que c'est la cause pour le message d'erreur nous vivons tous. (bien que cette erreur peut avoir plusieurs racines ainsi que les autres postes sur stackoverflow proposer)

The executable was signed with invalid entitlements.
The entitlements specified in your application's Code Signing Entitlements
file do not match those specified in your provisioning profile. (0xE8008016).

Ma conjecture est qu'il y a certains bug dans Xcode qui maintient les paramètres de votre plist d'être mis à jour en vous schémas qui provoque alors votre application d'être signé avec le mauvais profil de configuration à la fin. Donc, par la suppression de la xcuserdata dossier vous supprimer tous les régimes. Donc Xcode va recréer la prochaine fois avec les bons réglages, et vous êtes heureux à nouveau.

5voto

JulianB Points 885

Essentiellement, la réponse est la même vague, l'un tout le monde dit

  • Assurez-vous que vous avez les Droits.plist", a ajouté le (Nouveau Fichier/Code de Signature/Droits)
  • Ajouter "get-tâche-pour autoriser" (Boolean) pour les Droits.plist
  • Ajouter "aps-environnement", "production" paire de Droits.plist -- Cette dernière étape peut être inutile, mais c'était l'une des étapes que j'ai fait juste avant, il a travaillé
  • Supprimer les anciens mobileprovision des fichiers de l'iPhone/iPod (Dans Réglages/Général),
  • Supprimer les anciens mobileprovision des fichiers à partir de XCode Organisateur
  • Supprimer App pour iPhone/iPod
  • Quittez XCode
  • Télécharger nouvelle copie de Certificat de configuration
  • Case à cocher pour "aps-environnement", la "production" de la paire en certificat avec un Éditeur de Texte
  • Début XCode
  • Ajouter frais mobileprovision de fichier par glisser-déplacer vers XCode Doc icône
  • Assurez-vous que vous avez réaffectés/attribué le certificat correct dans la Cible Info : le Code de Signature : la Signature du Code d'Identité
  • Vérifiez que les Résultats de la compilation de voir que c'est en utilisant le profil correct et est correctement signé

Répétez ces étapes calmement jusqu'à ce que ça fonctionne, il m'a fallu environ cinq ans atteint de diverses combinaisons. J'ai aussi changé de Développement Ad-hoc, ce qui apparemment n'est pas nécessaire, mais n'a garantir un nouveau fichier mobileprovision.

5voto

max ogden Points 510

À l'aide de XCode4 et de recevoir le même "non valides" aps-environnement "droit de chaîne est trouvée pour une application" j'ai eu à faire ce qui suit:

  • Supprimer les anciens profils de configuration de Bibliothèque + panneaux de Périphériques dans l'Organiseur
  • Régénérer un nouveau profil avec APN dev activé à partir du portail des développeurs de site web
  • Assurez-vous que le nouveau profil est ajouté à la Bibliothèque + panneaux de Périphériques dans l'Organiseur
  • Supprimer manuellement mon appli de mon appareil (maintenir jusqu'à ce qu'il se dandine et frapper X)
  • CMD+OPTION+MAJ+K (Propre Dossier de création) et CMD+MAJ+K (Clean)
  • Définir le profil approprié dans le cadre du Projet > Construire Paramètres > Signature de Code
  • Assurez-vous que 'Utilisation de Droits" n'est pas cochée dans le cadre des Objectifs > Résumé

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: