如何在无需管理UDID和重新编译的情况下,通过无线方式分发iOS应用程序

61

我想了解人们在内部分发iPad应用演示的无线方法,而不必管理UDID。

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

我之所以问这个问题是因为我现在看到另一个工作室正在使用一种更聪明的方法,我希望知道他们是如何做到的 - 通过给我们提供一个链接,我们可以从简单的HTML中安装他们的演示应用程序,然后预配文件会神奇地出现在我的iPad上。所有这些都没有让我告诉他们我的iPad的UDID,因此肯定没有让他们重新编译项目。

他们是如何做到的?

7个回答

77

我已经通过无线方式分发我的应用程序数个月了,一直没有问题。当然,我是在企业许可证下分发的,这需要每年支付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');

然后您需要构建一个字符串来替换您物品的URL,就像这样:

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

在输出 XML 字符串之前,以一个最后的标题结束:

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

最后,您需要创建一个PHP文件来提供ipa文件,一个用于提供大图像,一个用于提供小图像。如果您不太熟悉PHP,这可能会有些困难。请注意保留HTML标签。

1
嗨Davido,感谢你来这里回复我。当你说你有“企业许可证”,每年100美元?你是指每年299美元的企业许可证吗?总共有三种许可证,个人许可证(99美元),公司许可证(99美元)和企业许可证(299美元)。 - mkto
1
不错的发现。我以为是99美元,但事实上那是公司的钱,不是我的,所以当时我没有太担心确切的金额。 - Davido
4
我想我的帖子表述不够清晰。我无需管理我的应用程序的UDID。我只是在说你可以尝试在普通账户上使用相同的方法,看看是否可行。在企业账户上,UDID完全是不必要的。 - Davido
3
记录一下,您不需要单独下载配置文件。该文件将以“embedded.mobileprovision”命名并嵌入到您的应用程序中,在应用安装时将由操作系统自动安装。这个功能大约从iOS 3开始就已经可用了。 - Mike Weller
2
这是一个链接,指向企业开发者计划文档中有关无线分发的部分:http://help.apple.com/iosdeployment-apps/#app43ad871e - Joony
显示剩余23条评论

8
我刚刚经历了同样的事情。我认为最大的区别在于企业分发配置文件(每年299美元) - 如果您拥有其中之一,您就不需要在列表中拥有设备UDID。如果您只有普通的每年99美元交易,那么您必须拥有。就这么简单。
好消息是,苹果最近放弃了“500名员工”的限制,因此任何公司都可以获得其中之一:http://blog.apperian.com/2010/10/apple-opens-ios-developer-enterprise.html 您只需要从Dun and Bradstreet获取一个免费的DUNS编号,这需要30天时间。我们已经申请了我们的,将看看所有细节如何展开。

7

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

您应该查看TestFlight,这是一个管理OTA Ad Hoc构建分发的Web应用程序;它非常棒。它可以执行各种聪明的操作,包括为您收集用户设备的UDID。 (作为开发人员,您仍然需要将这些输入到iPhone Dev Center的配置门户中,但用户可以保持无知状态,甚至不知道UDID的存在,更不用说他们必须将其发送给您了。也许这就是您的老板以前使用的方法。)


Testflightapp让整个过程变得非常简单。它甚至还有一个上传API,允许您完全自动化分发您的应用程序。 - kubi
2
大家好,谢谢。但是我想知道的是人们如何在不管理UDID的情况下进行无线部署。这是USD299企业许可证中的一个功能吗? - mkto
@simon whitaker 我们需要重新编译我们的应用程序以获得 .ipa 文件吗?还是只需要在开发者门户证书中添加 UDID 即可? - Baby Groot

2
我不知道在没有用户UDID的情况下如何完成这个任务。我的猜测是开发者之前已经有了你们老板的UDID,并创建/打包了一个新的配置文件,或者你们老板正在测试一个移动Web应用程序。
现在你可以使用无线应用分发更轻松地进行Ad-hoc分发。 iOS 4:面向企业应用程序的无线应用分发

2
你所提到的应用程序叫做Beta Builder。我的老板今天第一次使用它,效果非常好。绝对值得2美元。

应用程序仍需要使用包含任何将下载和安装应用程序的设备的UUID的预配配置文件进行签名。 - FreeAsInBeer
在阅读了Beta Builder链接中的所有评论后,我也得出了同样的结论。所以我认为我的老板喝醉了。他之前一定泄露了他的UDID? - mkto
企业许可证怎么样?由于它要支持许多员工,是否可能需要预先将应用程序捆绑在所有员工的 UDID 上? - mkto
大家好,我已经亲自测试了“老板的链接”,并确认有一种方法可以使其在不提供UDID的情况下正常工作。当我在HTML页面上点击链接时,我可以下载应用程序,并且分发配置文件会神奇地出现在我的iPad上。我怀疑可能是企业许可证可以做到这一点...现在我回到了最初的问题,仍然需要帮助~~~ - mkto

0

被认可的答案已经很老了,我发现关于发布企业应用程序的资源非常混乱,所以我想提供一个更好的解决方案。

HockeyApp是免费的,允许您上传企业(和Ad-Hoc)版本并作为公共下载页面。请注意,这只适用于拥有苹果企业帐户的用户,如果没有为用户注册并提供设备的UDID,将无法使用此功能,但它是最简单、最快捷的工作流程,可以快速向客户分发应用程序而不需要进行繁琐的设备配置。


0
所有这些都发生在我没有告诉他们我的iPad的UDID的情况下,因此肯定没有重新编译项目。
鲜为人知的事实是:您不需要重新编译应用程序。 您甚至不需要重新签署应用程序。 所有重要的是,安装了一个“足够相似”的配置文件,该配置文件与应用程序中的embedded.mobileprovision类似(配置文件名称?包标识符?包种子?谁知道)。
或者,他们可能正在进行自动化构建。 也许。 也许不是。
可能发生的情况:
1.服务器向您发送“配置文件”(请参见SCEP /企业等)。 显然,这可以用于获取设备的UDID。 TestFlight就是这样做的。
2.服务器会自动执行一些操作(通过屏幕抓取或通过某个企业API(如果有)):
添加设备UDID到Apple的设备列表中。
告诉苹果生成配置文件。
下载配置文件。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接