Identifiant de bundle et certificate push… Erreur de droit d’access aps-environment

J’ai lu Où est-ce que xcode prend l’identifiant de l’application? , Format de l’identificateur de bundle XCode à partir de {PRODUCT_NAME} , et charge plus mais …

J’essaie d’obtenir des notifications push pour obtenir le redoutable

“Erreur Domain = NSCocoaErrorDomain Code = 3000” aucune chaîne de droit ‘aps-environment’ valide trouvée pour l’application

Je suis assez certain d’avoir bien suivi toutes les étapes, y compris:

  • fait le certificate push bien avant le certificate de provisioning
  • fait un ‘Entitlements.plist’
  • ajout d’une valeur booléenne get-task-allow et mise à true (version ad hoc)

Le seul pense que je ne peux pas tout à fait comprendre, c’est l’identifiant du paquet

Le certificate push est pour

XXXXXXXXXX.com.julianbaker.pwcnewsuk 

L’identificateur de paquet dans PwCNewUK-Info.plist est destiné à

 com.julianbaker.${PRODUCT_NAME:rfc1034identifier} 

Si je le change manuellement en

 com.julianbaker.pwcnewsuk 

Je reçois une erreur d’incompatibilité UDID car l’application est considérée comme PwCNewsUK

Quand j’ai googlé cela, il semble y avoir une certaine confusion sur la question, mais il semble qu’ils doivent correspondre?

QUESTION:

Que devrait être le Bundle Indentifer pour correspondre au certificate push de
XXXXXXXXXX.com.julianbaker.pwcnewsuk?

QUESTION:

Dois-je append un droit “aps-environment” au profil d’approvisionnement, et si oui, où et comment? (Voir, entre autres, http://www.airplaysdk.com/node/3174 )

Aimer le développement de l’iPhone mais ça peut parfois être un headbanger!

J’ai trouvé cette question lorsque je passais d’un environnement de développement à un environnement de production sur une application sur laquelle je travaillais. Ce processus impliquait la création d’un nouveau profil, d’un nouvel identifiant d’application, etc. J’ai créé l’ID d’application et un profil, mais l’agent de groupe devait configurer les notifications push. J’ai rencontré le problème de “pas de chaîne d’autorisation valide” aps-environment “trouvée pour l’application” lorsque j’ai essayé de reprendre les tests avec le nouveau profil (une fois l’application configurée pour les notifications push). Je me suis alors souvenu d’avoir lu un petit avertissement dans la documentation:

“Vous devez modifier le profil d’une manière ou d’une autre (par exemple, basculer une option) pour que le portail génère un nouveau profil de provisioning. Si le profil n’est pas si” sale “, vous recevez le profil sans les droits de transmission. ”

Source: Guide de programmation des notifications locales et push

Pour moi, le “nettoyage” du profil d’approvisionnement et sa réinstallation étaient tout ce qui était nécessaire pour résoudre le problème. Selon la documentation, cela était nécessaire car le profil d’approvisionnement a été créé avant la configuration de l’application pour les notifications push. Cela peut ou non aider quelqu’un, mais cela explique probablement (et élimine) la nécessité d’append manuellement quelque chose au profil d’approvisionnement.

J’ai rencontré le même problème “aucune chaîne de droit d’access” aps-environment “trouvée pour l’application”, mais les solutions ci-dessus n’ont pas fonctionné pour moi.

Je n’ai pas trouvé de très bonne documentation sur cette erreur ni même sur la clé “aps-environment”.

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

Ouvrez votre certificate de provisioning de développement, “Appname.mobileprovision” avec un éditeur de texte, recherchez la clé “Droits”, puis ajoutez toutes les valeurs trouvées ici dans votre fichier de droits référencé par votre paramètre Droits de signature de code.

Voici un exemple des clés / valeurs que vous trouverez à l’intérieur:

 application-identifier xyz.com.xyz.xyz aps-environment development com.apple.developer.ubiquity-container-identifiers  xyz.*  com.apple.developer.ubiquity-kvstore-identifier xyz.* get-task-allow  keychain-access-groups  xyz.*  

Après avoir ajouté toutes ces valeurs à mon fichier de droits, mon application se construit avec succès et je peux enfin recommencer à travailler sur les notifications Push.

Je ne suis pas sûr que ces valeurs soient supposées être ajoutées automatiquement à votre fichier de droits par XCode, mais elles n’étaient certainement pas générées pour moi dans mon projet.

Installer:

Mac OS X 10.8 + Xcode 4.4

Ma solution simple:

  1. Relancez votre profil de configuration ad hoc après avoir configuré les notifications push pour votre ID d’application et les importer dans Xcode.
  2. Jetez un œil dans votre dossier .xcodeproj (clic droit -> Afficher le contenu du paquet) et supprimez le dossier xcuserdata .
  3. C’est tout 😉

Quelques indications sur cette question:

Après avoir activé les notifications Push pour mon application, je ne pouvais plus créer de fichiers ad hoc. J’ai rencontré des erreurs dans mon journal de la console sur mon iPhone tout en essayant d’installer mon application comme celles-ci:

 Apr 1 20:56:10 unknown installd[384] : entitlement 'keychain-access-groups' has value not permitted by a provisioning profile Apr 1 20:56:10 unknown installd[384] : entitlement 'get-task-allow' has value not permitted by a provisioning profile Apr 1 20:56:10 unknown installd[384] : entitlement 'application-identifier' has value not permitted by a provisioning profile Apr 1 20:56:10 unknown installd[384] : 2ff66000 verify_signer_identity: Could not copy validate signature: -402620394 Apr 1 20:56:11 unknown installd[384] : 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] : MobileInstallationInstall: failed with -1 Apr 1 20:56:11 unknown installd[384] : 2ff66000 install_application: Could not preflight application install Apr 1 20:56:11 unknown installd[384] : 2ff66000 handle_install: API failed Apr 1 20:56:11 unknown installd[384] : 2ff66000 send_message: failed to send mach message of 71 bytes: 10000003 Apr 1 20:56:11 unknown installd[384] : 2ff66000 send_error: Could not send error response to client 

