应用程序可以检测它是否通过TestFlight安装为“外部测试”

时间:2017-01-09 19:44:27

标签: ios itunesconnect testflight

我希望TestFlight上的内部测试和外部测试用户在首次运行应用程序时转到不同的API服务器。我想知道应用程序是否可以检测它是否作为TestFlight的“内部测试”或“外部测试”应用程序安装。

如果这不可行,我的下一个选择是构建一个单独的应用程序,以发送到Testflight,它将在启动时使用不同的API服务器。但这更复杂。

这样做的原因是我只希望外部测试人员从服务器上看到真实数据。而不是我们在开发应用程序时提交的虚假测试数据。

2 个答案:

答案 0 :(得分:1)

据我所知,无法检测运行应用程序的内部和外部测试人员。

但您不必构建两个不同的应用程序。我有类似的要求:我在应用程序设置中有一个特殊的菜单,内部测试人员可以调整应用程序的几个方面,例如他们连接的服务器,这样他们就可以测试应用程序而不会弄乱生产数据,或者在受控环境中购买内容。我不希望这些设置可供外部测试人员使用,因此我执行以下操作:

  • 我创建了两个不同的构建配置,一个用于内部测试人员(例如ReleaseInternal),另一个用于其余部分(Release
  • 我在内部测试器构建配置中定义了预处理器宏/ Swift标志(例如INTERNAL_TESTING
  • 我使用预处理器宏/ Swift标志来激活/停用某些代码或功能部分
  • 我创建了两个不同的模式,每个模式使用相应的构建配置,因此您只需切换模式以构建适当的应用程序版本
  • 最后,我使用fastlane自动释放应用程序,并带有一个标志,指示我是否要将应用程序发布到内部或外部测试人员,因此我不会犯错并发布错误的版本错误的人

答案 1 :(得分:0)

无法检测应用程序是否已安装为"内部测试"或"外部测试"。

另一个解决方案是默认构建指向实际数据的构建,但是有一个隐藏的开关,您可以教内部用户切换到测试数据。

您可以使用NSUserDefaults保存切换设置,以便内部用户不必在每次安装新版本或重新启动应用时都切换它。

如果您担心真实用户会发现您的秘密切换,那么您必须按照自己的意愿制作单独的应用。