ios TestFlight 是如何做到的?
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/4973244/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
How does TestFlight do it?
提问by hpique
TestFlight offers over-the-air beta distribution of iOS apps (on non-jailbroken devices). How can this be done? Is this an iOS feature, or a vulnerability exploit?
TestFlight 提供 iOS 应用程序的无线测试版分发(在非越狱设备上)。如何才能做到这一点?这是 iOS 功能还是漏洞利用?
采纳答案by Nick
This was possible before TestFlight rolled out a service. The technique stemmed out of the enterprise distribution mechanism. Since 4.0 devices have supported install from web.
在 TestFlight 推出服务之前,这是可能的。该技术源于企业分配机制。由于 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. All they are doing is taking the email the IPA step out of things.
请记住 - 您仍然需要为一组选定的 UDID 签署 beta 发行版,您不能随意将其安装在任何设备上。他们所做的只是将 IPA 的电子邮件排除在外。
See:
看:
Update: I want to say that Test Flight is one of the most helpful tools I've used when developing though. Just taking the IPA emailing out of the picture was an understatement- I was just trying to call out the technical mechanism. They do a fantastic job managing the whole beta process. Getting new devices enrolled. Notifying users etc.
更新:我想说 Test Flight 是我在开发时使用过的最有用的工具之一。只是将 IPA 电子邮件从图片中删除是轻描淡写的 - 我只是想调用技术机制。他们在管理整个测试过程中做得非常出色。注册新设备。通知用户等
回答by Kerni
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 also published documentation and sample code for registering devicesand get the UDID by using profiles, so your website can detect which device is calling.
Apple 记录了完整的过程。Apple 还发布了用于注册设备和使用配置文件获取 UDID 的文档和示例代码,以便您的网站可以检测到哪个设备正在调用。
Some additional solutions with different strenghts:
一些不同强度的附加解决方案:
iOS Beta Builder, a Mac Application to create the website by using a build. Simply upload the resulting files to your webserver.
Diawi: Simple Web service. Upload your IPA file, optionally set a password and send a link to your testers.
AppSendr: Web service for beta build hosting, similar to Testflight, but does not include the device registration process. 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. Completely file and directory based.
HockeyApp: Web Service for beta build hosting, In-App-Updates, Statistics, and including device registration, invite and recruitment. Also provides server side crash report collection, symbolication (for all threads) and crash grouping for beta and app store apps (iOS + Mac). SDKs are open source, using HockeyKit, QuincyKitand PLCrashReporter(which is the only safe solution on how to do crash report collection on iOS, see this article.
iOS Beta Builder,一个使用构建创建网站的 Mac 应用程序。只需将生成的文件上传到您的网络服务器。
Diawi:简单的网络服务。上传您的 IPA 文件,可选择设置密码并向您的测试人员发送链接。
AppSendr:用于测试版托管的 Web 服务,类似于 Testflight,但不包括设备注册过程。但提供部署实用程序来自动上传新版本。
HockeyKit:开源项目,用于在您自己的 PHP5 服务器上托管 beta 版本,并具有附加功能,例如用于应用程序内更新的客户端、自动设备特定网站和处理多个应用程序。完全基于文件和目录。
HockeyApp:用于测试版托管、应用程序内更新、统计信息的 Web 服务,包括设备注册、邀请和招募。还为测试版和应用商店应用程序(iOS + Mac)提供服务器端崩溃报告收集、符号化(针对所有线程)和崩溃分组。SDK 是开源的,使用HockeyKit、QuincyKit和PLCrashReporter(这是如何在 iOS 上进行崩溃报告收集的唯一安全解决方案,请参阅本文。
Note: I am the main developer of HockeyKitand QuincyKit, and one of the developers of HockeyApp.
回答by Thomas Fankhauser
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. This is actually a step that is done in MDM before the actual profile is rolled out to the device. It basically asks the device for further information about itself and send it back to a self specified server.
您可以UDID
在 OTA 身份验证请求的帮助下获取。这实际上是在将实际配置文件推出到设备之前在 MDM 中完成的一个步骤。它基本上要求设备提供有关自身的更多信息,并将其发送回自己指定的服务器。
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
电话名称...
回答by Robotic Cat
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. 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.
大概您会将您的 UDID 与应用程序一起传递给 TestFlight,然后他们使用他们的企业许可证将应用程序发送给您。我确定我遗漏了很多技术细节,但如果您想了解更多信息,Apple 有一个来自 WWDC 2010 的视频。
Login to developer.apple.com, go to WWDC 2010 Videosand use the link to get to the vidoes. The video you want is "Session 108 - Managing Mobile Devices". It is very informative about what is possible with OTA and the steps you have to take to do OTA provisioning.
登录 developer.apple.com,转到WWDC 2010 Videos并使用链接访问视频。您想要的视频是“会话 108 - 管理移动设备”。它对 OTA 的可能性以及执行 OTA 配置必须采取的步骤提供了非常丰富的信息。
回答by hotpaw2
Stock iOS devices are "vulnerable" to runningthe 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 测试分发的另一种方式。