61 votes

Comment distribuer une application ios sans fil sans gérer les UDIDs et sans recompilation ?

J'ai besoin de savoir quelles méthodes les gens utilisent pour distribuer (en interne) la démo d'une application iPad sans fil sans avoir à gérer l'UDID ?

Je n'ai pas besoin d'une solution comme testflight ou betabuilder, toutes ces solutions me demandent de gérer les UDID dans le portail du profil de provisionnement d'Apple.

Je pose cette question parce que je vois un autre studio faire une méthode beaucoup plus intelligente en ce moment et je souhaite savoir comment ils ont fait - Avec un lien qu'ils nous ont donné, nous pouvons installer leur application de démonstration à partir d'un simple HTML over the air, et un profil de provisionnement apparaît comme par magie dans mon iPad. Tout cela s'est passé sans que je leur dise l'UDID de mon iPad, et donc définitivement sans qu'ils aient à recompiler le projet.

Comment ont-ils fait ?

76voto

Davido Points 2056

Je distribue mes applications sans fil depuis plusieurs mois maintenant, sans aucun problème. Il est vrai que je distribue sous la licence Enterprise, qui coûte 299 $ par an et est destinée à un usage professionnel interne. Cela peut fonctionner avec une licence de développeur normale, mais il faut faire des tests pour s'en assurer. J'imagine que le processus est le même si cela fonctionne. J'utilise XCode 4, donc cela peut être légèrement différent si vous utilisez une autre version. En gros, vous devez ajouter un fichier Entitlements.plist à vos ressources :

New->File->Code Signing->Entitlements

et avant de distribuer, vous devez changer :

"Can be debugged" to NO

Assurez-vous que votre projet est configuré avec les profils de signature de code corrects. Maintenant, allez à :

Product->archive

puis avec votre entrée nouvellement construite, cliquez sur : Partager

Select "iOS App Store Package (.ipa)"

et choisissez le profil de distribution approprié que vous voulez utiliser. Cliquez sur Suivant, puis choisissez un emplacement pour enregistrer le fichier .ipa. Avant de cliquer sur Enregistrer, vous devez vérifier

Save for Enterprise Distribution

Le fichier .ipa doit être sauvegardé sur un serveur FTP, ou du moins c'est ainsi que j'ai réussi à le faire fonctionner. Dans le champ "Application URL", utilisez le chemin d'accès au fichier .ipa que vous allez sauvegarder, par exemple,

ftp://ftp.company.com/Installers/myApp.ipa

Donnez-lui un titre, puis dans "URL de la grande image" et "URL de la petite image", indiquez le chemin d'accès à vos fichiers d'icônes de grande (512x512) et de petite (72x72) taille (je développe pour l'iPad, donc l'iPhone peut être différent). Par exemple,

ftp://ftp.company.com/Installers/small.png

Enregistrez le fichier .ipa. Maintenant vous devez placer votre fichier .mobileprovision sur le serveur ftp. Toute personne qui veut exécuter l'application doit avoir le fichier installé, sinon elle ne pourra pas l'exécuter. Je ne suis pas sûr que vous ayez besoin d'un fichier .mobileprovision contenant tous les identifiants des appareils si vous ne faites pas partie du programme d'entreprise, mais vous pouvez essayer et voir. Une fois que vos fichiers sont tous sur le serveur ftp, vous devrez créer un e-mail contenant les liens vers les deux fichiers, mais le lien pour le fichier .ipa doit être dans un format spécial. Pour le fichier de provisionnement :

ftp://ftp.company.com/Installers/profile.mobileprovision

et pour le fichier .ipa :

itms-services:///?action=download-manifest&url=ftp%3A%2F%2Fftp.company.com%2FInstallers%2FmyApp.plist

Maintenant, lorsque vous envoyez cet e-mail à quelqu'un, il lui suffit de télécharger et d'installer le fichier .mobileprovision, puis le fichier .ipa. Voilà, il exécute votre programme. Faites-moi savoir si cela fonctionne sans l'abonnement d'entreprise. J'imagine que oui, tant que le fichier .mobileprovision contient les identifiants des appareils.

Edit :

J'ai trouvé un bien meilleur moyen de distribuer des applications, mais il nécessite que vous disposiez d'un serveur PHP. Il s'agit de créer un fichier PHP qui génère le fichier plist à la volée et le renvoie. Dans les liens pour la grande image, la petite image et le fichier ipa, vous passez des liens vers d'autres fichiers PHP qui renvoient ces éléments pour votre programme spécifique. Lorsque vous voulez installer une application à partir d'un lien, il vous suffit de passer l'URL comme ceci :

