美文网首页iOS 基本开发快速入门iOS程序员
iOS - 动态改变APP的运行环境(测试环境、正式环境)

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

作者: 灵儿菇凉 | 来源:发表于2017-07-28 16:53 被阅读885次

    这段时间一直忙着版本迭代前的测试和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"];
        }
    

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

    相关文章

      网友评论

      本文标题:iOS - 动态改变APP的运行环境(测试环境、正式环境)

      本文链接:https://www.haomeiwen.com/subject/jakflxtx.html