iOS-一键切换内外网

开发时候,为了调试bug或者查看正式服数据,经常在内网和外网之间,为了方便测试,添加一个按钮,一键切换内外网,如图所示.


demo.gif

由于比较简单,直接上代码
MFChangeServer.h

@interface MFChangeServer : NSObject

+ (void)change;// 切换内外网,自由debug 模式有效
+ (NSString *)commonUrl;// 切换内外网,自由debug 模式有效
+ (NSString *)baseUrl;// 切换内外网,自由debug 模式有效
+ (NSString *)shareUrl;// 切换内外网,自由debug 模式有效

@end

MFChangeServer.m

#import "MFChangeServer.h"
static int index_MF_NODup = 0;


@implementation MFChangeServer

+ (void)change{
    index_MF_NODup++;
    index_MF_NODup = index_MF_NODup%2;
}

+ (NSString *)baseUrl{
    static NSArray *array = nil;
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
        array = @[@"https://正式服地址",
                  @"https://测试服地址"
                  ];
    });
    return array[index_MF_NODup];
}
+ (NSString *)commonUrl{
    static NSArray *array = nil;
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
        array = @[@"https://正式服地址",
                  @"https://测试服地址"
                  ];
    });
    return array[index_MF_NODup];
}

+ (NSString *)shareUrl{
    static NSArray *array = nil;
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
        array = @[@"https://正式服地址",
                  @"https://测试服地址"
                  ];
    });
    return array[index_MF_NODup];
}
@end

用法

在定义根路径的地方

#define kCommonUrl [MFChangeServer commonUrl] 
#define kBaseUrl [MFChangeServer baseUrl]   
#define kShareBaseUrl [MFChangeServer shareUrl]

在.pch文件添加头文件

#ifdef __OBJC__
#import "MFChangeServer.h"
#endif

需要注意的是此处不能用懒加载

attention.png

设置界面右上角添加按钮

#ifdef DEBUG
    self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc]initWithTitle:@"切换" style:UIBarButtonItemStylePlain target:self action:@selector(changeServer)];
#endif
- (void)changeServer{
    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"切换服务器" message:nil delegate:self cancelButtonTitle:@"取消" otherButtonTitles:@"确定", nil];
    alert.delegate = self;
    [alert show];
}
- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex{
    if (buttonIndex != alertView.cancelButtonIndex) {
        [MFChangeServer change];
    }
}

copyright by 我的同事-伟

你可能感兴趣的:(iOS-一键切换内外网)