itms-services:///?action=download-manifest&url=http://mycompany.com/php/installApp.php?app=myappname

Dans vos fonctions PHP, il vous suffit d'insérer myappname dans les autres appels PHP, ce qui permet de récupérer les fichiers appropriés sur votre serveur. En utilisant cette méthode, vous n'avez pas besoin de stocker les fichiers plist de vos applications au fur et à mesure qu'elles sont générées, ce qui facilite la mise à jour de vos applications puisque vous n'avez pas besoin de retaper les informations à chaque fois, ne cochez même pas la case pour la distribution aux entreprises, enregistrez simplement le fichier ipa par-dessus l'ancien et vous êtes prêt à partir. En outre, il est facile de mettre en œuvre des fonctions de sécurité et de connexion avec cette méthode. En outre, vous n'avez pas besoin d'installer spécifiquement le fichier de provision mobile, car il s'installe de lui-même lorsque vous installez l'application. Il est stocké dans le fichier ipa.

Edit :

Juste pour clarifier la méthode PHP, vous créez un fichier php qui crée des fichiers plist. Copiez un fichier plist standard créé à partir d'une distribution d'entreprise, puis dans votre fichier php, définissez les en-têtes comme ceci :

$pathToAddFi = "installers/".$_GET['app'].".plist"; //points to the php server file location of your .ipa files. when you call this php script, you pass in the name of the ipa file you want to install. Note: this location doesn't actually contain any plist files!
$root = "http://yourserver.com/php/root/"; //path to this PHP file's directory

header('content-type: application/xml');
header('Content-Disposition: attachment; filename='.basename($pathToAddFi));
header('Content-Transfer-Encoding: binary');

Puis vous construisez une chaîne remplaçant les urls de vos articles comme ceci :

<string>".$root."ipa_serve.php?app=". $_GET['app']."</string>

et terminez-la avec un dernier en-tête avant d'envoyer la chaîne xml :

header('Content-Length: ' . strlen($myXml));

Enfin, vous créez un fichier php pour servir votre fichier ipa, un pour servir votre grande image, et un pour servir votre petite image. Cela devrait être assez simple, sauf si vous n'êtes pas très familier avec PHP.

8voto

Jon Marks Points 61

Je viens de vivre la même chose. Je pense que la grande différence est le profil de distribution d'entreprise (299 $ par an) - si vous avez l'un de ces profils, vous n'avez pas besoin d'avoir les UDID des appareils dans la liste. Si vous avez un contrat normal de 99 $ par an, vous devez le faire. C'est aussi simple que cela.

La bonne nouvelle est qu'Apple a récemment abandonné la restriction des "500 employés", de sorte que toute entreprise peut en obtenir un : http://blog.apperian.com/2010/10/apple-opens-ios-developer-enterprise.html

Il vous suffit d'obtenir un numéro DUNS gratuit auprès de Dun and Bradstreet, ce qui prend 30 jours. Nous avons demandé le nôtre et nous verrons comment tout cela se passe.

7voto

Simon Whitaker Points 11881

Vous avez besoin d'un profil d'approvisionnement, mais il est intégré au fichier .ipa et ne doit pas être installé via iTunes en tant que programme d'installation distinct.

Vous devriez vérifier TestFlight une application web pour gérer les distributions de builds OTA Ad Hoc ; c'est fantastique. Elle fait toutes sortes de choses intelligentes, y compris collecter les UDIDs des appareils de vos utilisateurs pour vous. (Vous, le développeur, devez toujours les saisir dans le portail de provisionnement de l'iPhone Dev Center, mais l'utilisateur peut rester parfaitement ignorant de l'existence même des UDID, sans parler du fait qu'il doit vous les envoyer. C'est peut-être ce que votre patron utilisait auparavant).

2voto

jmans Points 3018

Je ne connais pas de moyen d'accomplir cela sans l'UDID de l'utilisateur. Je pense que le développeur avait déjà l'UDID de votre patron auparavant et qu'il a créé un nouveau profil de provisionnement, ou que votre patron testait une application web mobile.

Vous pouvez effectuer des distributions ad hoc un peu plus facilement maintenant avec la distribution d'applications sans fil.

iOS 4 : distribution d'applications sans fil pour les applications internes

2voto

FreeAsInBeer Points 9791

L'application à laquelle vous faites référence s'appelle Béta Builder . Mon patron l'a utilisé pour la première fois aujourd'hui et ça a bien marché. Il vaut vraiment 2 $.

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