内容简介:这篇文档主要是解决以下两个在开发时经常遇到的问题:1.在开发时,有一些代码仅在开发时运行,发版时不能运行。比如:测试用的mock数据、自动登录以方便调试应用、在本次上线时不上线的功能等。2.测试人员需要在测试服务器和线上服务器间来回切换,原来经常需要为连接测试服务器和线上服务器打不同的包,测试人员和开发人员都很麻烦。
这篇文档主要是解决以下两个在开发时经常遇到的问题:
1.在开发时,有一些代码仅在开发时运行,发版时不能运行。比如:测试用的mock数据、自动登录以方便调试应用、在本次上线时不上线的功能等。
2.测试人员需要在测试服务器和线上服务器间来回切换,原来经常需要为连接测试服务器和线上服务器打不同的包,测试人员和开发人员都很麻烦。
1、.pch 文件
在.pch文件中增加下面的代码:
#warning发版时注释。发版时只需要注释此一处即可。
#import"TestAppConfig.h"
将和开发时相关的宏定义都放在TestAppConfig.h文件中,在发版时,只需注释#import"TestAppConfig.h"
应用就切换到了发版状态。避免了发版时需逐个关闭测试相关的宏,不容易遗漏。
2、只用于开发时的文件:TestAppConfig.h
此文件中定义的宏全部是仅用于开发的,其内容如下:
#define TEST_APP 1 //线上环境 #define NET_ENVServerTypeOnline //测试环境 //#define NET_ENV ServerTypeTest #defineCURRENT_LOGIN_USER_NANE @"lilaping" #defineCURRENT_LOGIN_USER_PWD @"B.123j.123@" //在测试状态,自动登录 //#define AUTO_LOGIN1 //其它开发相关的宏…………
其中“TEST_APP”这个宏是必须的,用来在代码中判断当前是否为开发状态,这个宏定义的使用如下:
#ifdef TEST_APP //只在开发时运行的代码 #endif
3 、AppDelegate.m文件
在此文件中,如果是开发环境,则在应用启动后,首先显示界面,供用户选择连接测试服务器还是在线服务器。如果是发版,则按正常业务进行。
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary*)launchOptions { self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds]; [self.window makeKeyAndVisible]; #ifdef TEST_APP SetServerTypeVC*setServerTypeVC = [SetServerTypeVC new]; [setServerTypeVC showSetupWithTarget:self selector:@selector(showFirstVC)]; self.window.rootViewController = setServerTypeVC; #else [self showFirstVC]; #endif return YES; } -(void)showFirstVC{ LoginVC* vc = [[LoginVC alloc] init]; self.window.rootViewController = vc; [self.window makeKeyAndVisible]; }
4、SetServerTypeVC.m文件。
此文件为用户选择正式服务器还是测试服务器的界面。
5、UrlConfig.h文件
此文件用于配置服务器的地址以及其它公用的参数。服务端相关的公用参数应该尽量都放到此文件中集中管理。
具体内容如下,其它网络参数处理方式相同:
此函数的作用在于,如果是发版状态,则直接返回网络参数,如果是开发状态,则根据用户的选择,返回测试服务器的状态或者正式服务器的状态。
CG_INLINE NSString* getLoginUrl(){ #ifdef TEST_APP if(![SetServerTypeVC isSelectOnline]){ return @"http://www.test.com/cas/"; } #endif return @"https://www.online.com/cas/"; }
使用时:
NSString* logingURL = [NSString stringWithFormat:@"%@login",getLoginUrl()];
此处将取服务端相关参数由原来的宏定义改成了一个函数。原因在于,在开发环境时,连接那一个服务端是由用户在应用运行后选择的,不是在应用启动前就决定的。如果用宏解决的话,没有找到一个好的可以集中管理网络参数的办法。
包装为一个方法后,虽然多了一次调用,但是便于集中管理网络相关的参数,方便管理。
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- Trisquel GNU/Linux 8.0 发布,切换桌面环境
- 网络抓包调试代理工具大全、开发环境切换工具大全
- Egret场景切换管理类切换和单例使用方法
- Spring项目中使用两种方法动态切换数据源,多数据源切换
- Pear Admin Ant 1.1.0.Release 正式发布,新增布局切换、主题切换、工作空间
- MySQL -- 主从切换
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Go语言学习笔记
雨痕 / 电子工业出版社 / 2016-6 / 89
作为时下流行的一种系统编程语言,Go 简单易学,性能很好,且支持各类主流平台。已有大量项目采用 Go 编写,这其中就包括 Docker 等明星作品,其开发和执行效率早已被证明。本书经四年多逐步完善,内容覆盖了语言、运行时、性能优化、工具链等各层面知识。且内容经大量读者反馈和校对,没有明显的缺陷和错误。上卷细致解析了语言规范相关细节,便于读者深入理解语言相关功能的使用方法和注意事项。下卷则对运行时源......一起来看看 《Go语言学习笔记》 这本书的介绍吧!