【问题标题】:How to distribute ios application wirelessly without managing UDIDs and recompilation如何在不管理 UDID 和重新编译的情况下无线分发 ios 应用程序
【发布时间】:2011-07-29 15:06:11
【问题描述】:

我需要知道人们使用什么方法来无线分发(内部)iPad 应用程序演示,而无需管理 UDID?

我不需要像 testflight 或 betabuilder 这样的解决方案,所有这些都需要我在苹果配置文件门户中管理 UDID。

我问这个问题是因为我看到另一个工作室现在正在做一个更聪明的方法,我想知道他们是如何做到的 - 通过他们给我们的链接,我们可以从一个简单的 HTML 安装他们的演示应用程序空气中,一个配置文件神奇地出现在我的 iPad 上。这一切都是在我没有告诉他们我的 iPad 的 UDID 的情况下发生的,因此绝对不需要他们重新编译项目。

他们是怎么做到的?

【问题讨论】:

    标签: iphone objective-c xcode


    【解决方案1】:

    几个月来我一直在无线分发我的应用程序,没有任何问题。当然,我是根据企业许可证分发的,该许可证每年花费 299 美元,旨在供内部业务使用。这可能适用于普通的开发人员许可证,但您必须进行一些测试以确保。我想如果它确实有效,这个过程是一样的。我使用的是 XCode 4,所以如果您使用不同的版本,这可能会略有不同。基本上,您必须将 Entitlements.plist 文件添加到您的资源中:

    New->File->Code Signing->Entitlements
    

    在分发之前,您必须进行更改:

    "Can be debugged" to NO
    

    确保您的项目设置了正确的代码签名配置文件。现在转到:

    Product->archive
    

    然后使用您新建的条目,单击: 分享

    Select "iOS App Store Package (.ipa)"
    

    并选择您要使用的正确分发配置文件。单击下一步,然后选择保存 .ipa 文件的位置。在你点击保存之前,你需要检查一下

    Save for Enterprise Distribution
    

    .ipa 文件需要保存在 FTP 服务器上,或者至少我是这样让它工作的。对于“应用程序 URL”字段,使用您要保存的 .ipa 文件的路径,例如,

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

    给它一个标题,然后在“大图像 URL”和“小图像 URL”中给它一个指向您的大 (512x512) 和小 (72x72) 图标文件的路径,(我正在为 iPad 开发,所以 iPhone 可能不同)。例如,

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

    保存 .ipa 文件。现在您需要将 .mobileprovision 文件放在 ftp 服务器上。任何想要运行该应用程序的人都需要安装该文件,否则他们将无法运行它。现在,如果您不是企业计划的一部分,我不确定您是否需要一个内置所有设备 ID 的 .mobileprovision 文件,但您可以尝试看看。一旦您的文件都在 ftp 服务器上,您将需要创建一封电子邮件,其中包含指向这两个文件的链接,但 .ipa 文件的链接必须采用特殊格式。对于配置文件:

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

    对于 .ipa 文件:

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

    现在,当您将这封电子邮件发送给某人时,他们只需先下载并安装 .mobileprovision 文件,然后再安装 .ipa 文件。瞧,他们正在运行您的程序。让我知道这在没有企业订阅的情况下是否有效。我想只要 .mobileprovision 文件包含设备 ID 就可以了。

    编辑:

    我找到了一种更好的分发应用程序的方法,但它要求您拥有 PHP 服务器。您所做的是创建一个 PHP 文件,该文件动态生成 plist 文件并返回该文件。在大图像、小图像和 ipa 文件的链接中,您传递指向其他 PHP 文件的链接,这些文件会为您的特定程序返回这些内容。当您想通过链接安装应用程序时,您只需像这样传入 url:

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

    在您的 PHP 函数中,您只需将 myappname 插入到其他 PHP 调用中,这将从您的服务器中提取正确的文件。使用此方法,您无需在生成任何应用程序时为它们存储 plist 文件,这使得更新应用程序更容易,因为您无需每次都重新输入信息,甚至不选中复选框企业发行版,只需将 ipa 文件保存在旧文件上即可。此外,使用这种方法很容易实现安全和登录功能。此外,您不需要专门安装移动配置文件,因为它会在您安装应用程序时自行安装。它存储在 ipa 文件中。

    编辑:

    为了阐明 PHP 方法,您创建了一个用于创建 plist 文件的 php 文件。复制从企业分发版本创建的标准 plist 文件,然后在您的 php 文件中,设置如下标题:

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

    然后您构建一个字符串来替换您的项目的网址,如下所示:

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

    并在回显 xml 字符串之前以最后一个标题结束:

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

    最后,您创建一个 php 文件来提供您的 ipa 文件,一个提供您的大图像,一个提供您的小图像。除非您对 PHP 不是很熟悉,否则应该相当简单。

    【讨论】:

    • 嗨,Davido,感谢您来这里回复我,当您说您拥有每年 100 美元的“企业许可证”时?您指的是每年 299 美元的企业许可证吗?有 3 个许可证,个人 (99)、公司 (99) 和企业 (299)。
    • 好收获。我以为是 99 美元,但话说回来,这是公司的钱,不是我的,所以我没有理由担心当时的确切金额。
    • 我猜我的帖子不够清楚。我不必为我的应用程序管理 UDID。我只是说您可以在普通帐户上尝试相同的方法,看看它是否有效。在企业帐户中,完全不需要 UDID。
    • 为了记录,您不需要单独下载配置文件。该配置文件将以名称“embedded.mobileprovision”嵌入您的应用程序中,并在安装应用程序时由操作系统自动安装。这从 iOS 3 左右就可以使用了。
    • 这里是无线分发企业开发人员计划文档的链接:help.apple.com/iosdeployment-apps/#app43ad871e
    【解决方案2】:

    我刚刚经历过同样的事情。我认为最大的不同是企业分发配置文件(每年 299 美元)——如果您有其中之一,则不需要在列表中包含设备 UDID。如果您有每年 99 美元的正常交易,则必须这样做。就这么简单。

    好消息是,Apple 最近取消了“500 名员工”限制,因此任何公司都可以获得其中之一:http://blog.apperian.com/2010/10/apple-opens-ios-developer-enterprise.html

    您只需从 Dun and Bradstreet 获得一个免费的 DUNS 编号,这需要 30 天。我们已经申请了我们的,看看结果如何。

    【讨论】:

      【解决方案3】:

      您确实需要一个配置文件,但它嵌入在 .ipa 文件中,不需要通过 iTunes 单独安装。

      您应该查看TestFlight,这是一个用于管理 OTA Ad Hoc 构建分发的网络应用;这是梦幻般的。它会做各种巧妙的事情,包括为您收集用户设备的 UDID。 (您,开发人员,仍然需要将这些输入到 iPhone 开发中心的配置门户中,但用户可以很高兴地不知道 UDID 甚至存在,更不用说他们必须将其发送给您。也许这就是您的老板以前使用的.)

      【讨论】:

      • Testflightapp 让整个过程变得非常简单。它甚至还有一个上传 API,让您可以完全自动化地分发您的应用程序。
      • 大家好,谢谢,但我想知道的是人们如何在不管理 UDID 的情况下进行无线部署。这是 299 美元企业许可证中的一项功能吗..
      • @simon whitaker 我们需要为 .ipa 重新编译我们的应用程序还是只需要在开发者门户证书中添加 UDID?
      【解决方案4】:

      如果没有用户的 UDID,我不知道有什么方法可以做到这一点。我的猜测是,开发人员之前已经有了你老板的 UDID,并创建/捆绑了一个新的配置文件,或者你的老板正在测试一个移动 Web 应用程序。

      您现在可以使用无线应用分发更轻松地进行临时分发。

      iOS 4: wireless app distribution for in-house applications

      【讨论】:

        【解决方案5】:

        您所指的应用程序名为Beta Builder。我的老板今天第一次使用它,效果很好。绝对值 2 美元。

        【讨论】:

        • 应用程序仍然需要使用包含 UUID 的配置文件进行签名,以供任何要下载和安装应用程序的设备使用。
        • 是的,在阅读了该 Beta Builder 链接中的所有 cmets 后,我也有相同的结论。所以我认为我的老板喝醉了。他之前一定已经给出了他的UDID?
        • 企业许可证呢?既然要支持很多员工,那这个app是不是必须事先绑定好所有的UDID呢?
        • 大家好,我自己测试了“老板的链接”,并确认有一种方法可以在不提供 UDID 的情况下使其工作。单击 html 页面上的链接后,我可以下载该应用程序,并且分发配置文件神奇地出现在我的 ipad 中。我怀疑也许企业许可证可以做到这一点......我现在回到了原点。还是需要帮助~~~
        【解决方案6】:

        这一切都是在我没有告诉他们我的 ipad 的 UDID 的情况下发生的,因此肯定没有他们重新编译项目。

        鲜为人知的事实:您不需要重新编译应用程序。您甚至不需要退出应用程序。重要的是有一个已安装的配置文件,它与应用程序内的 embedded.mobileprovision “足够相似”(配置文件名称?捆绑 ID?捆绑种子?谁知道)。

        或者,他们可以进行自动化构建。可能是。也许不会。

        可能发生的事情:

        1. 服务器向您发送一个“配置文件”(参见 SCEP/enterprise)。显然,这可用于获取设备的 UDID。 TestFlight 就是这样做的。
        2. 服务器自动做一些事情(通过屏幕抓取,或者通过一些企业 API,如果有的话):
          1. 将设备 UDID 添加到 Apple 的设备列表中。
          2. 告诉苹果生成配置文件。
          3. 下载配置文件。

        【讨论】:

          【解决方案7】:

          接受的答案已经很老了,我发现很多分发企业应用程序的资源令人困惑,所以我想我会用更好的解决方案来回应。

          HockeyApp 是免费的,可让您上传企业(和 Ad-Hoc)版本并用作公共下载页面。请注意,如果您拥有 Apple Enterprise 帐户,这将仅在不注册用户和配置其设备的 UDID 的情况下有效,但它是迄今为止最简单、最快捷的工作流程,可快速将应用程序分发给客户端,而无需设备配置的开销。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2010-10-21
            • 2016-05-12
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多