iOS App设置中添加版本号

本文详细介绍如何在iOS应用中创建并配置应用设置页面,包括创建Settings.bundle,编辑Root.plist文件,以及如何根据不同目标配置不同设置文件的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

是否见过在iOS系统设置中往下拉找到自己的APP,然后点进去,可以看到APP中有很多的信息 比如 版权 企业介绍 版本号 等等。

接下来带你实现

1.创建 Settings.bundle

2.配置Root.plist文件

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
	<key>StringsTable</key>
	<string>Root</string>
	<key>PreferenceSpecifiers</key>
	<array>
		<dict>
			<key>Type</key>
			<string>PSTitleValueSpecifier</string>
			<key>Title</key>
			<string></string>
		</dict>
		<dict>
			<key>Type</key>
			<string>PSTitleValueSpecifier</string>
			<key>Title</key>
			<string>版本</string>
			<key>Key</key>
			<string>version</string>
			<key>DefaultValue</key>
			<string>8.3.4</string>
			<key>IsSecure</key>
			<false/>
			<key>KeyboardType</key>
			<string>Alphabet</string>
			<key>AutocapitalizationType</key>
			<string>None</string>
			<key>AutocorrectionType</key>
			<string>No</string>
		</dict>
	</array>
</dict>
</plist>

3.完成 效果图

项目名=测试新

版本号=1.0

缺点是版本号不能自动关联info.plist版本号 每次改版本号要改两个地方

#高级用法按Target区分使用不同的设置文件

1.配置增加

 

在Run Script里添加如下代码 路径需要根据项目配置处理

因为Settings.bundle这个文件的名字是不能改变的,因此我们只能改变路径来实现同名文件的存在并且不冲突,

将代码中 “这里替换为文件夹名字”修改为Settings.bundle文件的路径

比如 Settings/XiangMu

if [ ${CONFIGURATION} = "Release" ]; then
cp -r ${PROJECT_DIR}/${PROJECT_NAME}/这里替换为文件夹名字/Settings.bundle ${BUILT_PRODUCTS_DIR}/${PRODUCT_NAME}.app
fi

if [ ${CONFIGURATION} = "Debug" ]; then
cp -r ${PROJECT_DIR}/${PROJECT_NAME}/这里替换为文件夹名字/Settings.bundle ${BUILT_PRODUCTS_DIR}/${PRODUCT_NAME}.app
fi

项目中每个target都可以添加 按需配置就可以了 只有对应的Target配置了 在设置中才会显示

在APP启动的代理方法中调用加载设置文件方法 验证添加的Settings文件能否可以正确读取

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    [self loadSettingsBundle];
    return YES;
}

// 加载设置文件
- (void)loadSettingsBundle
{
    NSString *settingsBundle = [[NSBundle mainBundle] pathForResource:@"Settings" ofType:@"bundle"];
    if(!settingsBundle) 
    {
        DLog(@"加载Settings.bundle文件失败");
        return;
    }
    NSDictionary *settings = [NSDictionary dictionaryWithContentsOfFile:[settingsBundle stringByAppendingPathComponent:@"Root.plist"]];
    NSArray *preferences = [settings objectForKey:@"PreferenceSpecifiers"];
    NSMutableDictionary *defaultsToRegister = [[NSMutableDictionary alloc] initWithCapacity:[preferences count]];
    for(NSDictionary *prefSpecification in preferences) {
        NSString *key = [prefSpecification objectForKey:@"Key"];
        if(key) {
            [defaultsToRegister setObject:[prefSpecification objectForKey:@"DefaultValue"] forKey:key];
        }
    }
    [[NSUserDefaults standardUserDefaults] registerDefaults:defaultsToRegister];
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值