iOS 基本开发快速入门iOS程序员

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

2017-07-28  本文已影响885人  灵儿菇凉

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

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

接下来在APPDelegate的

#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"];
    }

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

上一篇下一篇

猜你喜欢

热点阅读