简体   繁体   English

TestFlight 是如何做到的?

[英]How does TestFlight do it?

TestFlight offers over-the-air beta distribution of iOS apps (on non-jailbroken devices). TestFlight 提供 iOS 应用程序的无线测试版分发(在非越狱设备上)。 How can this be done?如何做到这一点? Is this an iOS feature, or a vulnerability exploit?这是 iOS 功能还是漏洞利用?

This article showed how Apples OTA implementation works and can be used outside enterprises as well: ios wireless app distribution这篇文章展示了苹果的 OTA 实现是如何工作的,也可以在企业外部使用: ios 无线应用分发

The complete process is documented by Apple . Apple 记录了完整的过程。 Apple also published documentation and sample code for registering devices and get the UDID by using profiles, so your website can detect which device is calling. Apple 还发布了用于注册设备和使用配置文件获取 UDID 的文档和示例代码,以便您的网站可以检测到哪个设备正在调用。

Some additional solutions with different strenghts:一些不同强度的附加解决方案:

  • iOS Beta Builder , a Mac Application to create the website by using a build. iOS Beta Builder ,一个使用构建创建网站的 Mac 应用程序。 Simply upload the resulting files to your webserver.只需将生成的文件上传到您的网络服务器。

  • Diawi : Simple Web service. Diawi :简单的网络服务。 Upload your IPA file, optionally set a password and send a link to your testers.上传您的 IPA 文件,可选择设置密码并向您的测试人员发送链接。

  • AppSendr : Web service for beta build hosting, similar to Testflight, but does not include the device registration process. AppSendr :用于测试版托管的 Web 服务,类似于 Testflight,但不包括设备注册过程。 But provides deployment utilities to automatically upload new versions.但提供部署实用程序来自动上传新版本。

  • HockeyKit : Open source project for hosting beta versions on your own PHP5 server with additional functionalities like an client for In-App-Updates, automatic device specific web sites and handling multiple applications. HockeyKit :开源项目,用于在您自己的 PHP5 服务器上托管 beta 版本,并具有附加功能,例如用于应用程序内更新的客户端、自动设备特定网站和处理多个应用程序。 Completely file and directory based.完全基于文件和目录。

  • HockeyApp : Web Service for beta build hosting, In-App-Updates, Statistics, and including device registration, invite and recruitment. HockeyApp :用于测试版托管、应用程序内更新、统计信息的 Web 服务,包括设备注册、邀请和招募。 Also provides server side crash report collection, symbolication (for all threads) and crash grouping for beta and app store apps (iOS + Mac).还为测试版和应用商店应用程序(iOS + Mac)提供服务器端崩溃报告收集、符号化(针对所有线程)和崩溃分组。 SDKs are open source, using HockeyKit , QuincyKit and PLCrashReporter (which is the only safe solution on how to do crash report collection on iOS, see this article . SDK 是开源的,使用HockeyKitQuincyKitPLCrashReporter (这是如何在 iOS 上进行崩溃报告收集的唯一安全解决方案,请参阅本文

Note: I am the main developer of HockeyKit and QuincyKit , and one of the developers of HockeyApp .注:我的主要开发HockeyKitQuincyKit ,和开发商之一HockeyApp

This was possible before TestFlight rolled out a service.在 TestFlight 推出服务之前,这是可能的。 The technique stemmed out of the enterprise distribution mechanism.该技术源于企业分配机制。 Since 4.0 devices have supported install from web.由于 4.0 设备已支持从 Web 安装。

Remember - you still need to sign the beta distribution for a select set of UDIDs you can't just willy nilly install it on any device.请记住 - 您仍然需要为一组选定的 UDID 签署 beta 发行版,您不能随意将其安装在任何设备上。 All they are doing is taking the email the IPA step out of things.他们所做的只是将 IPA 的电子邮件排除在外。

See:见:

Update: I want to say that Test Flight is one of the most helpful tools I've used when developing though.更新:我想说 Test Flight 是我在开发时使用过的最有用的工具之一。 Just taking the IPA emailing out of the picture was an understatement- I was just trying to call out the technical mechanism.只是将 IPA 电子邮件从图片中删除是轻描淡写的 - 我只是想调用技术机制。 They do a fantastic job managing the whole beta process.他们在管理整个测试过程中做得非常出色。 Getting new devices enrolled.注册新设备。 Notifying users etc.通知用户等

Testflight basically uses the normal Ad Hoc as already stated.如前所述,Testflight 基本上使用普通的 Ad Hoc。

For this to work, you need the UDID for every device in order to add it to the Ad Hoc profile, re-compile the app with the new profile an redistribute the new build.为此,您需要每个设备的UDID以将其添加到 Ad Hoc 配置文件中,使用新配置文件重新编译应用程序并重新分发新版本。

You can get the UDID with the help of the OTA Authentication Request.您可以在 OTA 身份验证请求的帮助下获取UDID This is actually a step that is done in MDM before the actual profile is rolled out to the device.这实际上是在将实际配置文件推出到设备之前在 MDM 中完成的一个步骤。 It basically asks the device for further information about itself and send it back to a self specified server.它基本上要求设备提供有关自身的更多信息,并将其发送回自己指定的服务器。

The first step is documented here: Apple OTA Configuration第一步记录在这里: Apple OTA Configuration

I guess Testflight uses this right after the registration process to collect the UDID , phone name, ...我猜 Testflight 会在注册过程后立即使用它来收集UDID 、电话名称、...

Yes this is a core feature of iOS for Enterprise Customers who wish to distribute OTA.是的,这是 iOS 的一项核心功能,适用于希望分发 OTA 的企业客户。

Presumably you would pass your UDID over to TestFlight along with the app and they use their Enterprise Licence to send the app to you.大概您会将您的 UDID 与应用程序一起传递给 TestFlight,然后他们使用他们的企业许可证将应用程序发送给您。 I'm sure I'm missing a lot of the technical details but if you want to know more, Apple has a video on this from WWDC 2010.我确定我遗漏了很多技术细节,但如果您想了解更多信息,Apple 有一个来自 WWDC 2010 的视频。

Login to developer.apple.com, go to WWDC 2010 Videos and use the link to get to the vidoes.登录 developer.apple.com,转到WWDC 2010 Videos并使用链接访问视频 The video you want is "Session 108 - Managing Mobile Devices".您想要的视频是“会话 108 - 管理移动设备”。 It is very informative about what is possible with OTA and the steps you have to take to do OTA provisioning.它对 OTA 的可能性以及执行 OTA 配置必须采取的步骤提供了非常丰富的信息。

Stock iOS devices are "vulnerable" to running the user loading Ad Hoc apps from any developer who has that device's UDID, and registers that UDID among their 100 allowed devices on Apple's developer portal.股票 iOS 设备“容易” 运行 用户加载来自任何拥有该设备 UDID 的开发者的 Ad Hoc 应用程序,并在 Apple 开发者门户上的 100 台允许的设备中注册该 UDID。

OTA distribution is just another way to install an Ad Hoc beta test distribution from an enrolled developer. OTA 分发只是从注册开发人员那里安装 Ad Hoc beta 测试分发的另一种方式。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM