{"id":35,"date":"2011-09-08T11:43:00","date_gmt":"2011-09-08T11:43:00","guid":{"rendered":"http:\/\/www.renaudpradenc.com\/?p=35"},"modified":"2013-01-17T15:31:45","modified_gmt":"2013-01-17T14:31:45","slug":"deploiement-aerien-d-une-application-ios","status":"publish","type":"post","link":"https:\/\/www.renaudpradenc.com\/?p=35","title":{"rendered":"D\u00e9ploiement a\u00e9rien (Over the Air) d&#8217;une application iOS"},"content":{"rendered":"<p>Que vous veuillez envoyer votre application \u00e0 des testeurs (distribution AdHoc) ou l&#8217;installer sur les terminaux de l&#8217;entreprise (distribution Enterprise), la mani\u00e8re classique de proc\u00e9der est de transmettre l&#8217;application sous forme d&#8217;un fichier .ipa, de glisser celui-ci dans iTunes, puis de brancher et synchroniser le terminal iOS.<\/p>\n<p>Cependant, il existe aussi un d\u00e9ploiement a\u00e9rien (&#8220;Over the Air&#8221;) qui consiste \u00e0 fournir (par courriel ou SMS) une URL vers une page web. En se rendant sur cette page avec le terminal iOS, on touche un simple lien et iOS propose d&#8217;installer l&#8217;application, puis la t\u00e9l\u00e9charge. Cette mani\u00e8re de proc\u00e9der est peu connue; le fait d&#8217;Apple qui l&#8217;a document\u00e9e dans son guide &#8221;Distributing Enterprise Apps for iOS 4 Devices&#8221;, alors que cette proc\u00e9dure est tout \u00e0 fait permise en mode Ad Hoc.<\/p>\n<h2>En pratique<\/h2>\n<p>Vous allez cr\u00e9ez un r\u00e9pertoire sur votre site web, qui contiendra:<\/p>\n<ul>\n<li>le fichier .ipa<\/li>\n<li>un fichier index.html qui sera la page web contenant le lien pour t\u00e9l\u00e9charger<\/li>\n<li>un fichier manifeste, qui est une .plist comportant les renseignements sur votre application.<\/li>\n<\/ul>\n<h3>Le fichier html<\/h3>\n<p>Voici un exemple simple, mais bien suffisant:<\/p>\n<p><code>!DOCTYPE html PUBLIC \"-\/\/W3C\/\/DTD XHTML 1.1\/\/EN\" \"http:\/\/www.w3.org\/TR\/xhtml11\/DTD\/xhtml11.dtd\"&gt;<br \/>\n&lt;body&gt;<br \/>\n&lt;a href=\"itms-services:\/\/?action=download-manifest&amp;url=http:\/\/www.monsite.fr\/monappli\/<br \/>\nMonAppli.plist\"&gt;Installer l'application&lt;\/a&gt;<br \/>\n&lt;\/body&gt;<\/code><\/p>\n<p>Cette page comportera uniquement un lien vers les services d&#8217;itunes auxquels on fournit l&#8217;adresse du manifeste, <em>MonAppli.plist<\/em> dans cet exemple. Il est \u00e9vident que le passage par les services d&#8217;iTunes garantit que vous n&#8217;abuserez pas du syst\u00e8me\u00a0!<\/p>\n<h3>Application et manifeste<\/h3>\n<p>La doc d&#8217;apple donne un manifeste d&#8217;exemple fort compliqu\u00e9. En fait, Xcode 4 va le g\u00e9n\u00e9rer pour nous. Pour cela:<\/p>\n<ul>\n<li>commencez par Archiver l&#8217;application.<\/li>\n<li>une fois l&#8217;archive dans l&#8217;Organiseur, cliquez le bouton &#8221;Share\u2026&#8221;<\/li>\n<li>choisissez &#8221;iOS App Store Package (.ipa)&#8221; et le certificat qui convient pour un d\u00e9ploiement Ad Hoc ou Enterprise.<\/li>\n<li>conserver le nom du fichier .ipa, et cochez la case &#8221;Save for Enterprise Distribution&#8221;<\/li>\n<li>des champs apparaissent, renseignez au moins l&#8217;URL de l&#8217;appli (http:\/\/monsite.fr\/monappli\/MonAppli.ipa) et le titre. Xcode a g\u00e9n\u00e9r\u00e9 app.ipa et app.plist, vous n&#8217;avez plus qu&#8217;\u00e0 les copier dans le r\u00e9pertoire de votre site web.<\/li>\n<\/ul>\n<h2>Si \u00e7a ne fonctionne pas<\/h2>\n<p>D&#8217;exp\u00e9rience, il est assez rare que cela fonctionne au premier essai !<\/p>\n<ul>\n<li>Commencez par v\u00e9rifier l&#8217;URL du manifeste dans le fichier HTML<\/li>\n<li>V\u00e9rifiez ensuite l&#8217;URL de l&#8217;appli dans le manifeste. L&#8217;adresse doit comporter le nom de l&#8217;application, donc se terminer par \/MonAppli.ipa<\/li>\n<li>Jetez un \u0153il \u00e0 la Console du terminal dans l&#8217;Organizer de Xcode. La raison est parfois affich\u00e9e.<\/li>\n<li>Si cela ne fonctionne toujours pas, c&#8217;est probablement un probl\u00e8me de certificat. On observe g\u00e9n\u00e9ralement que le t\u00e9l\u00e9chargement se termine mais que l&#8217;application disparait aussit\u00f4t. Dans ce cas, rebranchez votre terminal iOS et tentez une installation filaire pour r\u00e9soudre ce probl\u00e8me.<\/li>\n<\/ul>\n<h2>Limitations<\/h2>\n<p>Ce mode de distribution n&#8217;est possible qu&#8217;\u00e0 partir d&#8217;iOS 4. Sachez qu&#8217;il existe des sites web qui se proposent de stocker le fichier .ipa pour vous; dans le cas ou le terminal tourne sur une version ant\u00e9rieure d&#8217;iOS, ils proposent alors d&#8217;envoyer un courriel comportant l&#8217;URL de l&#8217;application pour pouvoir effectuer une installation filaire. Voil\u00e0, essayer le d\u00e9ploiement a\u00e9rien, c&#8217;est l&#8217;adopter !<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Que vous veuillez envoyer votre application \u00e0 des testeurs (distribution AdHoc) ou l&#8217;installer sur les terminaux de l&#8217;entreprise (distribution Enterprise), la mani\u00e8re classique de proc\u00e9der est de transmettre l&#8217;application sous forme d&#8217;un fichier .ipa, de glisser celui-ci dans iTunes, puis de brancher et synchroniser le terminal iOS. Cependant, il existe aussi un d\u00e9ploiement a\u00e9rien (&#8220;Over [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[30,27,28,29],"class_list":["post-35","post","type-post","status-publish","format-standard","hentry","category-uncategorized","tag-aerien","tag-cocoa-touch","tag-deploiement","tag-over-the-air"],"_links":{"self":[{"href":"https:\/\/www.renaudpradenc.com\/index.php?rest_route=\/wp\/v2\/posts\/35","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.renaudpradenc.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.renaudpradenc.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.renaudpradenc.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.renaudpradenc.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=35"}],"version-history":[{"count":4,"href":"https:\/\/www.renaudpradenc.com\/index.php?rest_route=\/wp\/v2\/posts\/35\/revisions"}],"predecessor-version":[{"id":99,"href":"https:\/\/www.renaudpradenc.com\/index.php?rest_route=\/wp\/v2\/posts\/35\/revisions\/99"}],"wp:attachment":[{"href":"https:\/\/www.renaudpradenc.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=35"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.renaudpradenc.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=35"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.renaudpradenc.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=35"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}