6.2 KiB
6.2 KiB
🌐 域名配置指南
📍 域名配置位置
域名配置主要在以下文件中:
lib/app/common/app_config.dart
├── KRDomain 类 - 域名管理
│ ├── kr_baseDomains - 主域名列表
│ ├── kr_currentDomain - 当前域名
│ ├── kr_backupDomainUrls - 备用域名获取地址
│ └── kr_localBackupDomains - 本地备用域名
└── AppConfig 类 - 应用配置
└── baseUrl - 动态生成的API地址
🔧 域名配置详解
1. 主域名列表配置
// 文件: lib/app/common/app_config.dart
class KRDomain {
// 主域名列表 - 应用会按顺序尝试这些域名
static List<String> kr_baseDomains = [
"apicn.bearvpn.top", // 主域名1
"apibear.nsdsox.com" // 主域名2
];
}
修改方法:
- 将
"apicn.bearvpn.top"替换为您的API服务器域名 - 将
"apibear.nsdsox.com"替换为您的备用API服务器域名 - 可以添加更多域名,应用会按顺序尝试
2. 当前域名配置
// 当前使用的域名
static String kr_currentDomain = "apicn.bearvpn.top";
修改方法:
- 将
"apicn.bearvpn.top"替换为您希望应用启动时使用的默认域名 - 通常设置为
kr_baseDomains列表中的第一个域名
3. 备用域名获取地址
// 备用域名获取地址列表
static List<String> kr_backupDomainUrls = [
"https://bear-1347601445.cos.ap-guangzhou.myqcloud.com/bear.txt",
"https://getbr.oss-cn-shanghai.aliyuncs.com/bear.txt",
"https://gitee.com/karelink/getbr/raw/master/README.en.md",
"https://configfortrans.oss-cn-guangzhou.aliyuncs.com/bear/bear.txt",
];
修改方法:
- 将这些URL替换为您自己的备用域名获取地址
- 这些地址应该返回包含可用域名列表的JSON数据
- 格式示例:
["api1.yourcompany.com", "api2.yourcompany.com"]
4. 本地备用域名
// 本地备用域名列表(当服务器获取的域名都不可用时使用)
static List<String> kr_localBackupDomains = [
"api.omntech.com",
"api6.omntech.com",
"api7.omntech.com",
"apicn.bearvpn.top",
"apibear.nsdsox.com",
];
修改方法:
- 将这些域名替换为您自己的备用域名
- 这些是最后的兜底方案,当所有其他方式都失败时使用
🚀 域名切换机制
自动域名切换流程
- 应用启动时:使用
kr_currentDomain作为默认域名 - 主域名检测:按顺序检测
kr_baseDomains中的域名 - 备用域名获取:如果主域名都不可用,从
kr_backupDomainUrls获取新域名 - 本地备用:如果备用域名获取失败,使用
kr_localBackupDomains - 兜底方案:如果所有域名都失败,使用硬编码的兜底域名
域名检测逻辑
// 域名可用性检测
static Future<bool> kr_checkDomainAvailability(String domain) async {
// 发送HTTPS请求检测域名是否可用
// 只要能够连接就认为域名可用(包括404、403等状态码)
}
📝 配置示例
示例1:使用自己的API服务器
class KRDomain {
// 主域名列表
static List<String> kr_baseDomains = [
"api.yourcompany.com", // 主API服务器
"backup-api.yourcompany.com" // 备用API服务器
];
// 当前使用的域名
static String kr_currentDomain = "api.yourcompany.com";
// 备用域名获取地址
static List<String> kr_backupDomainUrls = [
"https://your-cdn.com/domains.json",
"https://backup-server.com/api/domains"
];
// 本地备用域名
static List<String> kr_localBackupDomains = [
"api.yourcompany.com",
"backup-api.yourcompany.com",
"emergency-api.yourcompany.com"
];
}
示例2:使用多个备用服务器
class KRDomain {
// 主域名列表
static List<String> kr_baseDomains = [
"api1.yourcompany.com",
"api2.yourcompany.com",
"api3.yourcompany.com"
];
// 当前使用的域名
static String kr_currentDomain = "api1.yourcompany.com";
// 备用域名获取地址
static List<String> kr_backupDomainUrls = [
"https://cdn1.yourcompany.com/domains.txt",
"https://cdn2.yourcompany.com/domains.txt",
"https://github.com/yourcompany/domains/raw/main/domains.json"
];
// 本地备用域名
static List<String> kr_localBackupDomains = [
"api1.yourcompany.com",
"api2.yourcompany.com",
"api3.yourcompany.com",
"fallback.yourcompany.com"
];
}
🔍 调试域名配置
查看当前域名状态
// 在应用中使用以下代码查看域名状态
print('当前域名: ${KRDomain.kr_currentDomain}');
print('主域名列表: ${KRDomain.kr_baseDomains}');
print('API地址: ${AppConfig.getInstance().baseUrl}');
手动触发域名切换
// 手动触发域名切换
bool success = await KRDomain.kr_triggerFastSwitch();
if (success) {
print('域名切换成功: ${KRDomain.kr_currentDomain}');
} else {
print('域名切换失败');
}
测试域名可用性
// 测试特定域名的可用性
bool isAvailable = await KRDomain.kr_checkDomainAvailability("api.yourcompany.com");
print('域名可用性: $isAvailable');
⚠️ 注意事项
- 域名格式:确保域名格式正确,不要包含协议前缀(如
https://) - 备用地址:备用域名获取地址应该返回有效的JSON格式数据
- 测试:修改域名后,建议在测试环境中验证配置是否正确
- 缓存:域名检测结果会被缓存,修改后可能需要重启应用
- 网络:确保所有配置的域名都能正常访问
🆘 常见问题
Q: 如何添加新的API域名?
A: 在 kr_baseDomains 列表中添加新的域名即可。
Q: 如何修改备用域名获取地址?
A: 修改 kr_backupDomainUrls 列表,确保地址返回有效的域名列表JSON。
Q: 域名切换不生效怎么办?
A: 检查域名格式是否正确,确保域名可以正常访问,必要时重启应用。
Q: 如何禁用自动域名切换?
A: 将 kr_baseDomains 设置为只包含一个域名,并确保该域名始终可用。
💡 提示: 修改域名配置后,建议运行 flutter clean && flutter pub get 重新构建项目。