Une note technique recommande l’utilisation de codesign -d --entitlements - .app pour vérifier si votre application est correctement signée pour les notifications push Apple. Si la sortie de la commande codesign ne dispose pas d’un ensemble aps-environnement pour la production ou le développement, il y a quelque chose de louche!

Pour autant que je sache, mes applications signées avec un profil de .app ont toujours une fonctionnalité embedded.mobileprovision dans le .app avec une partie spécifique, par exemple:

 Entitlements  application-identifier ABCDEFGH.com.myappname.tester aps-environment production get-task-allow  keychain-access-groups  ABCDEFGH.*   

Après avoir utilisé codesign, je me suis rendu compte que le binary réel dans .app contenait également du XML, qui disait quelque chose de très différent de mon fichier embedded.mobileprovision :

    application-identifier ABCDEFGH.com.myappname.tester get-task-allow  keychain-access-groups  ABCDEFGH.com.myappname.tester    

Je suppose que c’est la cause du message d’erreur que nous expérimentons tous. (bien que cette erreur puisse avoir des racines différentes ainsi que d’autres messages sur stackoverflow suggèrent)

 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). 

J’imagine qu’il existe un bogue dans Xcode qui empêche la mise à jour des parameters de votre plist dans vos schémas, ce qui entraîne la signature de votre application avec le mauvais profil d’approvisionnement. Donc, en supprimant le dossier xcuserdata, vous supprimez tous les schémas. Par conséquent, Xcode les recréera la prochaine fois avec les parameters appropriés et vous serez heureux à nouveau.

Essentiellement, la réponse est la même vague que tout le monde dit

  • Assurez-vous d’avoir un “Entitlements.plist” ajouté (New File / Code Signing / Entitlements)
  • Ajouter “get-task-allow” (booléen désactivé) à Entitlements.plist
  • Ajouter la paire “aps-environment” “production” à Entitlements.plist – Cette dernière étape est peut-être inutile, mais c’était l’une des étapes que je faisais juste avant de travailler
  • Supprimez les anciens fichiers mobileprovision de votre iPhone / iPod (dans Paramètres / Général),
  • Supprimer les anciens fichiers mobileprovision de XCode Organizer
  • Supprimer l’application de l’iPhone / iPod
  • Quittez XCode
  • Télécharger une nouvelle copie du certificate d’approvisionnement
  • Recherchez la paire “production” “aps-environment” dans le certificate avec un éditeur de texte
  • Démarrer XCode
  • Ajouter un nouveau fichier mobileprovision en faisant glisser l’icône XCode Doc
  • Assurez-vous d’avoir réaffecté / atsortingbué le bon certificate dans la cible Info: Code Signing: Code Signing Identity
  • Vérifiez que les résultats de la construction pour le voir, il utilise le profil correct et est signé correctement

