iOS - 动态改变APP的运行环境(测试环境、正式环境)

这段时间一直忙着版本迭代前的测试和bug修复,突然有个朋友问我怎么能方便快速的在APP里面直接切换运行的环境。因为每次给到测试人员打两个包再分别安装真的很麻烦,除去麻烦不说,要同时在一个设备中安装测试版和正式版两个软件的话同一个bundleID还不行,你得去修改,改完以后,oops,推送不能用了吧😭,分享啥的不能用了吧,凡是涉及到bundleID相关的服务都挂了吧,那尼玛还测个毛线。。。
据说小姐姐上网百度了还有很多种很高大上的办法,可是一看步骤,小姐姐怂了。太复杂了,臣妾做不到啊。要知道,小姐姐可是出了名的会偷懒啊,那咋整,就慢慢看吧。
首先在pch中写上这段代码,别问我为什么,具体用到的时候就知道省力气了。

#define BASEURL [[NSUserDefaults standardUserDefaults] objectForKey:@"BASEURL"] ? [[NSUserDefaults standardUserDefaults] objectForKey:@"BASEURL"] : nil

接下来在APPDelegate的

  • (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions方法中写入
#if DEBUG
    [[NSUserDefaults standardUserDefaults] setValue:@"https://***.net" forKey:@"BASEURL"];
#else
    [[NSUserDefaults standardUserDefaults] setValue:@"https://***.com" forKey:@"BASEURL"];
#endif

然后在你需要切换环境的页面自己写一个button,小姐姐写的是简陋了一点,不过胜在好使。注意一定不能让正式环境的APP也有这个按钮啊,要不然闯祸了小姐姐一定不会负责的。

#if DEBUG
    
    UIButton *button = [[UIButton alloc] initWithFrame:CGRectMake(0, 20, 100, 50)];
    button.backgroundColor = [UIColor redColor];
    [button setTitle:@"测试环境" forState:UIControlStateNormal];
    [button addTarget:self action:@selector(changeEnviorment:) forControlEvents:UIControlEventTouchUpInside];
    [self.view addSubview:button];
    
#else
    
#endif

最后就是方法的实现了,别问我为什么要把你存在本地跟一切登录状态相关的状态清空,小姐姐拒绝回答。

NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
    // 清空token信息
    [userDefaults setObject:nil  forKey:@"Token"];
    [[NSNotificationCenter defaultCenter] 
    // 购物车角标清除
postNotificationName:BuyCountDidChangeNotification object:nil];
   
    changeBtn.selected = !changeBtn.selected;
    
    if (changeBtn.selected) {
        // 选中正式环境
        changeBtn.backgroundColor = [UIColor greenColor];
        [changeBtn setTitle:@"正式环境" forState:UIControlStateNormal];
        [[NSUserDefaults standardUserDefaults] setValue:@"https://***.com" forKey:@"BASEURL"];
        
    }else {

        changeBtn.backgroundColor = [UIColor redColor];
        [changeBtn setTitle:@"测试环境" forState:UIControlStateNormal];
        [[NSUserDefaults standardUserDefaults] setValue:@"https://***.net" forKey:@"BASEURL"];
    }

对了,最后提醒下,只需要刷新下界面,你会发现所有的数据都是对应环境的数据了。恩。如果各位小哥哥们有什么更便捷的方法,还请不吝赐教。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,083评论 19 139
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,926评论 25 709
  • Spring Boot 参考指南 介绍 转载自:https://www.gitbook.com/book/qbgb...
    毛宇鹏阅读 46,989评论 6 342
  • 这几天学校要举行建校七十周年的晚会。我被叫去表演。 很不凑巧的是,这些日子太冷了,我感冒了,声音又哑了。 晚上放学...
    八夭二阅读 226评论 0 0
  • 一周总结 1. 纳什均衡:在信息不对称时,做最坏的打算,以求保存自己 2. 囚徒困境:选择对自己最有利的,避免风险...
    张磊沙阅读 258评论 0 0