iOS的Settings.Bundle动态配置

前言

Settings.Bundle是App的配置项,通过配置Settings.Bundle可以修改App的运行环境、显示App的授权信息等等。

添加Settings.Bundle

默认项目中是没有Settings.Bundle,需要手动添加。添加完了之后在“设置”中找到“对应的App”即可看到Settings.Bundle的界面。

iOS的Settings.Bundle动态配置_第1张图片
添加Settings.Bundle.png

iOS的Settings.Bundle动态配置_第2张图片
Settings.Bundle默认的界面.png

再次运行程序时,程序设置页面不再有settings bundle的设置选项了,双击home键弹出多任务列表,从多任务列表中移除调试的app和系统设置app,再进入系统设置app就可以了

Settings.Bundle控件类型

iOS的Settings.Bundle动态配置_第3张图片
添加控件类型.png
  • TextField(文本框)
  • Title(标题)
  • ToggleSwitch(开关)
  • Slider(滑块)
  • MultiValue(多值)
  • Group(组)
  • Child Pane(子窗格)

Type:配置类型
Title:配置项显示的Title
Identifier: 配置项的标识符,用来获取配置项的配置内容
Default Value :配置项默认值

TextField(文本框):

Autocapitalization Style: 自动大写。有四个值: None(无)、Sentences(句子首字母大写)、Words(单词首字母大写)、All Characters(所有字母大写)。
Autocorrection Style: 自动纠正拼写,如果开启,你输入一个不存在的单词,系统会划红线提示。有三个值:Default(默认)、No Autocorrection(不自动纠正)、Autocorrection(自动纠正)。
Keyboard Type: 键盘样式。有五个值:Alphabet(字母表,默认)、Numbers and Punctuation(数字和标点符号)、Number Pad(数字面板)、URL(比Alphabet多出了.com等域名后缀)、Email Address(比Alphabet多出了@)。
Text Field is Secure: 是否为安全文本。如果设置为YES,则内容以圆点符号出现。

ToggleSwitch(开关):

Value for ON:当开关置为ON时,取得的字符串值。
Value for OFF:当开关置为OFF时,取得的字符串值。

Slider(滑块)

Minimum Value: 最小值,Number类型。
Maximum Value: 最大值,Number类型。
Min Value Image Filename: 最小值那一端的图片。
Max Value Image Filename:最大值那一端的图片。
(图片大小必须为21*21,并且要放在Settings.bundle包内)

MultiValue(多值)

Values:值的集合。
Titles: 标题的集合,与值一一对应。

Child Pane

Filename:子plist的文件名。

    //获取SettingsBundle信息
    NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
    [userDefaults removeObjectForKey:@"Identifier值"];
    // 修改值
    [userDefaults setValue:@"abc" forKey:@"Identifier值"];

在用户实际修改了setting里的数据之前 , 这时配置数据并没有真正的写入到app的NSUserDefaults中, 此时用NSUserDefaults获取的值都是空的。对此, 可以在- (void)applicationDidBecomeActive:(UIApplication *)application方法中获取信息。

Settings.Bundle动态配置

1、创建目录

在工程目录下创建文件夹Setting以及子文件夹Release和Debug(当然,也可以根据环境来创建,比如:Dev、Test、hotfix等), 并添加到工程中。


iOS的Settings.Bundle动态配置_第4张图片
创建目录.png

2、创建配置

点击工程文件, 选中info, 在Configurations下点击+, 复制一个Configuration。


iOS的Settings.Bundle动态配置_第5张图片
创建配置.png

3、添加Setting.bundle

新建Setting.Bundle, 但不要添加到当前Target中, 并分别保存到Release和Debug
文件夹下:


iOS的Settings.Bundle动态配置_第6张图片
添加Settingbundle.png

4、添加拷贝脚本

不添加到Target的原因就是 , 我们要用脚本把Setting.Bundle拷贝到ipa中。选中"Target", 切换到Build Phases, 点击+, 选中New Run Script Phase。


iOS的Settings.Bundle动态配置_第7张图片
添加拷贝脚本.png

添加脚本:

if [ ${CONFIGURATION} = "Debug" ]; then
cp -r ${PROJECT_DIR}/${PROJECT_NAME}/Setting/Release/Settings.bundle ${BUILT_PRODUCTS_DIR}/${PRODUCT_NAME}.app
fi

if [ ${CONFIGURATION} = "Release" ]; then
cp -r ${PROJECT_DIR}/${PROJECT_NAME}/Setting/Release/Settings.bundle ${BUILT_PRODUCTS_DIR}/${PRODUCT_NAME}.app
fi

你可能感兴趣的:(iOS的Settings.Bundle动态配置)