如上圖所示手動(dòng)切換環(huán)境:
1、先實(shí)現(xiàn)一個(gè)切換環(huán)境的類
#import ?<Foundation/Foundation.h>
@interface ChangeEnvironment : NSObject
+ (instancetype)sharedInstance;
//切換環(huán)境
- (void)changeEnvironment;
//獲得當(dāng)前環(huán)境
- (NSString *)currentEnvironment;
@end
#import "ChangeEnvironment.h"
#import ?<MGRequest.h>
#define kUrlKey @"urlKey"
//內(nèi)網(wǎng)環(huán)境
static NSString *const devConfig = @"0";
//外網(wǎng)環(huán)境
static NSString *const prodConfig = @"1";
@implementation ChangeEnvironment
+ (instancetype)sharedInstance {
? ? staticChangeEnvironment * sharedInstance =nil;
? ? staticdispatch_once_t onceToken;
? ? dispatch_once(&onceToken, ^{
? ? ? ? sharedInstance = [[ChangeEnvironment alloc] init];
? ? });
? ? returnsharedInstance;
}
//切換環(huán)境
- (void)changeEnvironment {
? ? NSString *title=@"切換環(huán)境";
? ? NSString *subTitle=@"重啟后生效, 放棄切換環(huán)境請(qǐng)點(diǎn)擊取消";
? ? 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:@"內(nèi)網(wǎng)環(huán)境"style:UIAlertActionStyleDefault handler:^(UIAlertAction *_Nonnullaction) {
? ? ? ? //內(nèi)網(wǎng)環(huán)境
? ? ? ? [[NSUserDefaults standardUserDefaults] setObject:devConfig forKey:kUrlKey];
? ? ? ? //重置請(qǐng)求的基url
? ? ? ? [selfresetRequestBaseUrl];
? ? }]];
? ? [alert addAction:[UIAlertAction actionWithTitle:@"外網(wǎng)環(huán)境"style:UIAlertActionStyleDestructive handler:^(UIAlertAction *_Nonnullaction) {
? ? ? ? //外網(wǎng)環(huán)境
? ? ? ? [[NSUserDefaults standardUserDefaults] setObject:prodConfig forKey:kUrlKey];
? ? ? ? //重置請(qǐng)求的基url
? ? ? ? [selfresetRequestBaseUrl];
? ? }]];
? ? [alert addAction:[UIAlertAction actionWithTitle:@"取消"style:UIAlertActionStyleCancel handler:^(UIAlertAction *_Nonnullaction) {
? ? }]];
? ? NSLog(@"currentEnvironment = %@", currentEnvironment);
? ? //當(dāng)前選擇的視圖控制器需要自己賦值伦忠,比如tabbar的didSelectViewController里
? ? [[UIApplication sharedApplication].keyWindow.rootViewController presentViewController:alert animated:YEScompletion:nil];
}
//獲得當(dāng)前環(huán)境
- (NSString *)currentEnvironment {
? ? //默認(rèn)測(cè)試環(huán)境
? ? NSString *currentEnvironment = devConfig;
? ? if([[NSUserDefaults standardUserDefaults] objectForKey:kUrlKey]) {
? ? ? ? currentEnvironment=[[NSUserDefaults standardUserDefaults] objectForKey:kUrlKey];
? ? }
? ? returncurrentEnvironment;
}
- (void)resetRequestBaseUrl {
#pragma mark- 切換內(nèi)網(wǎng)環(huán)境和外網(wǎng)環(huán)境
? ? if([[ChangeEnvironment sharedInstance].currentEnvironment isEqualToString:@"0"]) {
? ? ? ? NSLog(@"內(nèi)網(wǎng)環(huán)境。促绵。。嘴纺。败晴。。栽渴。");
? ? ? ? //測(cè)試環(huán)境
? ? ? ? [MGRequest setDefaultUrl:@"內(nèi)網(wǎng)環(huán)境地址"];
? ? ? ? [[NSUserDefaults standardUserDefaults] setObject:devConfig forKey:kUrlKey];
? ? ? ? [[NSUserDefaults standardUserDefaults] synchronize];
? ? }elseif([[ChangeEnvironment sharedInstance].currentEnvironment isEqualToString:@"1"]) {
? ? ? ? NSLog(@"外網(wǎng)環(huán)境尖坤。。闲擦。慢味。。墅冷。纯路。");
? ? ? ? //外網(wǎng)環(huán)境
? ? ? ? [MGRequest setDefaultUrl:@"外網(wǎng)環(huán)境地址"];
? ? ? ? [[NSUserDefaults standardUserDefaults] setObject:prodConfig forKey:kUrlKey];
? ? ? ? [[NSUserDefaults standardUserDefaults] synchronize];
? ? }
}
@end
2、調(diào)用切換環(huán)境的類即可: