美文网首页
手动切换测试环境

手动切换测试环境

作者: 异乡人_4f2a | 来源:发表于2021-04-26 19:24 被阅读0次

    如上图所示手动切换环境:

    1、先实现一个切换环境的类

    #import  <Foundation/Foundation.h>

    @interface ChangeEnvironment : NSObject

    + (instancetype)sharedInstance;

    //切换环境

    - (void)changeEnvironment;

    //获得当前环境

    - (NSString *)currentEnvironment;

    @end

    #import "ChangeEnvironment.h"

    #import  <MGRequest.h>

    #define kUrlKey @"urlKey"

    //内网环境

    static NSString *const devConfig = @"0";

    //外网环境

    static NSString *const prodConfig = @"1";

    @implementation ChangeEnvironment

    + (instancetype)sharedInstance {

        staticChangeEnvironment * sharedInstance =nil;

        staticdispatch_once_t onceToken;

        dispatch_once(&onceToken, ^{

            sharedInstance = [[ChangeEnvironment alloc] init];

        });

        returnsharedInstance;

    }

    //切换环境

    - (void)changeEnvironment {

        NSString *title=@"切换环境";

        NSString *subTitle=@"重启后生效, 放弃切换环境请点击取消";

        UIAlertController *alert = [UIAlertController alertControllerWithTitle:title message:subTitle preferredStyle:UIAlertControllerStyleActionSheet];

        //修改title

        NSMutableAttributedString *alertControllerStr = [[NSMutableAttributedString alloc] initWithString:title];

        [alertControllerStr addAttribute:NSFontAttributeName value:[UIFont systemFontOfSize:20] range:NSMakeRange(0, alertControllerStr.length)];

        [alert setValue:alertControllerStr forKey:@"attributedTitle"];

        //修改message

        NSMutableAttributedString *alertControllerMessageStr = [[NSMutableAttributedString alloc] initWithString:subTitle];

        [alertControllerMessageStr addAttribute:NSFontAttributeName value:[UIFont systemFontOfSize:16] range:NSMakeRange(0, alertControllerMessageStr.length)];

        [alert setValue:alertControllerMessageStr forKey:@"attributedMessage"];

        NSString *currentEnvironment =@"";

        [alert addAction:[UIAlertAction actionWithTitle:@"内网环境"style:UIAlertActionStyleDefault handler:^(UIAlertAction *_Nonnullaction) {

            //内网环境

            [[NSUserDefaults standardUserDefaults] setObject:devConfig forKey:kUrlKey];

            //重置请求的基url

            [selfresetRequestBaseUrl];

        }]];

        [alert addAction:[UIAlertAction actionWithTitle:@"外网环境"style:UIAlertActionStyleDestructive handler:^(UIAlertAction *_Nonnullaction) {

            //外网环境

            [[NSUserDefaults standardUserDefaults] setObject:prodConfig forKey:kUrlKey];

            //重置请求的基url

            [selfresetRequestBaseUrl];

        }]];

        [alert addAction:[UIAlertAction actionWithTitle:@"取消"style:UIAlertActionStyleCancel handler:^(UIAlertAction *_Nonnullaction) {

        }]];

        NSLog(@"currentEnvironment = %@", currentEnvironment);

        //当前选择的视图控制器需要自己赋值,比如tabbar的didSelectViewController里

        [[UIApplication sharedApplication].keyWindow.rootViewController presentViewController:alert animated:YEScompletion:nil];

    }

    //获得当前环境

    - (NSString *)currentEnvironment {

        //默认测试环境

        NSString *currentEnvironment = devConfig;

        if([[NSUserDefaults standardUserDefaults] objectForKey:kUrlKey]) {

            currentEnvironment=[[NSUserDefaults standardUserDefaults] objectForKey:kUrlKey];

        }

        returncurrentEnvironment;

    }

    - (void)resetRequestBaseUrl {

    #pragma mark- 切换内网环境和外网环境

        if([[ChangeEnvironment sharedInstance].currentEnvironment isEqualToString:@"0"]) {

            NSLog(@"内网环境。。。。。。。");

            //测试环境

            [MGRequest setDefaultUrl:@"内网环境地址"];

            [[NSUserDefaults standardUserDefaults] setObject:devConfig forKey:kUrlKey];

            [[NSUserDefaults standardUserDefaults] synchronize];

        }elseif([[ChangeEnvironment sharedInstance].currentEnvironment isEqualToString:@"1"]) {

            NSLog(@"外网环境。。。。。。。");

            //外网环境

            [MGRequest setDefaultUrl:@"外网环境地址"];

            [[NSUserDefaults standardUserDefaults] setObject:prodConfig forKey:kUrlKey];

            [[NSUserDefaults standardUserDefaults] synchronize];

        }

    }

    @end

    2、调用切换环境的类即可:

    相关文章

      网友评论

          本文标题:手动切换测试环境

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