您可以在 AppStore 上将应用程序作为完全免费的应用程序提交,但需要用户登录并进行身份验证才能使用它。这样任何人都可以下载它,但您可以控制谁可以实际使用它。Apple 为您完成所有分发工作,您不必担心 Ad-Hoc 部署或 IT 部门。
然后,您可以在管理应用程序身份验证的 Web 主机(或类似 Google AppEngine 的平台)上构建一个非常简单的配置管理系统。
当用户启动免费应用程序时,他们会被要求输入用户名/密码/其他任何内容。该信息被发送到基于 Web 的配置管理系统并得到确认。如果应用程序从配置管理系统收到可接受的确认,它会自行解锁以供该用户使用。
该应用程序可以在每次启动时重新进行身份验证(如果您想要大量控制,这很有用),或者它可以在本地存储一个密钥文件,表明它已经过身份验证。如果它在应用程序启动时看到本地密钥文件,则认为自己已通过身份验证,并且不再检查。
是每个人使用一个用户帐户还是整个公司使用一个用户帐户取决于您。
如果您想控制谁可以使用该应用程序但又希望 AppStore 提供的易于部署,这种分发方式非常有用。
Apple 已经在 AppStore 上接受了许多使用这种对远程服务器进行身份验证的应用程序(Skype 就是一个很好的例子)。
如果您在配置服务器上跟踪设备 UDID,您还可以预加载它以允许特定设备集工作。
此外,我所描述的任何内容都不是 iPhone 特定的,因此如果您将来移植应用程序或构建其他需要此功能的应用程序,您可以在其他平台(如 Android(甚至桌面))上使用相同的配置管理系统和概念。
此外,由于身份验证设备的操作不是处理器或数据密集型的,如果您在 Google AppEngine 上构建它,您可能永远不会产生成本,因为您永远不会超过免费配额,您将获得 Google 后端架构的稳定性和可扩展性。
由于此特定部署用于管理内部后端系统,因此通过 AppStore 部署它似乎不安全,因为应用程序中嵌入了专有信息,特别是允许其连接到后端并针对后端进行身份验证的信息系统。
解决方案是不在应用程序中包含这些信息,而只是让这些信息成为应用程序从配置管理服务器接收到的响应的一部分。基本上,该应用程序包含执行其功能所需的逻辑,但如果没有连接信息,它就无法管理任何后端系统。
如果您让应用程序在每次启动时都进行身份验证,您可以更改配置服务器上的连接信息,并且应用程序将更新为新信息,而无需任何新的部署。用户只需要重新启动应用程序。这使您的客户可以灵活地更改其内部网络配置,而不会使您的应用程序代码无效。您也可以在应用程序中手动配置这些信息,但在每台设备上设置应用程序时会产生 IT 成本,如果您已经准备好设置配置管理系统,不妨使用它。
为了进一步保护上述解决方案,您可能希望将配置管理系统放在公司内部并位于公司的防火墙后面,这样无论谁拥有该应用程序,他们都无法连接到配置系统,除非他们在公司的网络内。