iOS 实现动态切换网络请求Host 域名

4 篇文章 0 订阅
这篇博客介绍了如何在iOS应用中通过创建一个网络请求Host管理工具类,结合枚举配置和本地缓存,实现在开发过程中方便地切换Release、Test和Beta服务器域名。通过监听通知来实时更新Host,使得App测试更加便捷。
摘要由CSDN通过智能技术生成

背景

今天在群里发现有个同学在问一个问题,如图:
在这里插入图片描述
这位同学是想知道如何快速又方便的可以随时切换Release 与 Test服务器域名,方便APP的测试。正好,我们也有相同的场景。那么我们是怎么做的呢?

实现

流程图

1、创建一个网络请求Host管理的工具类,我们暂且叫它CNChangeHostManager。并且定义Host属性与初始化方法。

@interface CNChangeHostManager : NSObject
@property (nonatomic, copy) NSString *kCNPassPortHost;
+(instancetype)sharedChangeHostObject;
@end

2、定义枚举配置,来区分Host环境

//PassPort
typedef NS_ENUM(NSUInteger, CNPassPortHostType) {
    CNPassPortHostTypeRelease,//正式
    CNPassPortHostTypeTest,//测试
    CNPassPortHostTypeBeta,//预发布
};

3、实现本地缓存配置与读取配置的方法

//保存配置到沙盒
+ (void)savePassPortHostType:(CNPassPortHostType)passPortHostType
{
    NSUserDefaults *userdefault = [NSUserDefaults standardUserDefaults];
    [userdefault setInteger:passPortHostType forKey:@"passPortHostType"];
    [userdefault synchronize];
}

//从沙盒中读取配置
+ (CNPassPortHostType)passPortHostType
{
    return [[NSUserDefaults standardUserDefaults] integerForKey:@"passPortHostType"];
}

4、设置单例初始化方法,并设置Host默认值

+ (instancetype)sharedChangeHostObject{
    
    static dispatch_once_t onceToken;
    
    dispatch_once(&onceToken, ^{
        
        changeURLObject = [[super allocWithZone:NULL] init];
        
        [changeURLObject defaultHost];
        
    });
    
    return changeURLObject;
    
}

-(void)defaultHost
{
    [self passPortHostWithPassPortHostType:[CNChangeHostManager passPortHostType]];
}

5、注册通知监听,用于接收改变Host的通知

//注册通知监听,用于接收改变Host
- (instancetype)init{
    if (self = [super init]) {
        //注册通知监听,用于接收改变Host
        [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(changePassPortHost:) name:ChangePassPortHostNotification object:nil];
    }
    return self;
}

6、实现监听通知方法,读取本地缓存的配置。

- (void)changePassPortHost:(NSNotification *)notification
{
    [self passPortHostWithPassPortHostType:[CNChangeHostManager passPortHostType]];
}

-(void)passPortHostWithPassPortHostType:(CNPassPortHostType)passPortHostType
{
    switch (passPortHostType) {
        case CNPassPortHostTypeRelease:
            self.kCNPassPortHost = @"https://passport.com";
            break;
            
        case CNPassPortHostTypeTest:
            self.kCNPassPortHost = @"https://test-passport.com";
            break;
            
        case CNPassPortHostTypeBeta:
            self.kCNPassPortHost = @"https://pre-passport.com";
            break;
            
        default:
            self.kCNPassPortHost = @"https://passport.com";
            break;
    }
}

7、设置中修改Host 方法

switch (index) {
    case 0:
        [CNChangeHostManager savePassPortHostType:(CNPassPortHostTypeRelease)];
        break;
    case 1:
        [CNChangeHostManager savePassPortHostType:(CNPassPortHostTypeTest)];
        break;
    case 2:
        [CNChangeHostManager savePassPortHostType:(CNPassPortHostTypeBeta)];
        break;
        
    default:
        break;
}
[[NSNotificationCenter defaultCenter] postNotificationName:ChangePassPortHostNotification object:nil];

8、Host 读取方式

[NSString stringWithFormat:@"/login",[CNChangeHostManager sharedChangeHostObject].kCNPassPortHost]

这样就可以随时切换Host环境配置了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

假装自己很用心

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值