iOS 应用内切换环境(测试、预发、正式)

版本提测阶段每次都需要打各种环境的安装包,打一个包需要5~10分钟,更何况我们有测试、预发、正式三个环境,光打包就要浪费半个小时,于是就想在实现应用内环境切换功能让测试人员自助切换

常规环境切换,需要我们手动修改HOST_TYPE然后打包,代码如下

#define HOST_TYPE 0  //0开发  1灰度  2正式

#if HOST_TYPE == 0
#define kHOSTURL @"测试地址"
#elif HOST_TYPE == 1
#define kHOSTURL @"预发地址"
#elif HOST_TYPE == 2
#define kHOSTURL @"正式地址"
#endif

需求说明

  • 可以随意切换环境状态
  • 支持自定义环境地址
  • 支持关闭切换环境功能
  • 恢复默认设置

实现核心

WTAPIManager.h

#import <Foundation/Foundation.h>

typedef NS_ENUM(NSInteger, WTHostType) {
    WTHostTypeDev = 0, // 开发
    WTHostTypeGrayscale, // 灰度
    WTHostTypeRelease, // 正式
    IRCHostTypeDIY // 自定义
};

#define HOST_TYPE 0  //0开发  1灰度  2正式

#define HOSTURLSTRING [WTAPIManager hostUrl]

NS_ASSUME_NONNULL_BEGIN

@interface WTAPIManager : NSObject

// 环境地址
+ (NSString *)hostUrl;

// 环境地址类型
+ (void)saveHostType:(WTHostType)type;

// 环境地址类型
+ (WTHostType)hostType;

// 保存自定义地址
+ (void)saveDiyHostUrl:(NSString *)hostUrl;

// 获取自定义地址
+ (NSString *)diyHostUrl;

// 自定义模式开关(开启定义后,切换请求地址才能使用)
+ (void)saveEnabled:(BOOL)on;

// 是否开启自定义(开启定义后,切换请求地址才能使用)
+ (BOOL)isEnabled;

// 恢复默认设置(关闭自定义功能)
+ (void)resetData;

@end

NS_ASSUME_NONNULL_END

WTAPIManager.m

#import "WTAPIManager.h"

static NSString* const kHostTypeKey = @"hostTypeKey";
static NSString* const kDiyUrlKey = @"diyUrlKey";
static NSString* const kEnabled = @"kEnabled";

@implementation WTAPIManager

+ (NSString *)hostUrl {
    NSInteger type = [self hostType];
    if (type == WTHostTypeDev) {
        return @"测试地址";
    } else if (type == WTHostTypeGrayscale) {
        return @"预发地址";
    } else if (type == WTHostTypeRelease) {
        return @"正式地址";
    } else if (type == IRCHostTypeDIY) {
        return [self diyHostUrl];
    }
    return @"";
}

+ (void)saveHostType:(WTHostType)type {
    [[NSUserDefaults standardUserDefaults] setInteger:type forKey:kHostTypeKey];
    [[NSUserDefaults standardUserDefaults] synchronize];
}

+ (WTHostType)hostType {
   // 是否开启自定义切换
   if ([self isEnabled]) {
       return [[NSUserDefaults standardUserDefaults] integerForKey:kHostTypeKey];
   }
   return HOST_TYPE;
}

// 保存自定义地址
+ (void)saveDiyHostUrl:(NSString *)hostUrl {
    [[NSUserDefaults standardUserDefaults] setObject:hostUrl forKey:kDiyUrlKey];
    [[NSUserDefaults standardUserDefaults] synchronize];
}

// 获取自定义地址
+ (NSString *)diyHostUrl {
    return [[NSUserDefaults standardUserDefaults] objectForKey:kDiyUrlKey];
}

// 恢复默认设置
+ (void)resetData {
    [[NSUserDefaults standardUserDefaults] removeObjectForKey:kEnabled];
    [[NSUserDefaults standardUserDefaults] removeObjectForKey:kHostTypeKey];
    [[NSUserDefaults standardUserDefaults] removeObjectForKey:kDiyUrlKey];
}

// 自定义模式开关
+ (void)saveEnabled:(BOOL)on {
    [[NSUserDefaults standardUserDefaults] setBool:on forKey:kEnabled];
    [[NSUserDefaults standardUserDefaults] synchronize];
}

// 是否开启自定义
+ (BOOL)isEnabled {
    return [[NSUserDefaults standardUserDefaults] boolForKey:kEnabled];
}
@end


如何使用

// 打开切换环境开发
[WTAPIManager saveEnabled:YES];
    
// 切换为正式环境
[WTAPIManager saveHostType:WTHostTypeRelease];

// 获取环境地址
NSLog(@"当前环境地址:%@", HOSTURLSTRING);

// 切换为自定义环境地址
[WTAPIManager saveHostType:IRCHostTypeDIY];

// 设置自定义环境地址
[WTAPIManager saveDiyHostUrl:@"自定义url"];

// 获取环境地址
NSLog(@"当前环境地址:%@", HOSTURLSTRING);

// 恢复默认设置
[WTAPIManager resetData];

// 关闭环境,保留自定义参数
// [WTAPIManager saveEnabled:NO];

// 获取环境地址
NSLog(@"当前环境地址:%@", HOSTURLSTRING);

我的切换环境功能没有直接暴露出来,测试人员可以通过扫码进入我提前写好的页面切换环境,界面和扫码功能就不提供了自行补全即可

上线后关闭切换环境功能

为防止用户使用此功能,只有打包时HOST_TYPE为开发环境,才弹出切换环境界面,上线时我们会将HOST_TYPE设置为发布环境

if (HOST_TYPE == 0) {
   // 去处理切换环境代码
   [WTAPIManager saveHostType:WTHostTypeRelease];
}

总结

打一个测试包,就可以切换三种环境就是舒爽省事,再也不用担心下班前测试阿姨给我要正式环境安装包了(哇哈哈)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 莫里斯・布朗肖 真正的写作是由一种焦虑感推动的写作, 是一种不得不写作而又无法停留于已经写下的文字痕迹。 思维的语...
    野体文心阅读 787评论 6 20
  • “弟弟怎么样?老大爷应该没什么问题吧?能自己走着上车……”“千万别出什么差错!”妈妈走的早,虽然我帮不上弟弟什么忙...
    快乐欣欣_a96c阅读 317评论 1 4
  • 子明小蜗阅读 151评论 0 0
  • 高考分数下来的那天,我一直等到晚上十一二点,虽然我设置了分数提醒,虽然消息会自动发送过来,可我还是睡不着,惴惴不安...
    抹茶懒猫阅读 396评论 0 3

友情链接更多精彩内容