web-dev-qa-db-fra.com

Comment distribuer une application ios sans fil sans gérer les UDID et la recompilation

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

Je n'ai pas besoin d'une solution comme testflight ou betabuilder, tout cela nécessite de gérer UDID dans le portail de profil d'approvisionnement Apple.

Je pose cette question parce que je vois maintenant un autre studio faire des choses beaucoup plus intelligentes et je souhaite savoir comment ils l'ont fait - Avec un lien qu'ils nous ont donné, nous pouvons installer leur application de démonstration à partir d'un simple code HTML par liaison radio et un profil d'approvisionnement 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 sans eux pour recompiler le projet.

Comment l'ont-ils fait?

58
mkto

Je distribue mes applications sans fil depuis plusieurs mois sans aucun problème. Certes, je distribue sous la licence Enterprise, qui coûte 299 dollars par an et est destinée à un usage professionnel interne. Cela peut fonctionner avec une licence de développeur normale, mais vous devrez faire quelques tests pour vous 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 version différente. 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 appropriés. 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 souhaitez 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 enregistré sur un serveur FTP, ou du moins c'est comme ça que je l'ai fait fonctionner. Pour le champ "URL de l'application", utilisez le chemin du fichier .ipa que vous allez enregistrer, par exemple,

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

Donnez-lui un titre, puis dans "Large image URL" et "Small Image URL", donnez-lui un chemin d'accès pour vos gros fichiers icônes (512x512) et petits (72x72) (je développe pour iPad, donc l'iPhone peut être différent). . Par exemple, 

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

Enregistrez le fichier .ipa. Vous devez maintenant placer votre fichier .mobileprovision sur le serveur FTP. Quiconque souhaite exécuter l'application a besoin du fichier installé ou ne pourra pas l'exécuter. À présent, je ne sais pas si vous aurez besoin d'un fichier .mobileprovision contenant tous les ID de périphérique intégrés si vous ne faites pas partie du programme d'entreprise, mais vous pouvez essayer et voir. Une fois que tous vos fichiers sont sur le serveur FTP, vous devez créer un courrier électronique contenant des liens vers les deux fichiers, mais le lien pour le fichier .ipa doit être dans un format spécial. Pour le fichier de provisioning:

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

Désormais, lorsque vous envoyez cet e-mail à quelqu'un, il vous suffit de télécharger et d'installer le fichier .mobileprovision, puis le fichier .ipa. Voilà, ils exécutent votre programme. Faites-moi savoir si cela fonctionne sans abonnement d'entreprise. J'imagine qu'il le serait tant que le fichier .mobileprovision contiendrait les identifiants de périphérique. 

Modifier:

J'ai trouvé un moyen beaucoup plus efficace de distribuer des applications, mais cela nécessite de disposer d'un serveur PHP. Ce que vous faites est de créer un fichier PHP qui génère le fichier plist à la volée et le renvoie. Dans les liens pour les grandes images, les petites images et les fichiers ipa, vous transmettez des liens vers d’autres fichiers PHP qui renvoient ces informations pour votre programme spécifique. Lorsque vous souhaitez installer une application à partir d'un lien, il vous suffit de transmettre l'URL comme ceci:

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

Dans vos fonctions PHP, insérez simplement myappname dans les autres appels PHP, ce qui extrairait les fichiers appropriés de votre serveur. En utilisant cette méthode, vous n’avez pas besoin de stocker des fichiers de liste d’applications pour aucune de vos applications au fur et à mesure de leur génération, ce qui facilite la mise à jour de vos applications car vous n’avez pas besoin de retaper les informations à chaque fois. distribution d'entreprise, il suffit de sauvegarder le fichier ipa sur l'ancien et vous êtes prêt à partir. De plus, il est facile d'implémenter des fonctionnalités 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 lui-même lorsque vous installez l'application. Il est stocké dans le fichier ipa.

Modifier:

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 version de distribution d'entreprise, puis dans votre fichier php, définissez les en-têtes comme suit:

$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');

Ensuite, vous construisez une chaîne remplaçant les URL pour vos éléments comme ceci:

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

