Nous distribuons des applications via un compte Enterprise, en utilisant une URL itms-services://
. Cela a toujours bien fonctionné, mais après avoir installé iOS 7.1 beta sur notre iPad, il refuse de l'installer. Au lieu de cela, nous obtenons simplement le message générique Cannot connect to example.com
que iOS affiche de manière inopinée en cas de problème de téléchargement de l'application.
J'ai été incapable de trouver quoi que ce soit ici sur SO, sur Google ou dans les notes de version 7.1 pour suggérer ce qui pourrait être à l'origine du problème.
J'ai trouvé le problème en connectant l'iPad à l'ordinateur et en visualisant la console via XCode Organizer lors de l'installation de l'application. L'erreur s'avère être:
Impossible de charger l'URL du manifeste non https: http://example.com/manifest.plist
Il s'avère que dans iOS 7.1, l'URL du fichier manifest.plist
doit être HTTPS, où nous utilisions HTTP. Changer l'URL en HTTPS a résolu le problème.
C'est à dire.
itms-services://?action=download-manifest&url=http://example.com/manifest.plist
devient
itms-services://?action=download-manifest&url=https://example.com/manifest.plist
Je suppose que vous devez avoir un certificat SSL valide pour le domaine en question. Nous l'avons déjà fait, mais j'imagine que vous aurez des problèmes sans cela.
ingconti a raison.
www.dropbox.com
par dl.dropboxusercontent.com
dans le lien, comme https://dl.dropboxusercontent.com/s/qgknrfngaxazm38/app.plistdownload.html
avec un lien au format <a href="itms-services://?action=download-manifest&url=https://dl.dropboxusercontent.com/s/qgknrfngaxazm38/app.plist">INSTALL!!</a>
download.html
vers une liste déroulantewww.dropbox.com
par dl.dropboxusercontent.com
dans le deuxième lien également, par exemple https://dl.dropboxusercontent.com/s/gnoctp7n9g0l3hx/download.htmlMaintenant, visitez https://dl.dropboxusercontent.com/s/gnoctp7n9g0l3hx/download.html
sur votre appareil, vous pouvez installer l’application comme avant.
QUEL MONDE MERVEILLEUX!
En réponse à la réponse de Mark Parnell, un moyen simple et rapide de résoudre ce problème consiste à placer le plist manifeste dans Dropbox, puis à utiliser l'interface Web de Dropbox pour obtenir un lien https direct ("Lien de partage" -> " Obtenir le lien '->' Télécharger ').
Le ipa réel peut rester où vous l'avez toujours servi. Vous aurez besoin de coder l'URL de l'URL du plist avant de l'insérer dans la requête de l'URL itms-servivces (bien que le remplacement de tout & s par% 3D puisse fonctionner).
Un inconvénient est que la boîte de dialogue d'installation va maintenant indiquer "dl.dropbox.com veut installer [que ce soit]".
Il est vrai que, à l'avenir, vous devrez effectuer tous les déploiements d'OTA sur https à l'aide de iOS 7.1. Honte à Apple pour ne pas avoir documenté cela.
Pour ceux d'entre vous qui recherchent une meilleure solution interne que de dépendre de Dropbox ou de devoir débourser de l'argent pour obtenir un certificat, vous pouvez avoir une solution si vous suivez les étapes décrites dans le conseil n ° 5 ici: http: //blog.httpwatch.com/2013/12/12/five-tips-for-using-self-signed-ssl-certificates-with-ios/
L'essentiel est le suivant:
Ce n'est pas la même chose que de simplement produire un certificat auto-signé. Dans cette solution, vous agissez également en tant que votre propre autorité de certification privée. Si votre certificat racine installé sur votre périphérique Apple n'est pas marqué comme étant approuvé (vert), il y a quelque chose qui ne va pas. Fais le sur.
Cela fonctionne absolument.
Mise à jour: 13/03/2014 - J'ai fourni un petit utilitaire de ligne de commande qui simplifie l'ensemble du processus. Vous pouvez l'obtenir à l'adresse suivante: https://github.com/deckarep/EasyCert/releases
J'ai eu le même problème et bien que j'utilisais déjà un serveur SSL, changer les liens en https ne fonctionnait pas car il y avait un problème sous-jacent.
Ce bit en surbrillance m'a dit que devrait avoir l'option de faire confiance au certificat, mais comme il s'agit de l'App Store, travaillant via Safari, cette suggestion de récupération n'est tout simplement pas présentée.
Je n'étais pas satisfait des solutions existantes car:
J'ai finalement trouvé une solution en créant une autorité de certification racine auto-signée et en générant le certificat SSL de notre serveur à l'aide de cette option.
J'ai utilisé Keychain Access et OSX Server, mais il existe d'autres solutions valables à chaque étape.
D'après ce que je comprends, les autorités de certification sont utilisées pour vérifier que les certificats sont authentiques. Puisque nous sommes sur le point d'en créer un nous-mêmes, ce n'est pas exactement secure , mais cela signifie que vous pouvez faire confiance à tous les certificats d'une autorité donnée. Une liste de ces autorités est généralement incluse par défaut dans vos navigateurs, car elles sont en fait approuvées. (GeoTrust Global CA, Verisign, etc.)
Dans notre cas, les demandes de signature de certificat sont générées par l'administrateur du serveur. C'est simplement un fichier qui demande "Puis-je avoir un certificat avec cette information pour mon site s'il vous plaît".
En tant qu'autorité de certification à nouveau, c'est à vous de décider si la personne qui vous a envoyé le REA est authentique et si elle ne prétend pas être quelqu'un d'autre. Les vraies autorités ont leurs propres façons de le faire, mais puisque vous êtes sûr de l'être, votre vérification devrait être tout à fait certaine :)
Vous pouvez cliquer sur Continuer dans les autres options.
L'application Mail s'ouvrira pour vous permettre d'envoyer le certificat. Au lieu d'envoyer un courriel, cliquez dessus avec le bouton droit de la souris et enregistrez-le.
Nous devons maintenant configurer le serveur pour utiliser le certificat que nous venons de créer pour son trafic SSL.
Chaque appareil sur lequel vous devez installer des applications doit disposer d'une copie de cette autorité de certification afin de savoir qu'il peut faire confiance aux certificats SSL de cette autorité.
Assurez-vous que vos liens de plist sont https
Je peux confirmer que cela fonctionne, mais vous devez mettre HTML ET plist sur la liste déroulante. Cela fonctionne aussi pour les OTA non-entreprises, c'est-à-dire que vous voulez partager l'application avec votre dev. équipe.
J'ai fait:
a) sur mon site j'ai créé une page avec ce lien:
.. href = "https://dl.dropboxusercontent.com/u//(y votre ID de base de données) /ipa.html"> MyApp
b) sur DropBox, j'ai écrit une autre page HTML:
.. https://dl.dropboxusercontent.com/u/(votre ID de base de données) /MyApp.plist "> Appuyez pour installer MyApp
c) déplacé la plist sur DropBox mais en la laissant à POINT sur mon ancien serveur (pas de https)
Ouvrez le terminal et lancez la commande: curl -i https: // (le chemin du fichier .ipa n'est pas plist)
Cela vous dira si l'installateur peut ou non voir le fichier IPA. Si vous exécutez la commande curl avec le '-i', vous verrez la réponse complète et ce n'est probablement pas le fichier IPA. C’est la réponse que le programme d’installation voit. Par conséquent, s’il ne renvoie pas HTTP 200 et IPA, vous devrez le renvoyer de votre côté.
Le programme d'installation ITMS n'enregistre aucun contexte de Safari. Si vous vous êtes authentifié sur un portail sécurisé dans Safari, les cookies d'authentification ne sont pas transmis à l'installateur. C'est-à-dire que l'installateur doit pouvoir voir l'application sans authentification, ce qui pourrait expliquer le message "Connexion impossible au serveur".
J'ai eu le même problème et fait comme mentionné ci-dessus.
Les deux pages ont fonctionné avec succès pour installer l'application dans iphones avec ios 7.1
Mais maintenant, les iphones avec ios 7.0x ne peuvent pas installer l’application.
J'ai créé une nouvelle question: le déploiement de l'application adhoc mise à niveau ne fonctionne pas sur iOS précédant la version 7.1
Les deux problèmes sont étroitement liés et liés également par le manque de références officielles.
Un type sympa a résolu le problème en utilisant le certificat de classe 1 StartSSL et la configuration Apache partagée qui ajoute la prise en charge du certificat (fonctionnera avec n’importe quel certificat) et le code permettant de modifier automatiquement les liens dans les fichiers * .plist existants. Trop long à copier, voici donc le lien: http://cases.azoft.com/how-to-fix-certificate-is-not-valid-error-on-ios-7/
Si vous possédez AWS S3, cela fonctionne également comme un charme. Bien. Relativement parlant :-)
Créez un compartiment pour vos documents publicitaires dans AWS, ajoutez un fichier d'index (il peut s'agir simplement d'un fichier index.html vide), puis utilisez un client pouvant se connecter à S3, tel que CyberDuck ou Coda (j'ai utilisé Coda), puis sélectionnez Ajouter. Pour obtenir une fenêtre de connexion) puis définissez les connexions comme suit:
Ensuite, créez votre entreprise ad hoc en XCode et assurez-vous d'utiliser https://s3.amazonaws.com/votre-bucket-name/votre-ad-hoc-folder/votre-app.ipa as l’URL de l’application et chargez-le dans votre nouveau répertoire de compartiment S3.
Votre lien itms doit correspondre, c'est-à-dire itms-services: //? Action = download-manifest & url = https://s3.amazonaws.com/your-bucket-name/your-ad-hoc-folder/your- app.plist
Et voila.
Ceci concerne uniquement les URL AWS génériques. Je n'ai pas essayé d'utiliser d'URL personnalisées sur AWS. Il est donc possible que vous deviez procéder différemment.
J'étais déterminé à essayer de faire fonctionner la solution de James Webster ci-dessus, mais je ne pouvais pas la faire fonctionner avec Plesk.
Au lieu d'utiliser Dropbox pour la distribution d'entreprise, vous pouvez utiliser TestFlight pour la distribution d'applications signées par l'entreprise.
https://www.testflightapp.com/
Il s'agit d'un service fantastique pour l'hébergement et la distribution des versions de développement ad hoc et des versions d'entreprise.
En complément des réponses précédentes à propos de Dropbox, j’ai implémenté l’arborescence de fichiers suivante, par exemple, seul le fichier PLIST doit être chargé dans Dropbox:
utilisez l'option "Partager le lien avec Dropbox" qui copie le lien dans votre presse-papier. Ce lien doit être copié dans votre fichier html dans la requête de l'URL itms-servivces après avoir modifié la partie www.dropbox.com
de dl.dropboxusercontent.com
. Notez que l'URL a codé le lien comme suggéré par @Mike mais je ne teste pas sans le faire. La requête de l'URL itms-services devrait ressembler à ceci: itms-services://?action=download-manifest&url=https%3A%2F%2Fdl.dropboxusercontent.com%2Fs%2FYourShortDropboxLink.plist
télécharger le fichier html sur votre serveur en http. Notez que le fichier html contient à la fois des liens vers des fichiers ipa et des fichiers de provisioning.
A partir de maintenant, seul le fichier ipa doit être modifié pour fournir les prochaines versions d'applications par OTA à vos bêta-testeurs. Jusqu'à ce que Apple change encore les règles de sécurité.
Je rejoins ici après le très simple fichier HTML que j'utilise:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>iPhone app for test</title>
</head>
<body>
<h1>iPhone app for test</h1>
<br/>
<ul>
<li><a href="http://www.yourdomain.com/with/directories/provision/v.last/yourprovision_adhoc.mobileprovision">
Install Provisioning File</a></li>
<li><a href="itms-services://?action=download-manifest&url=https%3A%2F%2Fdl.dropboxusercontent.com%2Fs%2FYourShortDropboxLink.plist">
Install Application</a></li>
</ul>
</body>
</html>
Après avoir lu cet article, le téléchargement de mon application me posait toujours un problème. Le problème était dû au certificat SSL auto-signé.
J'ai trouvé une solution à ce problème. Vous devez télécharger votre fichier de certificat avec l'extension ".crt" sur le Web et en saisir l'adresse dans votre safari mobile. Le système vous demande d'ajouter votre certificat à la liste des certificats de confiance. Après cette opération, vous pourrez installer votre application ad-hoc.
La solution universelle consiste à connecter votre appareil à un Mac et à observer ce qui se passe pendant l'installation. J'ai une erreur:
Impossible de charger le manifeste de téléchargement avec l'erreur sous-jacente: Domaine d'erreur = Code NSURLErrorDomain = -1202 "Connexion au magasin impossible" UserInfo = 0x146635d0 {NSLocalizedDescription = Connexion impossible au magasin, NSLocalizedRecoverySuggestion = Voulez-vous vous connecter au serveur de toute façon ?, NSLocalizedFailureReason = Une connexion sécurisée n'a pas pu être établie. Vérifiez vos paramètres de date et heure. , NSErrorFailingURLStringKey = https://myserver.com/app/manifest.plist , NSUnderlyingError = 0x14678880 "Le certificat de ce serveur n'est pas valide. Vous vous connectez peut-être à un serveur se faisant passer pour" myserver.com ", ce qui pourrait mettre en péril vos informations confidentielles.", NSURLErrorFailingURLPeerTrustErrorKey =, NSErrorFailingURLKey = https : //myserver.com/app/manifest.plist }
Il y avait même la suggestion dans cette erreur de vérifier les paramètres de date. Pour une raison quelconque, la date était le 1er janvier 1970. Le réglage correct de la date résolvait le problème.
Notre équipe utilise dropbox pour la distribution ad-hoc qui utilise https, mais notre application n’a toujours pas été installée. Après beaucoup de problèmes, nous nous sommes rendus compte que le champ title est également requis. Chaque fois que nous avons envoyé un lien sans ce champ, Safari a ignoré le lien et n'a pas invité l'utilisateur à installer. Parfois, pour des tests de développement rapides, nous avons ignoré le nœud de titre dans le fichier XML et ne l'avons pas renseigné. Si cela est utile pour quiconque ayant ce problème, assurez-vous que votre .plist contient les noeuds suivants remplis:
....
<string>software</string>
<key>title</key>
<string>Your App Name</string>
...