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

我不需要testflight或betabuilder这样的解决方案,所有这些都需要我在apple provisioning profile portal中管理UDID.

我问这个问题是因为我现在看到另一个工作室正在以更智能的方式做这件事,我想知道他们是如何做到的——通过他们给我们的链接,我们可以通过简单的HTML空中传送安装他们的演示应用程序,我的iPad上神奇地出现了一个配置文件.这一切都发生在我没有告诉他们我iPad的UDID的情况下,因此他们肯定没有重新编译这个项目.

他们是怎么做到的?

推荐答案

几个月来,我一直在无线分发我的应用程序,没有任何问题.诚然,我是根据企业许可证发行的,该许可证的费用为每年299美元,用于内部商业用途.这可能适用于普通的开发人员许可证,但您必须进行一些测试以确保.我想如果它真的起作用,这个过程是一样的.我使用的是XCode 4,所以如果您使用的是不同的版本,这可能会略有不同.基本上,你必须增加一项福利.plist文件到您的资源:

New->File->Code Signing->Entitlements

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

"Can be debugged" to NO

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

Product->archive

然后使用新创建的条目,单击:

Select "iOS App Store Package (.ipa)"

并 Select 您想要使用的适当的分发配置文件.单击"下一步",然后 Select 保存文件的位置.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文件.现在你需要把你的.ftp服务器上的mobileprovision文件.任何想要运行该应用程序的人都需要安装该文件,否则他们将无法运行它.现在,我不确定你是否需要帮助.mobileprovision文件,其中内置了所有设备ID,如果您不是企业计划的一部分,但您可以try 查看.一旦你的文件都在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方法,您创建了一个PHP文件,用于创建plist文件.复制从企业发行版生成的标准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>

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

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

最后,创建一个php文件来服务于ipa文件,一个用于服务于大图像,另一个用于服务于小图像.除非你对PHP不是很熟悉,否则应该非常直接.

Objective-c相关问答推荐

Objective-C - 将浮点数转换为字符串的其他方法

pathForResource 返回 null

NSTimeZone:localTimeZone 和 systemTimeZone 有什么区别?

如何使用 NSString drawInRect 使文本居中?

是否需要 ARC 中的 NSNotificationCenter removeObserver?

在 Xcode 中为无法识别的 Select 器创建断点

切换隐私设置将杀死应用程序

在运行时判断 iOS 版本?

iOS 7 状态栏与 NavigationBar 冲突

在 iPhone 应用程序中使用 RestKit 的最佳方式

如果目录不存在,是否有更安全的方法来创建目录?

如何在iphone的objective-c中以编程方式调整图像大小

强制iphone应用程序以编程方式重新启动?

UIBezierPath 减go 路径

嵌入自定义容器视图控制器时,内容位于导航栏下方.

交换 NSMutableArray 中的元素

如何像在 Spotify 的播放器中一样创建居中的 UICollectionView

zoom UIView 及其所有子项

找出用户是否按下了 uinavigationcontroller 中的后退按钮?

如何在 Objective-c 中将数组声明为常量?