et terminez-le avec un dernier en-tête avant de faire écho à 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. Devrait être assez simple sauf si vous n'êtes pas très familier avec PHP.

74
Davido

Je viens de vivre la même chose. Je pense que la grande différence est le profil de distribution d'entreprise (299 dollars par an). Si vous en possédez un, vous n'avez pas besoin d'avoir des UDID de périphérique dans la liste. Si vous avez un contrat normal de 99 $ par an, vous devez le faire. Aussi simple que cela.

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

Vous devez simplement obtenir un numéro DUNS gratuit auprès de Dun and Bradstreet, qui prend 30 jours. Nous avons postulé pour le nôtre et nous verrons comment tout cela se déroulera.

8
Jon Marks

Vous avez besoin d’un profil de provisionnement, mais celui-ci est intégré au fichier .ipa et ne nécessite pas d’installation via iTunes en tant qu’installable séparé.

Vous devriez consulter TestFlight , une application Web permettant de gérer les distributions de build OTA Ad Hoc; c'est fantastique. Il fait toutes sortes de choses intelligentes, y compris la collecte des UDID des périphériques de vos utilisateurs pour vous. (En tant que développeur, vous devez toujours saisir ces informations dans le portail de provisioning du iPhone Dev Center, mais l'utilisateur peut rester parfaitement inconscient de l'existence même des UDID, peu importe qu'ils aient à vous les envoyer. Peut-être que c'est ce que votre patron avait précédemment utilisé .)

7
Simon Whitaker

Je ne connais pas de moyen d'accomplir cela sans l'UDID de l'utilisateur. Mon hypothèse est que le développeur avait déjà utilisé l'identifiant UDID de votre patron et avait créé/intégré un nouveau profil d'approvisionnement, ou que votre patron testait une application Web mobile. 

Vous pouvez maintenant faire des distributions ad-hoc un peu plus facilement avec Wireless App Distribution.

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

2
jmans

L'application à laquelle vous faites référence s'appelle Beta Builder . Mon patron l'a utilisé pour la première fois aujourd'hui et cela a très bien fonctionné. Vaut vraiment 2 $.

2
FreeAsInBeer

La réponse acceptée est plutôt ancienne et j'ai trouvé beaucoup de ressources déroutantes pour la distribution d'applications d'entreprise. J'ai donc pensé que je répondrais avec une meilleure solution.

HockeyApp est gratuit et vous permet de télécharger vos versions Enterprise (et Ad-Hoc) et de servir de page de téléchargement publique. Notez que cela ne fonctionnera sans enregistrer les utilisateurs et approvisionner les UDID de leur appareil si vous avez un compte Apple Enterprise comme d'autres l'ont mentionné, mais il s'agit de loin du flux de travail le plus simple et le plus rapide pour distribuer rapidement des applications aux clients sans le surcoût de l'approvisionnement.

0
fisch2

Tout cela s'est passé sans que je leur dise l'UDID de mon ipad, et donc sans eux pour recompiler le projet.

Fait peu connu: vous n'avez pas besoin de recompiler l'application. Vous n'avez même pas besoin de démissionner de l'application. Tout ce qui compte, c’est qu’un profil de provisionnement installé soit "assez similaire" à la configuration intégrée.mobile dans l’application (nom du profil? ID du bundle? Graine du bundle? Qui sait).

Alternativement, ils pourraient faire des builds automatisés. Peut être. Peut être pas.

Que peut-il se passer:

  1. Le serveur vous envoie un "profil de configuration" (voir SCEP/entreprise ou autre). Apparemment, cela peut être utilisé pour obtenir le UDID de votre appareil. TestFlight fait cela.
  2. Le serveur effectue automatiquement plusieurs opérations (soit en grattant l'écran, soit via une API d'entreprise, le cas échéant):
    1. Ajoutez l'UDID du périphérique à la liste des périphériques Apple.
    2. Dites à Apple de générer le profil de provisioning.
    3. Téléchargez le profil d'approvisionnement.
0
tc.