iOS-一键切换内外网

作者: 船长_ | 来源:发表于2017-03-27 19:40 被阅读321次

开发时候,为了调试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 我的同事-伟

相关文章

网友评论

  • 云画的跃光:切换了内网之后再切换服务器?有没有自己根据是否是内网而自动切换服务器?
  • 没有梦想_何必远方:写的过于简单了。切换了接口以后,应该有清空相关缓存数据的操作
    船长_:@没有梦想_何必远方 :+1:

本文标题:iOS-一键切换内外网

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