背景
UI在查看UI在正式环境和测试环境效果的时候总是需要来回装卸App,这个对开发和UI以及测试都造成了不便和影响工作效率,因此,在项目间隙调研一下这个问题的解决方案。虽然修改BundleID可以使得正式环境包和测试环境包在同一设备共存,但是BundleID修改了之后,推送,登陆等与BundleId相关的都不能够使用,所以修改BundleId的方案没有用处。
实现方案
- 在debug包的一个不常使用的界面增加一行开发者选项,用以切换在debug包下的服务器环境(现在公司是测试环境,线上环境两种环境)。注意需要保证这个开发者选项在release包上不会出现。
具体实现
- 使用NSUserDefaults存储开发者选择的服务器环境,debug包下未选择时默认是测试服务器。定义一个宏isEnvironment来取存储的服务器环境,通过宏isEnvironment的值修改baseUrl为测试的或者线上的Url。这里需要注意:修改环境的时候需要将相关的token清空,退出登陆,清空用户信息。
- 开发者点击按钮切换服务器环境后,只需要刷新界面,运行环境就已经改变。不过因为在点击按钮前,有些请求已经请求完毕,比如首页,需要杀掉进程,重新刷新,就会所有的页面都修改。