Répétez ces étapes calmement jusqu’à ce que cela fonctionne, il m’a fallu environ cinq allées de différentes combinaisons. Je suis également passé du développement à l’ad-hoc, ce qui n’est apparemment pas nécessaire, mais j’ai garanti un nouveau fichier mobileprovision.

En utilisant XCode4 et en recevant la même chaîne de droit “aps-environment” trouvée pour l’application “je devais procéder comme suit:

  • Supprimer les anciens profils de provisionnement des panneaux Bibliothèque + Périphérique dans l’Organiseur
  • Régénérer le nouveau profil avec APN dev activé à partir du site Web du portail de développeur
  • Assurez-vous que le nouveau profil est ajouté aux panneaux Bibliothèque + Périphérique dans l’Organiseur
  • Supprimer manuellement mon application de mon appareil (en maintenant le bouton enfoncé et en appuyant sur X)
  • CMD + OPT + MAJ + K (Clean Build Folder) et CMD + SHIFT + K (Clean)
  • Définissez le profil approprié sous Projet> Paramètres de génération> Signature de code
  • Assurez-vous que l’option “Utiliser les droits” n’est pas cochée sous Cibles> Résumé

Sous “Projet” -> “Paramètres de construction” -> “Signature de code”, assurez-vous d’avoir sélectionné le bon profil d’approvisionnement (celui avec Push activé).

C’était tout ce que j’avais besoin de changer pour que cela fonctionne.

Rien de ce qui précède n’a fonctionné pour moi!

  1. Supprimer tous les profils d’approvisionnement dans l’ organiseur Xcode
  2. Supprimer tous les certificates de développeurs dans Keychain
  3. Supprimer tous les profils de provisionnement dans le périphérique iPhone
  4. Dans iOS Provisioning Portal , supprimez le profil de provisioning de développement créé automatiquement par Xcode.
  5. Créez un nouveau profil d’approvisionnement en atsortingbuant la combinaison correcte (certificate / appID / périphérique)
  6. Téléchargez le nouveau profil d’approvisionnement
  7. Importer le nouveau profil d’approvisionnement dans l’ organiseur Xcode
  8. CMD + Option + Maj + K
  9. CMD + Maj + K
  10. CMD + R
  11. Hourra 🙂

Assurez-vous que vous utilisez l’application correctement avec le profil d’approvisionnement.

Ce que je veux dire, c’est que si vous avez activé votre application pour les notifications Push uniquement pour la dissortingbution et que vous essayez d’obtenir que les notifications push fonctionnent via la construction avec XCode, cela ne fonctionnera pas.

Je me suis heurté à ce problème et, en activant la notification push pour Development pour l’ID de l’application, puis en utilisant le profil de provisioning de développement, je n’ai plus eu l’erreur et la vue d’alerte correcte m’a demandé si je voulais recevoir des notifications push.

la solution pour 10.8 Xcode 4.4 consiste à ouvrir le fichier appname.entitlements

et si la clé DataProtectionClass a la valeur NSFileProtectionComplete , supprimez-la!

La suppression de cette clé me ​​permet de tester des applications à partir de Xcode sur des appareils (cela n’affectait pas la simulation).

J’ai eu le même problème. Pour moi le correctif était comme ceci:

  1. Suppression et rechargement des profils d’approvisionnement de l’organiseur.
  2. Sélectionné mon profil d’approvisionnement nommé sous les parameters du projet-> signature de code. D’une certaine manière, il voulait utiliser l’identité blabla.

Le profil générique ([préfixe]. *) Ne fonctionne pas lorsque vous essayez d’exécuter une application compatible APN, vous devez spécifier le profil activé par APN.

