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

Posted

技术标签:

【中文标题】应用程序是不是可以通过 TestFlight 检测它是不是安装为“外部测试”【英文标题】:Can a app detect if it's installed as "External Testing" via TestFlight应用程序是否可以通过 TestFlight 检测它是否安装为“外部测试” 【发布时间】:2017-01-09 19:44:27 【问题描述】:

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

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

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

【问题讨论】:

【参考方案1】:

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

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

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

【讨论】:

【参考方案2】:

无法检测应用是作为“内部测试”还是“外部测试”安装的。

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

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

如果您担心真正的用户会找到您的秘密开关,那么您必须按照您说的制作一个单独的应用程序。

【讨论】:

谢谢。我也考虑过这个选项。但是对于这个应用程序,我不确定我是否愿意冒险混合数据。

以上是关于应用程序是不是可以通过 TestFlight 检测它是不是安装为“外部测试”的主要内容,如果未能解决你的问题,请参考以下文章

testflight 未检测到此应用的应用令牌

Testflight 假 iOS 版本检测

如何检测当前运行的应用程序是不是是从应用商店安装的?

我是不是需要加入 iOS 开发者计划才能通过 TestFlight 发送我的应用构建?

Titanium 和 Testflight 不能一起工作

通过 Testflight 安装新版本时,NSUserDefaults 是不是仍然存在?