Je viens de comprendre cela après quelques heures, donc en plus de ce que JulianB a dit,

  • assurez-vous d’avoir une icône d’application . Vous en avez probablement un, mais il m’est arrivé d’append de la pression lorsque nous étions entre des versions d’icône. J’ai essayé beaucoup de choses différentes et à la fin, c’était tout ce qu’il fallait pour que ça ne soit même pas un problème de cert ou de signature.
  • J’ai aussi lu un fichier d’image corrompu pourrait aussi être la cause
  • Je n’ai pas ajouté / vu une clé aps-environment dans mes droits.
  • nettoyer toutes les cibles avant de construire

Pour moi, cela a fonctionné après avoir changé l’identificateur de paquet en quelque chose de aléatoire. Assurez-vous que l’erreur de signature apparaît bien (supprimez tous les profils de provisionnement de l’organiseur et du périphérique et effectuez une nouvelle génération de CMD + OPT + SHFT + K puis CMS + SHFT + K puis CMD + R ) appropriée.

Ma solution consistait à supprimer et à créer à nouveau le profil d’approvisionnement du développement . Il a été répertorié comme “Invalide” – pas expiré et aussi renouveler échoué (Xcode 4.3.2 et iOS 5.1)

Assurez-vous d’avoir sélectionné correctement. Profil d’approvisionnement. J’ai constaté que j’essayais d’utiliser le profil Team Provisioning ( pour l’identifiant d’application: * ) Plus bas dans la liste, il y en avait un pour l’application.

Mon problème était ceci. J’ai créé une application qui avait configuré des notifications push et, dans un délégué d’application, je m’inscrivais aux notifications push avec:

 [[UIApplication sharedApplication] registerForRemoteNotificationTypes:(UIRemoteNotificationTypeAlert | UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound)]; 

Mais avant de lancer l’application, je devais créer un nouveau profil d’approvisionnement sur un autre portail de développeur. J’ai créé un nouvel identifiant d’application, un nouveau provisionnement pour le développement et la dissortingbution, de nouveaux provisionnements téléchargés, dans la cible de l’application. J’ai aussi changé l’identifiant du bundle. Mais je recevais cette erreur.

Le problème était que le nouvel AppId n’était pas configuré pour les notifications push, mais l’appel

 [[UIApplication sharedApplication] registerForRemoteNotificationTypes:(UIRemoteNotificationTypeAlert | UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound)]; 

était en train de créer une erreur. Lorsque j’ai configuré les notifications push, l’erreur ne s’est plus affichée.

J’ai eu ce problème, le scénario était le suivant:

J’avais configuré un identifiant d’application sans prise en charge des notifications push. J’utilise Xcode 5.1 + iOS 7.1

Plus tard, édité l’ID d’application pour append des notifications push dans le développement et la production.

Création des certificates APN pour les deux.

Lorsque vous testez PN en utilisant votre appareil connecté à Xcode, tout fonctionne correctement. Le problème apparaît lorsque vous lancez l’application en production, vous continuez à recevoir:

 "Error Domain=NSCocoaErrorDomain Code=3000 "no valid 'aps-environment' entitlement ssortingng found for application" UserInfo=0x15b200 {NSLocalizedDescription=no valid 'apsenvironment' entitlement ssortingng found for application}" error. 

La solution qui a fonctionné pour moi était :

  1. Supprimer les profils d’approvisionnement pour le développement et la dissortingbution (portail Xcode et Developer).
  2. Supprimez votre identifiant d’application (portail développeur).
  3. Créez un nouvel identifiant d’application avec la prise en charge des notifications Push pour le développement et la production.
  4. Créez de nouveaux profils de provisioning à l’aide du nouvel identifiant d’application .
  5. Installez-les sur Xcode.
  6. Test de développement et de dissortingbution.

entrer la description de l'image ici

Faire le profil droit et cela fonctionne pour moi. Espérons que cette aide.

Dans mon cas, la solution à cette erreur s’est avérée simple après des heures de bricolage avec des certificates …

Dans l’onglet Capabilities de la configuration du projet, j’ai dû activer l’indicateur Push Notification pour que les fichiers d’environnement soient générés.

macOS Sierra 10.12 – Xcode 8.1

entrer la description de l'image ici

En fait, votre profil provisoire a été supprimé du site développeur Apple.